Foxnouns.NET/Foxnouns.DataMigrator/Models/GoUser.cs
2024-12-16 21:38:38 +01:00

102 lines
3.7 KiB
C#

using Foxnouns.Backend.Database;
using Foxnouns.Backend.Database.Models;
namespace Foxnouns.DataMigrator.Models;
public class GoUser
{
public required string Id { get; init; }
public required string Username { get; init; }
public string? DisplayName { get; init; }
public string? Bio { get; init; }
public string[]? Links { get; init; }
public string? Discord { get; init; }
public string? DiscordUsername { get; init; }
public DateTimeOffset? DeletedAt { get; init; }
public bool? SelfDelete { get; init; }
public string? DeleteReason { get; init; }
public GoFieldEntry[] Names { get; init; } = [];
public GoPronounEntry[] Pronouns { get; init; } = [];
public string? Avatar { get; init; }
public string? Fediverse { get; init; }
public string? FediverseUsername { get; init; }
public int? FediverseAppId { get; init; }
public bool IsAdmin { get; init; }
public string? MemberTitle { get; init; }
public bool ListPrivate { get; init; }
public string? Tumblr { get; init; }
public string? TumblrUsername { get; init; }
public string? Google { get; init; }
public string? GoogleUsername { get; init; }
public Dictionary<string, GoCustomPreference> CustomPreferences { get; init; } = [];
public DateTimeOffset LastActive { get; init; }
public required string Sid { get; init; }
public DateTimeOffset LastSidReroll { get; init; }
public string? Timezone { get; init; }
public Snowflake SnowflakeId { get; init; }
}
public class GoUserField
{
public required string UserId { get; init; }
public required long Id { get; init; }
public required string Name { get; init; }
public required GoFieldEntry[] Entries { get; init; }
}
public class GoPrideFlag
{
public required string Id { get; init; }
public required string UserId { get; init; }
public required string Hash { get; init; }
public required string Name { get; init; }
public string? Description { get; init; }
public required Snowflake SnowflakeId { get; init; }
}
public class GoProfileFlag
{
public string? UserId { get; init; }
public string? MemberId { get; init; }
public required long Id { get; init; }
public required string FlagId { get; init; }
}
public class GoFediverseApp
{
public required int Id { get; init; }
public required string Instance { get; init; }
public required string ClientId { get; init; }
public required string ClientSecret { get; init; }
public required string InstanceType { get; init; }
public FediverseInstanceType TypeToEnum() =>
InstanceType switch
{
"sharkey" => FediverseInstanceType.MisskeyApi,
"firefish" => FediverseInstanceType.MisskeyApi,
"pixelfed" => FediverseInstanceType.MastodonApi,
"mastodon" => FediverseInstanceType.MastodonApi,
"pleroma" => FediverseInstanceType.MastodonApi,
"akkoma" => FediverseInstanceType.MastodonApi,
"misskey" => FediverseInstanceType.MastodonApi,
"gotosocial" => FediverseInstanceType.MastodonApi,
"calckey" => FediverseInstanceType.MisskeyApi,
"foundkey" => FediverseInstanceType.MisskeyApi,
// this should never happen but if it does we just fall back to the mastodon api
// basically everything but misskey forks implement it anyway :3
_ => FediverseInstanceType.MastodonApi,
};
}
public record GoFieldEntry(string Value, string Status);
public record GoPronounEntry(string Pronouns, string? DisplayText, string Status);
public record GoCustomPreference(
string Icon,
string Tooltip,
string PreferenceSize,
bool Muted,
bool Favourite
);