feat: update custom preferences endpoint
This commit is contained in:
parent
c4e39d4d59
commit
ef221b2c45
13 changed files with 820 additions and 20 deletions
|
@ -1,4 +1,6 @@
|
|||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Foxnouns.Backend.Utils;
|
||||
using Newtonsoft.Json;
|
||||
using NodaTime;
|
||||
|
||||
namespace Foxnouns.Backend.Database.Models;
|
||||
|
@ -16,6 +18,7 @@ public class User : BaseModel
|
|||
public List<FieldEntry> Names { get; set; } = [];
|
||||
public List<Pronoun> Pronouns { get; set; } = [];
|
||||
public List<Field> Fields { get; set; } = [];
|
||||
public Dictionary<Snowflake, CustomPreference> CustomPreferences { get; set; } = [];
|
||||
|
||||
public UserRole Role { get; set; } = UserRole.User;
|
||||
public string? Password { get; set; } // Password may be null if the user doesn't authenticate with an email address
|
||||
|
@ -29,6 +32,18 @@ public class User : BaseModel
|
|||
public Instant? DeletedAt { get; set; }
|
||||
public Snowflake? DeletedBy { get; set; }
|
||||
[NotMapped] public bool? SelfDelete => Deleted ? DeletedBy != null : null;
|
||||
|
||||
public class CustomPreference
|
||||
{
|
||||
public required string Icon { get; set; }
|
||||
public required string Tooltip { get; set; }
|
||||
public bool Muted { get; set; }
|
||||
public bool Favourite { get; set; }
|
||||
|
||||
// This type is generally serialized directly, so the converter is applied here.
|
||||
[JsonConverter(typeof(ScreamingSnakeCaseEnumConverter))]
|
||||
public PreferenceSize Size { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
public enum UserRole
|
||||
|
@ -36,4 +51,11 @@ public enum UserRole
|
|||
User,
|
||||
Moderator,
|
||||
Admin,
|
||||
}
|
||||
|
||||
public enum PreferenceSize
|
||||
{
|
||||
Large,
|
||||
Normal,
|
||||
Small,
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue