Move projects to src; add Neutrino secret

This commit is contained in:
Holden
2026-06-19 22:52:38 -05:00
parent 2cfc5e7369
commit 95751904fa
90 changed files with 32 additions and 10 deletions

View File

@@ -0,0 +1,86 @@
using RecNet.Domain.Common;
using RecNet.Domain.Exceptions;
namespace RecNet.Domain.Profiles;
public class Profile
{
public const int MinNameLength = 3;
public const int MaxNameLength = 32;
private Profile(
string name,
PlatformType platform,
string platformId)
{
SetName(name);
Platform = platform;
PlatformId = RequireValue(platformId, nameof(platformId));
CreatedAt = DateTimeOffset.UtcNow;
}
public Guid ProfileId { get; } = Guid.NewGuid();
public string Name { get; private set; } = string.Empty;
public PlatformType Platform { get; private set; }
public string PlatformId { get; private set; }
public List<string> DeviceIds { get; private set; } = [];
// EZ
public bool IsBanned { get; private set; }
public bool IsModerator { get; private set; }
public DateTimeOffset CreatedAt { get; private set; }
public static Profile Create(
string name,
PlatformType platform,
string platformId)
=> new(name, platform, platformId);
public void SetName(string name)
{
var requiredName = RequireValue(name, nameof(name));
if (requiredName.Length is < MinNameLength or > MaxNameLength)
throw new DomainException($"Username must be between {MinNameLength} and {MaxNameLength} characters long.");
Name = requiredName;
}
public void AddDeviceId(string deviceId)
{
deviceId = RequireValue(deviceId, nameof(deviceId));
if (DeviceIds.Contains(deviceId))
return;
DeviceIds.Add(deviceId);
}
public void RecordSuccessfulLogin(string deviceId, string? platformName)
{
if (!string.IsNullOrWhiteSpace(platformName) && Name != platformName)
SetName(platformName);
AddDeviceId(deviceId);
}
public void Ban()
=> IsBanned = true;
public void Unban()
=> IsBanned = false;
public void GrantModerator()
=> IsModerator = true;
public void RevokeModerator()
=> IsModerator = false;
private static string RequireValue(string value, string parameterName)
=> !string.IsNullOrWhiteSpace(value) ? value : throw new DomainException($"{parameterName} is required.");
}