namespace Flaro.Core.Users;
/// Ein Benutzerkonto.
///
///
/// Mehrbenutzer von Anfang an — auch wenn der erste Server nur einen hat.
/// Fortschritt und Gesehen-Status je Benutzer nachträglich einzuziehen wäre
/// ein Umbau am Datenmodell und an jeder Abfrage darauf, kein Zusatz.
///
public sealed class User
{
/// Zeitlich geordnet, damit der Index nicht zerfasert.
public Guid Id { get; init; } = Guid.CreateVersion7();
public required string UserName { get; set; }
/// Im PHC-Format, siehe .
public required string PasswordHash { get; set; }
public bool IsAdministrator { get; set; }
/// Die bevorzugte Sprache — null heisst: die des Servers.
///
///
/// Und sie ist nicht kostenlos. Metadaten werden in der Sprache des
/// Servers geholt und gespeichert. Wer eine andere wählt, bekommt, was in
/// der Übersetzungstabelle liegt — und für den Rest die Serversprache.
/// Darauf wird beim Umstellen deutlich hingewiesen; es stillschweigend
/// halb zu übersetzen wäre schlechter als gar nicht.
///
public string? Language { get; set; }
public DateTimeOffset CreatedAt { get; init; } = DateTimeOffset.UtcNow;
}