diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Contexts/SpacebarDbContext.cs b/extra/admin-api/Models/Spacebar.Models.Db/Contexts/SpacebarDbContext.cs
new file mode 100644
index 00000000..716079d0
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Contexts/SpacebarDbContext.cs
@@ -0,0 +1,699 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+using Spacebar.Models.Db.Models;
+using Stream = Spacebar.Models.Db.Models.Stream;
+
+namespace Spacebar.Models.Db.Contexts;
+
+public partial class SpacebarDbContext : DbContext
+{
+ public SpacebarDbContext(DbContextOptions<SpacebarDbContext> options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet<Application> Applications { get; set; }
+
+ public virtual DbSet<ApplicationCommand> ApplicationCommands { get; set; }
+
+ public virtual DbSet<Attachment> Attachments { get; set; }
+
+ public virtual DbSet<AuditLog> AuditLogs { get; set; }
+
+ public virtual DbSet<AutomodRule> AutomodRules { get; set; }
+
+ public virtual DbSet<BackupCode> BackupCodes { get; set; }
+
+ public virtual DbSet<Badge> Badges { get; set; }
+
+ public virtual DbSet<Ban> Bans { get; set; }
+
+ public virtual DbSet<Category> Categories { get; set; }
+
+ public virtual DbSet<Channel> Channels { get; set; }
+
+ public virtual DbSet<ClientRelease> ClientReleases { get; set; }
+
+ public virtual DbSet<CloudAttachment> CloudAttachments { get; set; }
+
+ public virtual DbSet<Config> Configs { get; set; }
+
+ public virtual DbSet<ConnectedAccount> ConnectedAccounts { get; set; }
+
+ public virtual DbSet<ConnectionConfig> ConnectionConfigs { get; set; }
+
+ public virtual DbSet<EmbedCache> EmbedCaches { get; set; }
+
+ public virtual DbSet<Emoji> Emojis { get; set; }
+
+ public virtual DbSet<Guild> Guilds { get; set; }
+
+ public virtual DbSet<InstanceBan> InstanceBans { get; set; }
+
+ public virtual DbSet<Invite> Invites { get; set; }
+
+ public virtual DbSet<Member> Members { get; set; }
+
+ public virtual DbSet<Message> Messages { get; set; }
+
+ public virtual DbSet<Migration> Migrations { get; set; }
+
+ public virtual DbSet<Note> Notes { get; set; }
+
+ public virtual DbSet<RateLimit> RateLimits { get; set; }
+
+ public virtual DbSet<ReadState> ReadStates { get; set; }
+
+ public virtual DbSet<Recipient> Recipients { get; set; }
+
+ public virtual DbSet<Relationship> Relationships { get; set; }
+
+ public virtual DbSet<Role> Roles { get; set; }
+
+ public virtual DbSet<SecurityKey> SecurityKeys { get; set; }
+
+ public virtual DbSet<SecuritySetting> SecuritySettings { get; set; }
+
+ public virtual DbSet<Session> Sessions { get; set; }
+
+ public virtual DbSet<Sticker> Stickers { get; set; }
+
+ public virtual DbSet<StickerPack> StickerPacks { get; set; }
+
+ public virtual DbSet<Stream> Streams { get; set; }
+
+ public virtual DbSet<StreamSession> StreamSessions { get; set; }
+
+ public virtual DbSet<Team> Teams { get; set; }
+
+ public virtual DbSet<TeamMember> TeamMembers { get; set; }
+
+ public virtual DbSet<Template> Templates { get; set; }
+
+ public virtual DbSet<User> Users { get; set; }
+
+ public virtual DbSet<UserSetting> UserSettings { get; set; }
+
+ public virtual DbSet<UserSettingsProto> UserSettingsProtos { get; set; }
+
+ public virtual DbSet<ValidRegistrationToken> ValidRegistrationTokens { get; set; }
+
+ public virtual DbSet<VoiceState> VoiceStates { get; set; }
+
+ public virtual DbSet<Webhook> Webhooks { get; set; }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity<Application>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_938c0a27255637bde919591888f");
+
+ entity.HasOne(d => d.BotUser).WithOne(p => p.ApplicationBotUser)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_2ce5a55796fe4c2f77ece57a647");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Applications).HasConstraintName("FK_e5bf78cdbbe9ba91062d74c5aba");
+
+ entity.HasOne(d => d.Owner).WithMany(p => p.ApplicationOwners)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_e57508958bf92b9d9d25231b5e8");
+
+ entity.HasOne(d => d.Team).WithMany(p => p.Applications)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_a36ed02953077f408d0f3ebc424");
+ });
+
+ modelBuilder.Entity<ApplicationCommand>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_0f73c2f025989c407947e1f75fe");
+
+ entity.Property(e => e.DmPermission).HasDefaultValue(true);
+ entity.Property(e => e.Options).HasDefaultValueSql("'[]'::text");
+ entity.Property(e => e.Type).HasDefaultValue(1);
+ entity.Property(e => e.Version).HasDefaultValueSql("'0'::character varying");
+ });
+
+ modelBuilder.Entity<Attachment>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_5e1f050bcff31e3084a1d662412");
+
+ entity.HasOne(d => d.Message).WithMany(p => p.Attachments)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_623e10eec51ada466c5038979e3");
+ });
+
+ modelBuilder.Entity<AuditLog>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_1bb179d048bbc581caa3b013439");
+
+ entity.HasOne(d => d.Target).WithMany(p => p.AuditLogTargets).HasConstraintName("FK_3cd01cd3ae7aab010310d96ac8e");
+
+ entity.HasOne(d => d.User).WithMany(p => p.AuditLogUsers).HasConstraintName("FK_bd2726fd31b35443f2245b93ba0");
+ });
+
+ modelBuilder.Entity<AutomodRule>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_99789ae863507f5aed9e58d7866");
+
+ entity.HasOne(d => d.Creator).WithMany(p => p.AutomodRules)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_12d3d60b961393d310429c062b7");
+ });
+
+ modelBuilder.Entity<BackupCode>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_34ab957382dbc57e8fb53f1638f");
+
+ entity.HasOne(d => d.User).WithMany(p => p.BackupCodes)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_70066ea80d2f4b871beda32633b");
+ });
+
+ modelBuilder.Entity<Badge>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_8a651318b8de577e8e217676466");
+ });
+
+ modelBuilder.Entity<Ban>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_a4d6f261bffa4615c62d756566a");
+
+ entity.HasOne(d => d.Executor).WithMany(p => p.BanExecutors).HasConstraintName("FK_07ad88c86d1f290d46748410d58");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Bans)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_9d3ab7dd180ebdd245cdb66ecad");
+
+ entity.HasOne(d => d.User).WithMany(p => p.BanUsers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_5999e8e449f80a236ff72023559");
+ });
+
+ modelBuilder.Entity<Category>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_24dbc6126a28ff948da33e97d3b");
+
+ entity.Property(e => e.Id).ValueGeneratedNever();
+ });
+
+ modelBuilder.Entity<Channel>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_bc603823f3f741359c2339389f9");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Channels)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_c253dafe5f3a03ec00cd8fb4581");
+
+ entity.HasOne(d => d.Owner).WithMany(p => p.Channels).HasConstraintName("FK_3873ed438575cce703ecff4fc7b");
+
+ entity.HasOne(d => d.Parent).WithMany(p => p.InverseParent).HasConstraintName("FK_3274522d14af40540b1a883fc80");
+ });
+
+ modelBuilder.Entity<ClientRelease>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_4c4ea258342d2d6ba1be0a71a43");
+ });
+
+ modelBuilder.Entity<CloudAttachment>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_5794827a3ee7c9318612dcb70c8");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.CloudAttachments)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK_998d5fe91008ba5b09e1322104c");
+
+ entity.HasOne(d => d.User).WithMany(p => p.CloudAttachments)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK_8bf8cc8767e48cb482ff644fce6");
+ });
+
+ modelBuilder.Entity<Config>(entity =>
+ {
+ entity.HasKey(e => e.Key).HasName("PK_26489c99ddbb4c91631ef5cc791");
+ });
+
+ modelBuilder.Entity<ConnectedAccount>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_70416f1da0be645bb31da01c774");
+
+ entity.HasOne(d => d.User).WithMany(p => p.ConnectedAccounts)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_f47244225a6a1eac04a3463dd90");
+ });
+
+ modelBuilder.Entity<ConnectionConfig>(entity =>
+ {
+ entity.HasKey(e => e.Key).HasName("PK_bc0554f736ad71dde346549488a");
+ });
+
+ modelBuilder.Entity<EmbedCache>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_0abb7581d4efc5a8b1361389c5e");
+ });
+
+ modelBuilder.Entity<Emoji>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_9adb96a675f555c6169bad7ba62");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Emojis).HasConstraintName("FK_4b988e0db89d94cebcf07f598cc");
+
+ entity.HasOne(d => d.User).WithMany(p => p.Emojis).HasConstraintName("FK_fa7ddd5f9a214e28ce596548421");
+ });
+
+ modelBuilder.Entity<Guild>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_e7e7f2a51bd6d96a9ac2aa560f9");
+
+ entity.HasOne(d => d.AfkChannel).WithMany(p => p.GuildAfkChannels).HasConstraintName("FK_f591a66b8019d87b0fe6c12dad6");
+
+ entity.HasOne(d => d.Owner).WithMany(p => p.Guilds).HasConstraintName("FK_fc1a451727e3643ca572a3bb394");
+
+ entity.HasOne(d => d.PublicUpdatesChannel).WithMany(p => p.GuildPublicUpdatesChannels).HasConstraintName("FK_8d450b016dc8bec35f36729e4b0");
+
+ entity.HasOne(d => d.RulesChannel).WithMany(p => p.GuildRulesChannels).HasConstraintName("FK_95828668aa333460582e0ca6396");
+
+ entity.HasOne(d => d.SystemChannel).WithMany(p => p.GuildSystemChannels).HasConstraintName("FK_cfc3d3ad260f8121c95b31a1fce");
+
+ entity.HasOne(d => d.Template).WithMany(p => p.Guilds).HasConstraintName("FK_e2a2f873a64a5cf62526de42325");
+
+ entity.HasOne(d => d.WidgetChannel).WithMany(p => p.GuildWidgetChannels).HasConstraintName("FK_9d1d665379eefde7876a17afa99");
+ });
+
+ modelBuilder.Entity<InstanceBan>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_3aa6e80a6d325601054892b1340");
+
+ entity.Property(e => e.CreatedAt).HasDefaultValueSql("now()");
+
+ entity.HasOne(d => d.OriginInstanceBan).WithOne(p => p.InverseOriginInstanceBan)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK_0b02d18d0d830f160c921192a30");
+ });
+
+ modelBuilder.Entity<Invite>(entity =>
+ {
+ entity.HasKey(e => e.Code).HasName("PK_33fd8a248db1cd832baa8aa25bf");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.Invites)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_6a15b051fe5050aa00a4b9ff0f6");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Invites)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_3f4939aa1461e8af57fea3fb05d");
+
+ entity.HasOne(d => d.Inviter).WithMany(p => p.InviteInviters)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_15c35422032e0b22b4ada95f48f");
+
+ entity.HasOne(d => d.TargetUser).WithMany(p => p.InviteTargetUsers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_11a0d394f8fc649c19ce5f16b59");
+ });
+
+ modelBuilder.Entity<Member>(entity =>
+ {
+ entity.HasKey(e => e.Index).HasName("PK_b4a6b8c2478e5df990909c6cf6a");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Members).HasConstraintName("FK_16aceddd5b89825b8ed6029ad1c");
+
+ entity.HasOne(d => d.IdNavigation).WithMany(p => p.Members).HasConstraintName("FK_28b53062261b996d9c99fa12404");
+
+ entity.HasMany(d => d.Roles).WithMany(p => p.Indices)
+ .UsingEntity<Dictionary<string, object>>(
+ "MemberRole",
+ r => r.HasOne<Role>().WithMany()
+ .HasForeignKey("RoleId")
+ .HasConstraintName("FK_e9080e7a7997a0170026d5139c1"),
+ l => l.HasOne<Member>().WithMany()
+ .HasForeignKey("Index")
+ .HasConstraintName("FK_5d7ddc8a5f9c167f548625e772e"),
+ j =>
+ {
+ j.HasKey("Index", "RoleId").HasName("PK_951c1d72a0fd1da8760b4a1fd66");
+ j.ToTable("member_roles");
+ j.HasIndex(new[] { "Index" }, "IDX_5d7ddc8a5f9c167f548625e772");
+ j.HasIndex(new[] { "RoleId" }, "IDX_e9080e7a7997a0170026d5139c");
+ j.IndexerProperty<int>("Index").HasColumnName("index");
+ j.IndexerProperty<string>("RoleId")
+ .HasColumnType("character varying")
+ .HasColumnName("role_id");
+ });
+ });
+
+ modelBuilder.Entity<Message>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_18325f38ae6de43878487eff986");
+
+ entity.Property(e => e.MessageSnapshots).HasDefaultValueSql("'[]'::text");
+ entity.Property(e => e.Timestamp).HasDefaultValueSql("now()");
+
+ entity.HasOne(d => d.Application).WithMany(p => p.Messages).HasConstraintName("FK_5d3ec1cb962de6488637fd779d6");
+
+ entity.HasOne(d => d.Author).WithMany(p => p.MessageAuthors)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_05535bc695e9f7ee104616459d3");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.Messages)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_86b9109b155eb70c0a2ca3b4b6d");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Messages)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_b193588441b085352a4c0109423");
+
+ entity.HasOne(d => d.Member).WithMany(p => p.MessageMembers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_b0525304f2262b7014245351c76");
+
+ entity.HasOne(d => d.MessageReferenceNavigation).WithMany(p => p.InverseMessageReferenceNavigation)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK_61a92bb65b302a76d9c1fcd3174");
+
+ entity.HasOne(d => d.Webhook).WithMany(p => p.Messages).HasConstraintName("FK_f83c04bcf1df4e5c0e7a52ed348");
+
+ entity.HasMany(d => d.Channels).WithMany(p => p.MessagesNavigation)
+ .UsingEntity<Dictionary<string, object>>(
+ "MessageChannelMention",
+ r => r.HasOne<Channel>().WithMany()
+ .HasForeignKey("ChannelsId")
+ .HasConstraintName("FK_bdb8c09e1464cabf62105bf4b9d"),
+ l => l.HasOne<Message>().WithMany()
+ .HasForeignKey("MessagesId")
+ .HasConstraintName("FK_2a27102ecd1d81b4582a4360921"),
+ j =>
+ {
+ j.HasKey("MessagesId", "ChannelsId").HasName("PK_85cb45351497cd9d06a79ced65e");
+ j.ToTable("message_channel_mentions");
+ j.HasIndex(new[] { "MessagesId" }, "IDX_2a27102ecd1d81b4582a436092");
+ j.HasIndex(new[] { "ChannelsId" }, "IDX_bdb8c09e1464cabf62105bf4b9");
+ j.IndexerProperty<string>("MessagesId")
+ .HasColumnType("character varying")
+ .HasColumnName("messagesId");
+ j.IndexerProperty<string>("ChannelsId")
+ .HasColumnType("character varying")
+ .HasColumnName("channelsId");
+ });
+
+ entity.HasMany(d => d.Roles).WithMany(p => p.Messages)
+ .UsingEntity<Dictionary<string, object>>(
+ "MessageRoleMention",
+ r => r.HasOne<Role>().WithMany()
+ .HasForeignKey("RolesId")
+ .HasConstraintName("FK_29d63eb1a458200851bc37d074b"),
+ l => l.HasOne<Message>().WithMany()
+ .HasForeignKey("MessagesId")
+ .HasConstraintName("FK_a8242cf535337a490b0feaea0b4"),
+ j =>
+ {
+ j.HasKey("MessagesId", "RolesId").HasName("PK_74dba92cc300452a6e14b83ed44");
+ j.ToTable("message_role_mentions");
+ j.HasIndex(new[] { "RolesId" }, "IDX_29d63eb1a458200851bc37d074");
+ j.HasIndex(new[] { "MessagesId" }, "IDX_a8242cf535337a490b0feaea0b");
+ j.IndexerProperty<string>("MessagesId")
+ .HasColumnType("character varying")
+ .HasColumnName("messagesId");
+ j.IndexerProperty<string>("RolesId")
+ .HasColumnType("character varying")
+ .HasColumnName("rolesId");
+ });
+
+ entity.HasMany(d => d.Stickers).WithMany(p => p.Messages)
+ .UsingEntity<Dictionary<string, object>>(
+ "MessageSticker",
+ r => r.HasOne<Sticker>().WithMany()
+ .HasForeignKey("StickersId")
+ .HasConstraintName("FK_e22a70819d07659c7a71c112a1f"),
+ l => l.HasOne<Message>().WithMany()
+ .HasForeignKey("MessagesId")
+ .HasConstraintName("FK_40bb6f23e7cc133292e92829d28"),
+ j =>
+ {
+ j.HasKey("MessagesId", "StickersId").HasName("PK_ed820c4093d0b8cd1d2bcf66087");
+ j.ToTable("message_stickers");
+ j.HasIndex(new[] { "MessagesId" }, "IDX_40bb6f23e7cc133292e92829d2");
+ j.HasIndex(new[] { "StickersId" }, "IDX_e22a70819d07659c7a71c112a1");
+ j.IndexerProperty<string>("MessagesId")
+ .HasColumnType("character varying")
+ .HasColumnName("messagesId");
+ j.IndexerProperty<string>("StickersId")
+ .HasColumnType("character varying")
+ .HasColumnName("stickersId");
+ });
+
+ entity.HasMany(d => d.Users).WithMany(p => p.Messages)
+ .UsingEntity<Dictionary<string, object>>(
+ "MessageUserMention",
+ r => r.HasOne<User>().WithMany()
+ .HasForeignKey("UsersId")
+ .HasConstraintName("FK_b831eb18ceebd28976239b1e2f8"),
+ l => l.HasOne<Message>().WithMany()
+ .HasForeignKey("MessagesId")
+ .HasConstraintName("FK_a343387fc560ef378760681c236"),
+ j =>
+ {
+ j.HasKey("MessagesId", "UsersId").HasName("PK_9b9b6e245ad47a48dbd7605d4fb");
+ j.ToTable("message_user_mentions");
+ j.HasIndex(new[] { "MessagesId" }, "IDX_a343387fc560ef378760681c23");
+ j.HasIndex(new[] { "UsersId" }, "IDX_b831eb18ceebd28976239b1e2f");
+ j.IndexerProperty<string>("MessagesId")
+ .HasColumnType("character varying")
+ .HasColumnName("messagesId");
+ j.IndexerProperty<string>("UsersId")
+ .HasColumnType("character varying")
+ .HasColumnName("usersId");
+ });
+ });
+
+ modelBuilder.Entity<Migration>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_8c82d7f526340ab734260ea46be");
+ });
+
+ modelBuilder.Entity<Note>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_af6206538ea96c4e77e9f400c3d");
+
+ entity.HasOne(d => d.Owner).WithMany(p => p.NoteOwners)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_f9e103f8ae67cb1787063597925");
+
+ entity.HasOne(d => d.Target).WithMany(p => p.NoteTargets)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_23e08e5b4481711d573e1abecdc");
+ });
+
+ modelBuilder.Entity<RateLimit>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_3b4449f1f5fc167d921ee619f65");
+ });
+
+ modelBuilder.Entity<ReadState>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_e6956a804978f01b713b1ed58e2");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.ReadStates).HasConstraintName("FK_40da2fca4e0eaf7a23b5bfc5d34");
+
+ entity.HasOne(d => d.User).WithMany(p => p.ReadStates).HasConstraintName("FK_195f92e4dd1254a4e348c043763");
+ });
+
+ modelBuilder.Entity<Recipient>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_de8fc5a9c364568f294798fe1e9");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.Recipients).HasConstraintName("FK_2f18ee1ba667f233ae86c0ea60e");
+
+ entity.HasOne(d => d.User).WithMany(p => p.Recipients).HasConstraintName("FK_6157e8b6ba4e6e3089616481fe2");
+ });
+
+ modelBuilder.Entity<Relationship>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_ba20e2f5cf487408e08e4dcecaf");
+
+ entity.HasOne(d => d.From).WithMany(p => p.RelationshipFroms).HasConstraintName("FK_9af4194bab1250b1c584ae4f1d7");
+
+ entity.HasOne(d => d.To).WithMany(p => p.RelationshipTos).HasConstraintName("FK_9c7f6b98a9843b76dce1b0c878b");
+ });
+
+ modelBuilder.Entity<Role>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_c1433d71a4838793a49dcad46ab");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Roles).HasConstraintName("FK_c32c1ab1c4dc7dcb0278c4b1b8b");
+ });
+
+ modelBuilder.Entity<SecurityKey>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_6e95cdd91779e7cca06d1fff89c");
+
+ entity.HasOne(d => d.User).WithMany(p => p.SecurityKeys)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_24c97d0771cafedce6d7163eaad");
+ });
+
+ modelBuilder.Entity<SecuritySetting>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_4aec436cf81177ae97a1bcec3c7");
+ });
+
+ modelBuilder.Entity<Session>(entity =>
+ {
+ entity.HasKey(e => e.SessionId).HasName("PK_9340188c93349808f10d1db74a8");
+
+ entity.Property(e => e.Activities).HasDefaultValueSql("'[]'::text");
+ entity.Property(e => e.CreatedAt).HasDefaultValueSql("now()");
+
+ entity.HasOne(d => d.User).WithMany(p => p.Sessions).HasConstraintName("FK_085d540d9f418cfbdc7bd55bb19");
+ });
+
+ modelBuilder.Entity<Sticker>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_e1dafa4063a5532645cc2810374");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.Stickers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_193d551d852aca5347ef5c9f205");
+
+ entity.HasOne(d => d.Pack).WithMany(p => p.Stickers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_e7cfa5cefa6661b3fb8fda8ce69");
+
+ entity.HasOne(d => d.User).WithMany(p => p.Stickers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_8f4ee73f2bb2325ff980502e158");
+ });
+
+ modelBuilder.Entity<StickerPack>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_a27381efea0f876f5d3233af655");
+
+ entity.HasOne(d => d.CoverStickerId1Navigation).WithMany(p => p.StickerPacks).HasConstraintName("FK_448fafba4355ee1c837bbc865f1");
+ });
+
+ modelBuilder.Entity<Stream>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_40440b6f569ebc02bc71c25c499");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.Streams).HasConstraintName("FK_5101f0cded27ff0aae78fc4eed7");
+
+ entity.HasOne(d => d.Owner).WithMany(p => p.Streams).HasConstraintName("FK_1b566f9b54d1cda271da53ac82f");
+ });
+
+ modelBuilder.Entity<StreamSession>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_49bdc3f66394c12478f8371c546");
+
+ entity.HasOne(d => d.Stream).WithMany(p => p.StreamSessions).HasConstraintName("FK_8b5a028a34dae9ee54af37c9c32");
+
+ entity.HasOne(d => d.User).WithMany(p => p.StreamSessions).HasConstraintName("FK_13ae5c29aff4d0890c54179511a");
+ });
+
+ modelBuilder.Entity<Team>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_7e5523774a38b08a6236d322403");
+
+ entity.HasOne(d => d.OwnerUser).WithMany(p => p.Teams).HasConstraintName("FK_13f00abf7cb6096c43ecaf8c108");
+ });
+
+ modelBuilder.Entity<TeamMember>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_ca3eae89dcf20c9fd95bf7460aa");
+
+ entity.HasOne(d => d.Team).WithMany(p => p.TeamMembers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_fdad7d5768277e60c40e01cdcea");
+
+ entity.HasOne(d => d.User).WithMany(p => p.TeamMembers)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_c2bf4967c8c2a6b845dadfbf3d4");
+ });
+
+ modelBuilder.Entity<Template>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_515948649ce0bbbe391de702ae5");
+
+ entity.HasOne(d => d.Creator).WithMany(p => p.Templates).HasConstraintName("FK_d7374b7f8f5fbfdececa4fb62e1");
+
+ entity.HasOne(d => d.SourceGuild).WithMany(p => p.Templates)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_445d00eaaea0e60a017a5ed0c11");
+ });
+
+ modelBuilder.Entity<User>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_a3ffb1c0c8416b9fc6f907b7433");
+
+ entity.HasOne(d => d.SettingsIndexNavigation).WithOne(p => p.User).HasConstraintName("FK_0c14beb78d8c5ccba66072adbc7");
+ });
+
+ modelBuilder.Entity<UserSetting>(entity =>
+ {
+ entity.HasKey(e => e.Index).HasName("PK_e81f8bb92802737337d35c00981");
+ });
+
+ modelBuilder.Entity<UserSettingsProto>(entity =>
+ {
+ entity.HasKey(e => e.UserId).HasName("PK_8ff3d1961a48b693810c9f99853");
+
+ entity.HasOne(d => d.User).WithOne(p => p.UserSettingsProto)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_8ff3d1961a48b693810c9f99853");
+ });
+
+ modelBuilder.Entity<ValidRegistrationToken>(entity =>
+ {
+ entity.HasKey(e => e.Token).HasName("PK_e0f5c8e3fcefe3134a092c50485");
+ });
+
+ modelBuilder.Entity<VoiceState>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_ada09a50c134fad1369b510e3ce");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.VoiceStates)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_9f8d389866b40b6657edd026dd4");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.VoiceStates)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_03779ef216d4b0358470d9cb748");
+
+ entity.HasOne(d => d.User).WithMany(p => p.VoiceStates)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_5fe1d5f931a67e85039c640001b");
+ });
+
+ modelBuilder.Entity<Webhook>(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("PK_9e8795cfc899ab7bdaa831e8527");
+
+ entity.HasOne(d => d.Application).WithMany(p => p.Webhooks)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_c3e5305461931763b56aa905f1c");
+
+ entity.HasOne(d => d.Channel).WithMany(p => p.WebhookChannels)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_df528cf77e82f8032230e7e37d8");
+
+ entity.HasOne(d => d.Guild).WithMany(p => p.WebhookGuilds)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_487a7af59d189f744fe394368fc");
+
+ entity.HasOne(d => d.SourceChannel).WithMany(p => p.WebhookSourceChannels)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_4495b7032a33c6b8b605d030398");
+
+ entity.HasOne(d => d.SourceGuild).WithMany(p => p.WebhookSourceGuilds)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_3a285f4f49c40e0706d3018bc9f");
+
+ entity.HasOne(d => d.User).WithMany(p => p.Webhooks)
+ .OnDelete(DeleteBehavior.Cascade)
+ .HasConstraintName("FK_0d523f6f997c86e052c49b1455f");
+ });
+
+ OnModelCreatingPartial(modelBuilder);
+ }
+
+ partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Application.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Application.cs
new file mode 100644
index 00000000..bb9661d0
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Application.cs
@@ -0,0 +1,125 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("applications")]
+[Index("BotUserId", Name = "REL_2ce5a55796fe4c2f77ece57a64", IsUnique = true)]
+public partial class Application
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("icon", TypeName = "character varying")]
+ public string? Icon { get; set; }
+
+ [Column("description", TypeName = "character varying")]
+ public string? Description { get; set; }
+
+ [Column("summary", TypeName = "character varying")]
+ public string? Summary { get; set; }
+
+ [Column("type")]
+ public string? Type { get; set; }
+
+ [Column("hook")]
+ public bool Hook { get; set; }
+
+ [Column("bot_public")]
+ public bool BotPublic { get; set; }
+
+ [Column("bot_require_code_grant")]
+ public bool BotRequireCodeGrant { get; set; }
+
+ [Column("verify_key", TypeName = "character varying")]
+ public string VerifyKey { get; set; } = null!;
+
+ [Column("flags")]
+ public int Flags { get; set; }
+
+ [Column("redirect_uris")]
+ public string? RedirectUris { get; set; }
+
+ [Column("rpc_application_state")]
+ public int? RpcApplicationState { get; set; }
+
+ [Column("store_application_state")]
+ public int? StoreApplicationState { get; set; }
+
+ [Column("verification_state")]
+ public int? VerificationState { get; set; }
+
+ [Column("interactions_endpoint_url", TypeName = "character varying")]
+ public string? InteractionsEndpointUrl { get; set; }
+
+ [Column("integration_public")]
+ public bool? IntegrationPublic { get; set; }
+
+ [Column("integration_require_code_grant")]
+ public bool? IntegrationRequireCodeGrant { get; set; }
+
+ [Column("discoverability_state")]
+ public int? DiscoverabilityState { get; set; }
+
+ [Column("discovery_eligibility_flags")]
+ public int? DiscoveryEligibilityFlags { get; set; }
+
+ [Column("tags")]
+ public string? Tags { get; set; }
+
+ [Column("cover_image", TypeName = "character varying")]
+ public string? CoverImage { get; set; }
+
+ [Column("install_params")]
+ public string? InstallParams { get; set; }
+
+ [Column("terms_of_service_url", TypeName = "character varying")]
+ public string? TermsOfServiceUrl { get; set; }
+
+ [Column("privacy_policy_url", TypeName = "character varying")]
+ public string? PrivacyPolicyUrl { get; set; }
+
+ [Column("owner_id", TypeName = "character varying")]
+ public string? OwnerId { get; set; }
+
+ [Column("bot_user_id", TypeName = "character varying")]
+ public string? BotUserId { get; set; }
+
+ [Column("team_id", TypeName = "character varying")]
+ public string? TeamId { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("custom_install_url", TypeName = "character varying")]
+ public string? CustomInstallUrl { get; set; }
+
+ [ForeignKey("BotUserId")]
+ [InverseProperty("ApplicationBotUser")]
+ public virtual User? BotUser { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Applications")]
+ public virtual Guild? Guild { get; set; }
+
+ [InverseProperty("Application")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+
+ [ForeignKey("OwnerId")]
+ [InverseProperty("ApplicationOwners")]
+ public virtual User? Owner { get; set; }
+
+ [ForeignKey("TeamId")]
+ [InverseProperty("Applications")]
+ public virtual Team? Team { get; set; }
+
+ [InverseProperty("Application")]
+ public virtual ICollection<Webhook> Webhooks { get; set; } = new List<Webhook>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ApplicationCommand.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ApplicationCommand.cs
new file mode 100644
index 00000000..bad2fd9e
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ApplicationCommand.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("application_commands")]
+public partial class ApplicationCommand
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [Column("application_id", TypeName = "character varying")]
+ public string ApplicationId { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("name_localizations")]
+ public string? NameLocalizations { get; set; }
+
+ [Column("description", TypeName = "character varying")]
+ public string Description { get; set; } = null!;
+
+ [Column("description_localizations")]
+ public string? DescriptionLocalizations { get; set; }
+
+ [Column("options")]
+ public string Options { get; set; } = null!;
+
+ [Column("default_member_permissions", TypeName = "character varying")]
+ public string? DefaultMemberPermissions { get; set; }
+
+ [Column("dm_permission")]
+ public bool DmPermission { get; set; }
+
+ [Column("permissions")]
+ public string? Permissions { get; set; }
+
+ [Column("nsfw")]
+ public bool Nsfw { get; set; }
+
+ [Column("integration_types")]
+ public string? IntegrationTypes { get; set; }
+
+ [Column("global_popularity_rank")]
+ public int GlobalPopularityRank { get; set; }
+
+ [Column("contexts")]
+ public string? Contexts { get; set; }
+
+ [Column("version", TypeName = "character varying")]
+ public string Version { get; set; } = null!;
+
+ [Column("handler")]
+ public int Handler { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Attachment.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Attachment.cs
new file mode 100644
index 00000000..7cff9482
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Attachment.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("attachments")]
+public partial class Attachment
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("filename", TypeName = "character varying")]
+ public string Filename { get; set; } = null!;
+
+ [Column("size")]
+ public int Size { get; set; }
+
+ [Column("url", TypeName = "character varying")]
+ public string Url { get; set; } = null!;
+
+ [Column("proxy_url", TypeName = "character varying")]
+ public string ProxyUrl { get; set; } = null!;
+
+ [Column("height")]
+ public int? Height { get; set; }
+
+ [Column("width")]
+ public int? Width { get; set; }
+
+ [Column("content_type", TypeName = "character varying")]
+ public string? ContentType { get; set; }
+
+ [Column("message_id", TypeName = "character varying")]
+ public string? MessageId { get; set; }
+
+ [ForeignKey("MessageId")]
+ [InverseProperty("Attachments")]
+ public virtual Message? Message { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/AuditLog.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/AuditLog.cs
new file mode 100644
index 00000000..68bcf589
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/AuditLog.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("audit_logs")]
+public partial class AuditLog
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("action_type")]
+ public int ActionType { get; set; }
+
+ [Column("options")]
+ public string? Options { get; set; }
+
+ [Column("changes")]
+ public string Changes { get; set; } = null!;
+
+ [Column("reason", TypeName = "character varying")]
+ public string? Reason { get; set; }
+
+ [Column("target_id", TypeName = "character varying")]
+ public string? TargetId { get; set; }
+
+ [ForeignKey("TargetId")]
+ [InverseProperty("AuditLogTargets")]
+ public virtual User? Target { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("AuditLogUsers")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/AutomodRule.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/AutomodRule.cs
new file mode 100644
index 00000000..e0da822b
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/AutomodRule.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("automod_rules")]
+public partial class AutomodRule
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("enabled")]
+ public bool Enabled { get; set; }
+
+ [Column("event_type")]
+ public int EventType { get; set; }
+
+ [Column("exempt_channels")]
+ public string ExemptChannels { get; set; } = null!;
+
+ [Column("exempt_roles")]
+ public string ExemptRoles { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string GuildId { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("position")]
+ public int Position { get; set; }
+
+ [Column("trigger_type")]
+ public int TriggerType { get; set; }
+
+ [Column("trigger_metadata")]
+ public string? TriggerMetadata { get; set; }
+
+ [Column("actions")]
+ public string Actions { get; set; } = null!;
+
+ [Column("creator_id", TypeName = "character varying")]
+ public string? CreatorId { get; set; }
+
+ [ForeignKey("CreatorId")]
+ [InverseProperty("AutomodRules")]
+ public virtual User? Creator { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/BackupCode.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/BackupCode.cs
new file mode 100644
index 00000000..57933360
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/BackupCode.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("backup_codes")]
+public partial class BackupCode
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("code", TypeName = "character varying")]
+ public string Code { get; set; } = null!;
+
+ [Column("consumed")]
+ public bool Consumed { get; set; }
+
+ [Column("expired")]
+ public bool Expired { get; set; }
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("BackupCodes")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Badge.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Badge.cs
new file mode 100644
index 00000000..e92ddd45
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Badge.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("badges")]
+public partial class Badge
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("description", TypeName = "character varying")]
+ public string Description { get; set; } = null!;
+
+ [Column("icon", TypeName = "character varying")]
+ public string Icon { get; set; } = null!;
+
+ [Column("link", TypeName = "character varying")]
+ public string? Link { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Ban.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Ban.cs
new file mode 100644
index 00000000..634dad13
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Ban.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("bans")]
+public partial class Ban
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("executor_id", TypeName = "character varying")]
+ public string? ExecutorId { get; set; }
+
+ [Column("ip", TypeName = "character varying")]
+ public string? Ip { get; set; }
+
+ [Column("reason", TypeName = "character varying")]
+ public string? Reason { get; set; }
+
+ [ForeignKey("ExecutorId")]
+ [InverseProperty("BanExecutors")]
+ public virtual User? Executor { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Bans")]
+ public virtual Guild? Guild { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("BanUsers")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Category.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Category.cs
new file mode 100644
index 00000000..accd6c20
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Category.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("categories")]
+public partial class Category
+{
+ [Key]
+ [Column("id")]
+ public int Id { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string? Name { get; set; }
+
+ [Column("localizations")]
+ public string Localizations { get; set; } = null!;
+
+ [Column("is_primary")]
+ public bool? IsPrimary { get; set; }
+
+ [Column("icon", TypeName = "character varying")]
+ public string? Icon { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Channel.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Channel.cs
new file mode 100644
index 00000000..057a9a32
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Channel.cs
@@ -0,0 +1,136 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("channels")]
+public partial class Channel
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string? Name { get; set; }
+
+ [Column("icon")]
+ public string? Icon { get; set; }
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [Column("last_message_id", TypeName = "character varying")]
+ public string? LastMessageId { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("parent_id", TypeName = "character varying")]
+ public string? ParentId { get; set; }
+
+ [Column("owner_id", TypeName = "character varying")]
+ public string? OwnerId { get; set; }
+
+ [Column("last_pin_timestamp")]
+ public int? LastPinTimestamp { get; set; }
+
+ [Column("default_auto_archive_duration")]
+ public int? DefaultAutoArchiveDuration { get; set; }
+
+ [Column("permission_overwrites")]
+ public string? PermissionOverwrites { get; set; }
+
+ [Column("video_quality_mode")]
+ public int? VideoQualityMode { get; set; }
+
+ [Column("bitrate")]
+ public int? Bitrate { get; set; }
+
+ [Column("user_limit")]
+ public int? UserLimit { get; set; }
+
+ [Column("nsfw")]
+ public bool Nsfw { get; set; }
+
+ [Column("rate_limit_per_user")]
+ public int? RateLimitPerUser { get; set; }
+
+ [Column("topic", TypeName = "character varying")]
+ public string? Topic { get; set; }
+
+ [Column("retention_policy_id", TypeName = "character varying")]
+ public string? RetentionPolicyId { get; set; }
+
+ [Column("flags")]
+ public int Flags { get; set; }
+
+ [Column("default_thread_rate_limit_per_user")]
+ public int? DefaultThreadRateLimitPerUser { get; set; }
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<CloudAttachment> CloudAttachments { get; set; } = new List<CloudAttachment>();
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Channels")]
+ public virtual Guild? Guild { get; set; }
+
+ [InverseProperty("AfkChannel")]
+ public virtual ICollection<Guild> GuildAfkChannels { get; set; } = new List<Guild>();
+
+ [InverseProperty("PublicUpdatesChannel")]
+ public virtual ICollection<Guild> GuildPublicUpdatesChannels { get; set; } = new List<Guild>();
+
+ [InverseProperty("RulesChannel")]
+ public virtual ICollection<Guild> GuildRulesChannels { get; set; } = new List<Guild>();
+
+ [InverseProperty("SystemChannel")]
+ public virtual ICollection<Guild> GuildSystemChannels { get; set; } = new List<Guild>();
+
+ [InverseProperty("WidgetChannel")]
+ public virtual ICollection<Guild> GuildWidgetChannels { get; set; } = new List<Guild>();
+
+ [InverseProperty("Parent")]
+ public virtual ICollection<Channel> InverseParent { get; set; } = new List<Channel>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<Invite> Invites { get; set; } = new List<Invite>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+
+ [ForeignKey("OwnerId")]
+ [InverseProperty("Channels")]
+ public virtual User? Owner { get; set; }
+
+ [ForeignKey("ParentId")]
+ [InverseProperty("InverseParent")]
+ public virtual Channel? Parent { get; set; }
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<ReadState> ReadStates { get; set; } = new List<ReadState>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<Recipient> Recipients { get; set; } = new List<Recipient>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<Stream> Streams { get; set; } = new List<Stream>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<VoiceState> VoiceStates { get; set; } = new List<VoiceState>();
+
+ [InverseProperty("Channel")]
+ public virtual ICollection<Webhook> WebhookChannels { get; set; } = new List<Webhook>();
+
+ [InverseProperty("SourceChannel")]
+ public virtual ICollection<Webhook> WebhookSourceChannels { get; set; } = new List<Webhook>();
+
+ [ForeignKey("ChannelsId")]
+ [InverseProperty("Channels")]
+ public virtual ICollection<Message> MessagesNavigation { get; set; } = new List<Message>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ClientRelease.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ClientRelease.cs
new file mode 100644
index 00000000..ad4befb9
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ClientRelease.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("client_release")]
+public partial class ClientRelease
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("pub_date", TypeName = "timestamp without time zone")]
+ public DateTime PubDate { get; set; }
+
+ [Column("url", TypeName = "character varying")]
+ public string Url { get; set; } = null!;
+
+ [Column("platform", TypeName = "character varying")]
+ public string Platform { get; set; } = null!;
+
+ [Column("enabled")]
+ public bool Enabled { get; set; }
+
+ [Column("notes", TypeName = "character varying")]
+ public string? Notes { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/CloudAttachment.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/CloudAttachment.cs
new file mode 100644
index 00000000..3b780604
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/CloudAttachment.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("cloud_attachments")]
+public partial class CloudAttachment
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("upload_filename", TypeName = "character varying")]
+ public string UploadFilename { get; set; } = null!;
+
+ [Column("user_attachment_id", TypeName = "character varying")]
+ public string? UserAttachmentId { get; set; }
+
+ [Column("user_filename", TypeName = "character varying")]
+ public string UserFilename { get; set; } = null!;
+
+ [Column("user_file_size")]
+ public int? UserFileSize { get; set; }
+
+ [Column("user_original_content_type", TypeName = "character varying")]
+ public string? UserOriginalContentType { get; set; }
+
+ [Column("user_is_clip")]
+ public bool? UserIsClip { get; set; }
+
+ [Column("size")]
+ public int? Size { get; set; }
+
+ [Column("height")]
+ public int? Height { get; set; }
+
+ [Column("width")]
+ public int? Width { get; set; }
+
+ [Column("content_type", TypeName = "character varying")]
+ public string? ContentType { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("CloudAttachments")]
+ public virtual Channel? Channel { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("CloudAttachments")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Config.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Config.cs
new file mode 100644
index 00000000..31016c6a
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Config.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("config")]
+public partial class Config
+{
+ [Key]
+ [Column("key", TypeName = "character varying")]
+ public string Key { get; set; } = null!;
+
+ [Column("value")]
+ public string? Value { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectedAccount.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectedAccount.cs
new file mode 100644
index 00000000..977797b7
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectedAccount.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("connected_accounts")]
+public partial class ConnectedAccount
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("external_id", TypeName = "character varying")]
+ public string ExternalId { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("friend_sync")]
+ public bool FriendSync { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("revoked")]
+ public bool Revoked { get; set; }
+
+ [Column("show_activity")]
+ public int ShowActivity { get; set; }
+
+ [Column("type", TypeName = "character varying")]
+ public string Type { get; set; } = null!;
+
+ [Column("verified")]
+ public bool Verified { get; set; }
+
+ [Column("visibility")]
+ public int Visibility { get; set; }
+
+ [Column("integrations")]
+ public string Integrations { get; set; } = null!;
+
+ [Column("metadata")]
+ public string? Metadata { get; set; }
+
+ [Column("metadata_visibility")]
+ public int MetadataVisibility { get; set; }
+
+ [Column("two_way_link")]
+ public bool TwoWayLink { get; set; }
+
+ [Column("token_data")]
+ public string? TokenData { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("ConnectedAccounts")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectionConfig.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectionConfig.cs
new file mode 100644
index 00000000..0bbd0dd9
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ConnectionConfig.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("connection_config")]
+public partial class ConnectionConfig
+{
+ [Key]
+ [Column("key", TypeName = "character varying")]
+ public string Key { get; set; } = null!;
+
+ [Column("value")]
+ public string? Value { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/EmbedCache.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/EmbedCache.cs
new file mode 100644
index 00000000..3ae84bc1
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/EmbedCache.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("embed_cache")]
+public partial class EmbedCache
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("url", TypeName = "character varying")]
+ public string Url { get; set; } = null!;
+
+ [Column("embed")]
+ public string Embed { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Emoji.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Emoji.cs
new file mode 100644
index 00000000..faa52249
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Emoji.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("emojis")]
+public partial class Emoji
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("animated")]
+ public bool Animated { get; set; }
+
+ [Column("available")]
+ public bool Available { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string GuildId { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("managed")]
+ public bool Managed { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("require_colons")]
+ public bool RequireColons { get; set; }
+
+ [Column("roles")]
+ public string Roles { get; set; } = null!;
+
+ [Column("groups")]
+ public string? Groups { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Emojis")]
+ public virtual Guild Guild { get; set; } = null!;
+
+ [ForeignKey("UserId")]
+ [InverseProperty("Emojis")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Guild.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Guild.cs
new file mode 100644
index 00000000..f4729ae1
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Guild.cs
@@ -0,0 +1,199 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("guilds")]
+public partial class Guild
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("afk_channel_id", TypeName = "character varying")]
+ public string? AfkChannelId { get; set; }
+
+ [Column("afk_timeout")]
+ public int? AfkTimeout { get; set; }
+
+ [Column("banner", TypeName = "character varying")]
+ public string? Banner { get; set; }
+
+ [Column("default_message_notifications")]
+ public int? DefaultMessageNotifications { get; set; }
+
+ [Column("description", TypeName = "character varying")]
+ public string? Description { get; set; }
+
+ [Column("discovery_splash", TypeName = "character varying")]
+ public string? DiscoverySplash { get; set; }
+
+ [Column("explicit_content_filter")]
+ public int? ExplicitContentFilter { get; set; }
+
+ [Column("features")]
+ public string Features { get; set; } = null!;
+
+ [Column("primary_category_id", TypeName = "character varying")]
+ public string? PrimaryCategoryId { get; set; }
+
+ [Column("icon", TypeName = "character varying")]
+ public string? Icon { get; set; }
+
+ [Column("large")]
+ public bool Large { get; set; }
+
+ [Column("max_members")]
+ public int? MaxMembers { get; set; }
+
+ [Column("max_presences")]
+ public int? MaxPresences { get; set; }
+
+ [Column("max_video_channel_users")]
+ public int? MaxVideoChannelUsers { get; set; }
+
+ [Column("member_count")]
+ public int? MemberCount { get; set; }
+
+ [Column("presence_count")]
+ public int? PresenceCount { get; set; }
+
+ [Column("template_id", TypeName = "character varying")]
+ public string? TemplateId { get; set; }
+
+ [Column("mfa_level")]
+ public int? MfaLevel { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("owner_id", TypeName = "character varying")]
+ public string? OwnerId { get; set; }
+
+ [Column("preferred_locale", TypeName = "character varying")]
+ public string? PreferredLocale { get; set; }
+
+ [Column("premium_subscription_count")]
+ public int? PremiumSubscriptionCount { get; set; }
+
+ [Column("premium_tier")]
+ public int PremiumTier { get; set; }
+
+ [Column("public_updates_channel_id", TypeName = "character varying")]
+ public string? PublicUpdatesChannelId { get; set; }
+
+ [Column("rules_channel_id", TypeName = "character varying")]
+ public string? RulesChannelId { get; set; }
+
+ [Column("region", TypeName = "character varying")]
+ public string? Region { get; set; }
+
+ [Column("splash", TypeName = "character varying")]
+ public string? Splash { get; set; }
+
+ [Column("system_channel_id", TypeName = "character varying")]
+ public string? SystemChannelId { get; set; }
+
+ [Column("system_channel_flags")]
+ public int? SystemChannelFlags { get; set; }
+
+ [Column("unavailable")]
+ public bool Unavailable { get; set; }
+
+ [Column("verification_level")]
+ public int? VerificationLevel { get; set; }
+
+ [Column("welcome_screen")]
+ public string WelcomeScreen { get; set; } = null!;
+
+ [Column("widget_channel_id", TypeName = "character varying")]
+ public string? WidgetChannelId { get; set; }
+
+ [Column("widget_enabled")]
+ public bool WidgetEnabled { get; set; }
+
+ [Column("nsfw_level")]
+ public int? NsfwLevel { get; set; }
+
+ [Column("nsfw")]
+ public bool Nsfw { get; set; }
+
+ [Column("parent", TypeName = "character varying")]
+ public string? Parent { get; set; }
+
+ [Column("premium_progress_bar_enabled")]
+ public bool? PremiumProgressBarEnabled { get; set; }
+
+ [Column("channel_ordering")]
+ public string ChannelOrdering { get; set; } = null!;
+
+ [ForeignKey("AfkChannelId")]
+ [InverseProperty("GuildAfkChannels")]
+ public virtual Channel? AfkChannel { get; set; }
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Application> Applications { get; set; } = new List<Application>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Ban> Bans { get; set; } = new List<Ban>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Channel> Channels { get; set; } = new List<Channel>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Emoji> Emojis { get; set; } = new List<Emoji>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Invite> Invites { get; set; } = new List<Invite>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Member> Members { get; set; } = new List<Member>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+
+ [ForeignKey("OwnerId")]
+ [InverseProperty("Guilds")]
+ public virtual User? Owner { get; set; }
+
+ [ForeignKey("PublicUpdatesChannelId")]
+ [InverseProperty("GuildPublicUpdatesChannels")]
+ public virtual Channel? PublicUpdatesChannel { get; set; }
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Role> Roles { get; set; } = new List<Role>();
+
+ [ForeignKey("RulesChannelId")]
+ [InverseProperty("GuildRulesChannels")]
+ public virtual Channel? RulesChannel { get; set; }
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Sticker> Stickers { get; set; } = new List<Sticker>();
+
+ [ForeignKey("SystemChannelId")]
+ [InverseProperty("GuildSystemChannels")]
+ public virtual Channel? SystemChannel { get; set; }
+
+ [ForeignKey("TemplateId")]
+ [InverseProperty("Guilds")]
+ public virtual Template? Template { get; set; }
+
+ [InverseProperty("SourceGuild")]
+ public virtual ICollection<Template> Templates { get; set; } = new List<Template>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<VoiceState> VoiceStates { get; set; } = new List<VoiceState>();
+
+ [InverseProperty("Guild")]
+ public virtual ICollection<Webhook> WebhookGuilds { get; set; } = new List<Webhook>();
+
+ [InverseProperty("SourceGuild")]
+ public virtual ICollection<Webhook> WebhookSourceGuilds { get; set; } = new List<Webhook>();
+
+ [ForeignKey("WidgetChannelId")]
+ [InverseProperty("GuildWidgetChannels")]
+ public virtual Channel? WidgetChannel { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/InstanceBan.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/InstanceBan.cs
new file mode 100644
index 00000000..48ff0e77
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/InstanceBan.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("instance_bans")]
+[Index("OriginInstanceBanId", Name = "REL_0b02d18d0d830f160c921192a3", IsUnique = true)]
+public partial class InstanceBan
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("reason", TypeName = "character varying")]
+ public string Reason { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("fingerprint", TypeName = "character varying")]
+ public string? Fingerprint { get; set; }
+
+ [Column("ip_address", TypeName = "character varying")]
+ public string? IpAddress { get; set; }
+
+ [Column("is_from_other_instance_ban")]
+ public bool IsFromOtherInstanceBan { get; set; }
+
+ [Column("origin_instance_ban_id", TypeName = "character varying")]
+ public string? OriginInstanceBanId { get; set; }
+
+ [Column("is_allowlisted")]
+ public bool IsAllowlisted { get; set; }
+
+ [InverseProperty("OriginInstanceBan")]
+ public virtual InstanceBan? InverseOriginInstanceBan { get; set; }
+
+ [ForeignKey("OriginInstanceBanId")]
+ [InverseProperty("InverseOriginInstanceBan")]
+ public virtual InstanceBan? OriginInstanceBan { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Invite.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Invite.cs
new file mode 100644
index 00000000..b53a397c
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Invite.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("invites")]
+public partial class Invite
+{
+ [Key]
+ [Column("code", TypeName = "character varying")]
+ public string Code { get; set; } = null!;
+
+ [Column("temporary")]
+ public bool Temporary { get; set; }
+
+ [Column("uses")]
+ public int Uses { get; set; }
+
+ [Column("max_uses")]
+ public int MaxUses { get; set; }
+
+ [Column("max_age")]
+ public int MaxAge { get; set; }
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("expires_at", TypeName = "timestamp without time zone")]
+ public DateTime? ExpiresAt { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("inviter_id", TypeName = "character varying")]
+ public string? InviterId { get; set; }
+
+ [Column("target_user_id", TypeName = "character varying")]
+ public string? TargetUserId { get; set; }
+
+ [Column("target_user_type")]
+ public int? TargetUserType { get; set; }
+
+ [Column("vanity_url")]
+ public bool? VanityUrl { get; set; }
+
+ [Column("flags")]
+ public int Flags { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("Invites")]
+ public virtual Channel? Channel { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Invites")]
+ public virtual Guild? Guild { get; set; }
+
+ [ForeignKey("InviterId")]
+ [InverseProperty("InviteInviters")]
+ public virtual User? Inviter { get; set; }
+
+ [ForeignKey("TargetUserId")]
+ [InverseProperty("InviteTargetUsers")]
+ public virtual User? TargetUser { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Member.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Member.cs
new file mode 100644
index 00000000..dfa24f31
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Member.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("members")]
+[Index("Id", "GuildId", Name = "IDX_bb2bf9386ac443afbbbf9f12d3", IsUnique = true)]
+public partial class Member
+{
+ [Key]
+ [Column("index")]
+ public int Index { get; set; }
+
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string GuildId { get; set; } = null!;
+
+ [Column("nick", TypeName = "character varying")]
+ public string? Nick { get; set; }
+
+ [Column("joined_at", TypeName = "timestamp without time zone")]
+ public DateTime JoinedAt { get; set; }
+
+ [Column("premium_since")]
+ public long? PremiumSince { get; set; }
+
+ [Column("deaf")]
+ public bool Deaf { get; set; }
+
+ [Column("mute")]
+ public bool Mute { get; set; }
+
+ [Column("pending")]
+ public bool Pending { get; set; }
+
+ [Column("settings")]
+ public string Settings { get; set; } = null!;
+
+ [Column("last_message_id", TypeName = "character varying")]
+ public string? LastMessageId { get; set; }
+
+ [Column("joined_by", TypeName = "character varying")]
+ public string? JoinedBy { get; set; }
+
+ [Column("avatar", TypeName = "character varying")]
+ public string? Avatar { get; set; }
+
+ [Column("banner", TypeName = "character varying")]
+ public string? Banner { get; set; }
+
+ [Column("bio", TypeName = "character varying")]
+ public string Bio { get; set; } = null!;
+
+ [Column("theme_colors")]
+ public string? ThemeColors { get; set; }
+
+ [Column("pronouns", TypeName = "character varying")]
+ public string? Pronouns { get; set; }
+
+ [Column("communication_disabled_until", TypeName = "timestamp without time zone")]
+ public DateTime? CommunicationDisabledUntil { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Members")]
+ public virtual Guild Guild { get; set; } = null!;
+
+ [ForeignKey("Id")]
+ [InverseProperty("Members")]
+ public virtual User IdNavigation { get; set; } = null!;
+
+ [ForeignKey("Index")]
+ [InverseProperty("Indices")]
+ public virtual ICollection<Role> Roles { get; set; } = new List<Role>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Message.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Message.cs
new file mode 100644
index 00000000..ca0abd78
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Message.cs
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("messages")]
+[Index("AuthorId", Name = "IDX_05535bc695e9f7ee104616459d")]
+[Index("ChannelId", "Id", Name = "IDX_3ed7a60fb7dbe04e1ba9332a8b", IsUnique = true)]
+[Index("ChannelId", Name = "IDX_86b9109b155eb70c0a2ca3b4b6")]
+public partial class Message
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("author_id", TypeName = "character varying")]
+ public string? AuthorId { get; set; }
+
+ [Column("member_id", TypeName = "character varying")]
+ public string? MemberId { get; set; }
+
+ [Column("webhook_id", TypeName = "character varying")]
+ public string? WebhookId { get; set; }
+
+ [Column("application_id", TypeName = "character varying")]
+ public string? ApplicationId { get; set; }
+
+ [Column("content", TypeName = "character varying")]
+ public string? Content { get; set; }
+
+ [Column("timestamp", TypeName = "timestamp without time zone")]
+ public DateTime Timestamp { get; set; }
+
+ [Column("edited_timestamp", TypeName = "timestamp without time zone")]
+ public DateTime? EditedTimestamp { get; set; }
+
+ [Column("tts")]
+ public bool? Tts { get; set; }
+
+ [Column("mention_everyone")]
+ public bool? MentionEveryone { get; set; }
+
+ [Column("embeds")]
+ public string Embeds { get; set; } = null!;
+
+ [Column("reactions")]
+ public string Reactions { get; set; } = null!;
+
+ [Column("nonce")]
+ public string? Nonce { get; set; }
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [Column("activity")]
+ public string? Activity { get; set; }
+
+ [Column("message_reference")]
+ public string? MessageReference { get; set; }
+
+ [Column("interaction")]
+ public string? Interaction { get; set; }
+
+ [Column("components")]
+ public string? Components { get; set; }
+
+ [Column("message_reference_id", TypeName = "character varying")]
+ public string? MessageReferenceId { get; set; }
+
+ [Column("flags")]
+ public int Flags { get; set; }
+
+ [Column("poll")]
+ public string? Poll { get; set; }
+
+ [Column("username", TypeName = "character varying")]
+ public string? Username { get; set; }
+
+ [Column("avatar", TypeName = "character varying")]
+ public string? Avatar { get; set; }
+
+ [Column("pinned_at", TypeName = "timestamp without time zone")]
+ public DateTime? PinnedAt { get; set; }
+
+ [Column("interaction_metadata")]
+ public string? InteractionMetadata { get; set; }
+
+ [Column("message_snapshots")]
+ public string MessageSnapshots { get; set; } = null!;
+
+ [ForeignKey("ApplicationId")]
+ [InverseProperty("Messages")]
+ public virtual Application? Application { get; set; }
+
+ [InverseProperty("Message")]
+ public virtual ICollection<Attachment> Attachments { get; set; } = new List<Attachment>();
+
+ [ForeignKey("AuthorId")]
+ [InverseProperty("MessageAuthors")]
+ public virtual User? Author { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("Messages")]
+ public virtual Channel? Channel { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Messages")]
+ public virtual Guild? Guild { get; set; }
+
+ [InverseProperty("MessageReferenceNavigation")]
+ public virtual ICollection<Message> InverseMessageReferenceNavigation { get; set; } = new List<Message>();
+
+ [ForeignKey("MemberId")]
+ [InverseProperty("MessageMembers")]
+ public virtual User? Member { get; set; }
+
+ [ForeignKey("MessageReferenceId")]
+ [InverseProperty("InverseMessageReferenceNavigation")]
+ public virtual Message? MessageReferenceNavigation { get; set; }
+
+ [ForeignKey("WebhookId")]
+ [InverseProperty("Messages")]
+ public virtual Webhook? Webhook { get; set; }
+
+ [ForeignKey("MessagesId")]
+ [InverseProperty("MessagesNavigation")]
+ public virtual ICollection<Channel> Channels { get; set; } = new List<Channel>();
+
+ [ForeignKey("MessagesId")]
+ [InverseProperty("Messages")]
+ public virtual ICollection<Role> Roles { get; set; } = new List<Role>();
+
+ [ForeignKey("MessagesId")]
+ [InverseProperty("Messages")]
+ public virtual ICollection<Sticker> Stickers { get; set; } = new List<Sticker>();
+
+ [ForeignKey("MessagesId")]
+ [InverseProperty("Messages")]
+ public virtual ICollection<User> Users { get; set; } = new List<User>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Migration.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Migration.cs
new file mode 100644
index 00000000..d5748e51
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Migration.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("migrations")]
+public partial class Migration
+{
+ [Key]
+ [Column("id")]
+ public int Id { get; set; }
+
+ [Column("timestamp")]
+ public long Timestamp { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Note.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Note.cs
new file mode 100644
index 00000000..38b230f9
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Note.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("notes")]
+[Index("OwnerId", "TargetId", Name = "UQ_74e6689b9568cc965b8bfc9150b", IsUnique = true)]
+public partial class Note
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("content", TypeName = "character varying")]
+ public string Content { get; set; } = null!;
+
+ [Column("owner_id", TypeName = "character varying")]
+ public string? OwnerId { get; set; }
+
+ [Column("target_id", TypeName = "character varying")]
+ public string? TargetId { get; set; }
+
+ [ForeignKey("OwnerId")]
+ [InverseProperty("NoteOwners")]
+ public virtual User? Owner { get; set; }
+
+ [ForeignKey("TargetId")]
+ [InverseProperty("NoteTargets")]
+ public virtual User? Target { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/RateLimit.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/RateLimit.cs
new file mode 100644
index 00000000..9748832d
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/RateLimit.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("rate_limits")]
+public partial class RateLimit
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("executor_id", TypeName = "character varying")]
+ public string ExecutorId { get; set; } = null!;
+
+ [Column("hits")]
+ public int Hits { get; set; }
+
+ [Column("blocked")]
+ public bool Blocked { get; set; }
+
+ [Column("expires_at", TypeName = "timestamp without time zone")]
+ public DateTime ExpiresAt { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ReadState.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ReadState.cs
new file mode 100644
index 00000000..43bc0ac7
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ReadState.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("read_states")]
+[Index("ChannelId", "UserId", Name = "IDX_0abf8b443321bd3cf7f81ee17a", IsUnique = true)]
+public partial class ReadState
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string ChannelId { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string UserId { get; set; } = null!;
+
+ [Column("last_message_id", TypeName = "character varying")]
+ public string? LastMessageId { get; set; }
+
+ [Column("public_ack", TypeName = "character varying")]
+ public string? PublicAck { get; set; }
+
+ [Column("notifications_cursor", TypeName = "character varying")]
+ public string? NotificationsCursor { get; set; }
+
+ [Column("last_pin_timestamp", TypeName = "timestamp without time zone")]
+ public DateTime? LastPinTimestamp { get; set; }
+
+ [Column("mention_count")]
+ public int? MentionCount { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("ReadStates")]
+ public virtual Channel Channel { get; set; } = null!;
+
+ [ForeignKey("UserId")]
+ [InverseProperty("ReadStates")]
+ public virtual User User { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Recipient.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Recipient.cs
new file mode 100644
index 00000000..50fa20ca
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Recipient.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("recipients")]
+public partial class Recipient
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string ChannelId { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string UserId { get; set; } = null!;
+
+ [Column("closed")]
+ public bool Closed { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("Recipients")]
+ public virtual Channel Channel { get; set; } = null!;
+
+ [ForeignKey("UserId")]
+ [InverseProperty("Recipients")]
+ public virtual User User { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Relationship.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Relationship.cs
new file mode 100644
index 00000000..799c9ae6
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Relationship.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("relationships")]
+[Index("FromId", "ToId", Name = "IDX_a0b2ff0a598df0b0d055934a17", IsUnique = true)]
+public partial class Relationship
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("from_id", TypeName = "character varying")]
+ public string FromId { get; set; } = null!;
+
+ [Column("to_id", TypeName = "character varying")]
+ public string ToId { get; set; } = null!;
+
+ [Column("nickname", TypeName = "character varying")]
+ public string? Nickname { get; set; }
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [ForeignKey("FromId")]
+ [InverseProperty("RelationshipFroms")]
+ public virtual User From { get; set; } = null!;
+
+ [ForeignKey("ToId")]
+ [InverseProperty("RelationshipTos")]
+ public virtual User To { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Role.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Role.cs
new file mode 100644
index 00000000..a57875c0
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Role.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("roles")]
+public partial class Role
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string GuildId { get; set; } = null!;
+
+ [Column("color")]
+ public int Color { get; set; }
+
+ [Column("hoist")]
+ public bool Hoist { get; set; }
+
+ [Column("managed")]
+ public bool Managed { get; set; }
+
+ [Column("mentionable")]
+ public bool Mentionable { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("permissions", TypeName = "character varying")]
+ public string Permissions { get; set; } = null!;
+
+ [Column("position")]
+ public int Position { get; set; }
+
+ [Column("icon", TypeName = "character varying")]
+ public string? Icon { get; set; }
+
+ [Column("unicode_emoji", TypeName = "character varying")]
+ public string? UnicodeEmoji { get; set; }
+
+ [Column("tags")]
+ public string? Tags { get; set; }
+
+ [Column("flags")]
+ public int Flags { get; set; }
+
+ [Column("colors")]
+ public string Colors { get; set; } = null!;
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Roles")]
+ public virtual Guild Guild { get; set; } = null!;
+
+ [ForeignKey("RoleId")]
+ [InverseProperty("Roles")]
+ public virtual ICollection<Member> Indices { get; set; } = new List<Member>();
+
+ [ForeignKey("RolesId")]
+ [InverseProperty("Roles")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/SecurityKey.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/SecurityKey.cs
new file mode 100644
index 00000000..a7a962e3
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/SecurityKey.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("security_keys")]
+public partial class SecurityKey
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("key_id", TypeName = "character varying")]
+ public string KeyId { get; set; } = null!;
+
+ [Column("public_key", TypeName = "character varying")]
+ public string PublicKey { get; set; } = null!;
+
+ [Column("counter")]
+ public int Counter { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [ForeignKey("UserId")]
+ [InverseProperty("SecurityKeys")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/SecuritySetting.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/SecuritySetting.cs
new file mode 100644
index 00000000..cb52206a
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/SecuritySetting.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("security_settings")]
+public partial class SecuritySetting
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("encryption_permission_mask")]
+ public int EncryptionPermissionMask { get; set; }
+
+ [Column("allowed_algorithms")]
+ public string AllowedAlgorithms { get; set; } = null!;
+
+ [Column("current_algorithm", TypeName = "character varying")]
+ public string CurrentAlgorithm { get; set; } = null!;
+
+ [Column("used_since_message", TypeName = "character varying")]
+ public string? UsedSinceMessage { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Session.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Session.cs
new file mode 100644
index 00000000..31c559d9
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Session.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("sessions")]
+[Index("UserId", Name = "IDX_085d540d9f418cfbdc7bd55bb1")]
+public partial class Session
+{
+ [Column("user_id", TypeName = "character varying")]
+ public string UserId { get; set; } = null!;
+
+ [Key]
+ [Column("session_id", TypeName = "character varying")]
+ public string SessionId { get; set; } = null!;
+
+ [Column("activities")]
+ public string Activities { get; set; } = null!;
+
+ [Column("client_info")]
+ public string ClientInfo { get; set; } = null!;
+
+ [Column("status", TypeName = "character varying")]
+ public string Status { get; set; } = null!;
+
+ [Column("client_status")]
+ public string ClientStatus { get; set; } = null!;
+
+ [Column("is_admin_session")]
+ public bool IsAdminSession { get; set; }
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("last_seen", TypeName = "timestamp without time zone")]
+ public DateTime? LastSeen { get; set; }
+
+ [Column("last_seen_ip", TypeName = "character varying")]
+ public string? LastSeenIp { get; set; }
+
+ [Column("last_seen_location", TypeName = "character varying")]
+ public string? LastSeenLocation { get; set; }
+
+ [Column("last_seen_location_info")]
+ public string? LastSeenLocationInfo { get; set; }
+
+ [Column("session_nickname", TypeName = "character varying")]
+ public string? SessionNickname { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("Sessions")]
+ public virtual User User { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Sticker.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Sticker.cs
new file mode 100644
index 00000000..048d3a01
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Sticker.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("stickers")]
+public partial class Sticker
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("description", TypeName = "character varying")]
+ public string? Description { get; set; }
+
+ [Column("available")]
+ public bool? Available { get; set; }
+
+ [Column("tags", TypeName = "character varying")]
+ public string? Tags { get; set; }
+
+ [Column("pack_id", TypeName = "character varying")]
+ public string? PackId { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [Column("format_type")]
+ public int FormatType { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("Stickers")]
+ public virtual Guild? Guild { get; set; }
+
+ [ForeignKey("PackId")]
+ [InverseProperty("Stickers")]
+ public virtual StickerPack? Pack { get; set; }
+
+ [InverseProperty("CoverStickerId1Navigation")]
+ public virtual ICollection<StickerPack> StickerPacks { get; set; } = new List<StickerPack>();
+
+ [ForeignKey("UserId")]
+ [InverseProperty("Stickers")]
+ public virtual User? User { get; set; }
+
+ [ForeignKey("StickersId")]
+ [InverseProperty("Stickers")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/StickerPack.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/StickerPack.cs
new file mode 100644
index 00000000..96369f8a
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/StickerPack.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("sticker_packs")]
+public partial class StickerPack
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("description", TypeName = "character varying")]
+ public string? Description { get; set; }
+
+ [Column("banner_asset_id", TypeName = "character varying")]
+ public string? BannerAssetId { get; set; }
+
+ [Column("cover_sticker_id", TypeName = "character varying")]
+ public string? CoverStickerId { get; set; }
+
+ [Column("coverStickerId", TypeName = "character varying")]
+ public string? CoverStickerId1 { get; set; }
+
+ [ForeignKey("CoverStickerId1")]
+ [InverseProperty("StickerPacks")]
+ public virtual Sticker? CoverStickerId1Navigation { get; set; }
+
+ [InverseProperty("Pack")]
+ public virtual ICollection<Sticker> Stickers { get; set; } = new List<Sticker>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Stream.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Stream.cs
new file mode 100644
index 00000000..db1b2cb8
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Stream.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("streams")]
+public partial class Stream
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("owner_id", TypeName = "character varying")]
+ public string OwnerId { get; set; } = null!;
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string ChannelId { get; set; } = null!;
+
+ [Column("endpoint", TypeName = "character varying")]
+ public string Endpoint { get; set; } = null!;
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("Streams")]
+ public virtual Channel Channel { get; set; } = null!;
+
+ [ForeignKey("OwnerId")]
+ [InverseProperty("Streams")]
+ public virtual User Owner { get; set; } = null!;
+
+ [InverseProperty("Stream")]
+ public virtual ICollection<StreamSession> StreamSessions { get; set; } = new List<StreamSession>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/StreamSession.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/StreamSession.cs
new file mode 100644
index 00000000..cbc64dc6
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/StreamSession.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("stream_sessions")]
+public partial class StreamSession
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("stream_id", TypeName = "character varying")]
+ public string StreamId { get; set; } = null!;
+
+ [Column("user_id", TypeName = "character varying")]
+ public string UserId { get; set; } = null!;
+
+ [Column("token", TypeName = "character varying")]
+ public string? Token { get; set; }
+
+ [Column("session_id", TypeName = "character varying")]
+ public string SessionId { get; set; } = null!;
+
+ [Column("used")]
+ public bool Used { get; set; }
+
+ [ForeignKey("StreamId")]
+ [InverseProperty("StreamSessions")]
+ public virtual Stream Stream { get; set; } = null!;
+
+ [ForeignKey("UserId")]
+ [InverseProperty("StreamSessions")]
+ public virtual User User { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Team.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Team.cs
new file mode 100644
index 00000000..3443ad3b
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Team.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("teams")]
+public partial class Team
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("icon", TypeName = "character varying")]
+ public string? Icon { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("owner_user_id", TypeName = "character varying")]
+ public string? OwnerUserId { get; set; }
+
+ [InverseProperty("Team")]
+ public virtual ICollection<Application> Applications { get; set; } = new List<Application>();
+
+ [ForeignKey("OwnerUserId")]
+ [InverseProperty("Teams")]
+ public virtual User? OwnerUser { get; set; }
+
+ [InverseProperty("Team")]
+ public virtual ICollection<TeamMember> TeamMembers { get; set; } = new List<TeamMember>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/TeamMember.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/TeamMember.cs
new file mode 100644
index 00000000..106ddee9
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/TeamMember.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("team_members")]
+public partial class TeamMember
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("membership_state")]
+ public int MembershipState { get; set; }
+
+ [Column("permissions")]
+ public string Permissions { get; set; } = null!;
+
+ [Column("team_id", TypeName = "character varying")]
+ public string? TeamId { get; set; }
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("role", TypeName = "character varying")]
+ public string Role { get; set; } = null!;
+
+ [ForeignKey("TeamId")]
+ [InverseProperty("TeamMembers")]
+ public virtual Team? Team { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("TeamMembers")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Template.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Template.cs
new file mode 100644
index 00000000..4c65ed93
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Template.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("templates")]
+[Index("Code", Name = "UQ_be38737bf339baf63b1daeffb55", IsUnique = true)]
+public partial class Template
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("code", TypeName = "character varying")]
+ public string Code { get; set; } = null!;
+
+ [Column("name", TypeName = "character varying")]
+ public string Name { get; set; } = null!;
+
+ [Column("description", TypeName = "character varying")]
+ public string? Description { get; set; }
+
+ [Column("usage_count")]
+ public int? UsageCount { get; set; }
+
+ [Column("creator_id", TypeName = "character varying")]
+ public string? CreatorId { get; set; }
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("updated_at", TypeName = "timestamp without time zone")]
+ public DateTime UpdatedAt { get; set; }
+
+ [Column("source_guild_id", TypeName = "character varying")]
+ public string? SourceGuildId { get; set; }
+
+ [Column("serialized_source_guild")]
+ public string SerializedSourceGuild { get; set; } = null!;
+
+ [ForeignKey("CreatorId")]
+ [InverseProperty("Templates")]
+ public virtual User? Creator { get; set; }
+
+ [InverseProperty("Template")]
+ public virtual ICollection<Guild> Guilds { get; set; } = new List<Guild>();
+
+ [ForeignKey("SourceGuildId")]
+ [InverseProperty("Templates")]
+ public virtual Guild? SourceGuild { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/User.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/User.cs
new file mode 100644
index 00000000..242402b2
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/User.cs
@@ -0,0 +1,234 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("users")]
+[Index("SettingsIndex", Name = "REL_0c14beb78d8c5ccba66072adbc", IsUnique = true)]
+public partial class User
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("username", TypeName = "character varying")]
+ public string Username { get; set; } = null!;
+
+ [Column("discriminator", TypeName = "character varying")]
+ public string Discriminator { get; set; } = null!;
+
+ [Column("avatar", TypeName = "character varying")]
+ public string? Avatar { get; set; }
+
+ [Column("accent_color")]
+ public int? AccentColor { get; set; }
+
+ [Column("banner", TypeName = "character varying")]
+ public string? Banner { get; set; }
+
+ [Column("theme_colors")]
+ public string? ThemeColors { get; set; }
+
+ [Column("pronouns", TypeName = "character varying")]
+ public string? Pronouns { get; set; }
+
+ [Column("phone", TypeName = "character varying")]
+ public string? Phone { get; set; }
+
+ [Column("desktop")]
+ public bool Desktop { get; set; }
+
+ [Column("mobile")]
+ public bool Mobile { get; set; }
+
+ [Column("premium")]
+ public bool Premium { get; set; }
+
+ [Column("premium_type")]
+ public int PremiumType { get; set; }
+
+ [Column("bot")]
+ public bool Bot { get; set; }
+
+ [Column("bio", TypeName = "character varying")]
+ public string Bio { get; set; } = null!;
+
+ [Column("system")]
+ public bool System { get; set; }
+
+ [Column("nsfw_allowed")]
+ public bool NsfwAllowed { get; set; }
+
+ [Column("mfa_enabled")]
+ public bool MfaEnabled { get; set; }
+
+ [Column("totp_secret", TypeName = "character varying")]
+ public string? TotpSecret { get; set; }
+
+ [Column("totp_last_ticket", TypeName = "character varying")]
+ public string? TotpLastTicket { get; set; }
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("premium_since", TypeName = "timestamp without time zone")]
+ public DateTime? PremiumSince { get; set; }
+
+ [Column("verified")]
+ public bool Verified { get; set; }
+
+ [Column("disabled")]
+ public bool Disabled { get; set; }
+
+ [Column("deleted")]
+ public bool Deleted { get; set; }
+
+ [Column("email", TypeName = "character varying")]
+ public string? Email { get; set; }
+
+ [Column("flags", TypeName = "character varying")]
+ public ulong Flags { get; set; }
+
+ [Column("public_flags")]
+ public ulong PublicFlags { get; set; }
+
+ [Column("purchased_flags")]
+ public long PurchasedFlags { get; set; }
+
+ [Column("premium_usage_flags")]
+ public int PremiumUsageFlags { get; set; }
+
+ [Column("rights")]
+ public ulong Rights { get; set; }
+
+ [Column("data")]
+ public string Data { get; set; } = null!;
+
+ [Column("fingerprints")]
+ public string Fingerprints { get; set; } = null!;
+
+ [Column("settingsIndex")]
+ public int? SettingsIndex { get; set; }
+
+ [Column("webauthn_enabled")]
+ public bool WebauthnEnabled { get; set; }
+
+ [Column("badge_ids")]
+ public string? BadgeIds { get; set; }
+
+ [InverseProperty("BotUser")]
+ public virtual Application? ApplicationBotUser { get; set; }
+
+ [InverseProperty("Owner")]
+ public virtual ICollection<Application> ApplicationOwners { get; set; } = new List<Application>();
+
+ [InverseProperty("Target")]
+ public virtual ICollection<AuditLog> AuditLogTargets { get; set; } = new List<AuditLog>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<AuditLog> AuditLogUsers { get; set; } = new List<AuditLog>();
+
+ [InverseProperty("Creator")]
+ public virtual ICollection<AutomodRule> AutomodRules { get; set; } = new List<AutomodRule>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<BackupCode> BackupCodes { get; set; } = new List<BackupCode>();
+
+ [InverseProperty("Executor")]
+ public virtual ICollection<Ban> BanExecutors { get; set; } = new List<Ban>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<Ban> BanUsers { get; set; } = new List<Ban>();
+
+ [InverseProperty("Owner")]
+ public virtual ICollection<Channel> Channels { get; set; } = new List<Channel>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<CloudAttachment> CloudAttachments { get; set; } = new List<CloudAttachment>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<ConnectedAccount> ConnectedAccounts { get; set; } = new List<ConnectedAccount>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<Emoji> Emojis { get; set; } = new List<Emoji>();
+
+ [InverseProperty("Owner")]
+ public virtual ICollection<Guild> Guilds { get; set; } = new List<Guild>();
+
+ [InverseProperty("Inviter")]
+ public virtual ICollection<Invite> InviteInviters { get; set; } = new List<Invite>();
+
+ [InverseProperty("TargetUser")]
+ public virtual ICollection<Invite> InviteTargetUsers { get; set; } = new List<Invite>();
+
+ [InverseProperty("IdNavigation")]
+ public virtual ICollection<Member> Members { get; set; } = new List<Member>();
+
+ [InverseProperty("Author")]
+ public virtual ICollection<Message> MessageAuthors { get; set; } = new List<Message>();
+
+ [InverseProperty("Member")]
+ public virtual ICollection<Message> MessageMembers { get; set; } = new List<Message>();
+
+ [InverseProperty("Owner")]
+ public virtual ICollection<Note> NoteOwners { get; set; } = new List<Note>();
+
+ [InverseProperty("Target")]
+ public virtual ICollection<Note> NoteTargets { get; set; } = new List<Note>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<ReadState> ReadStates { get; set; } = new List<ReadState>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<Recipient> Recipients { get; set; } = new List<Recipient>();
+
+ [InverseProperty("From")]
+ public virtual ICollection<Relationship> RelationshipFroms { get; set; } = new List<Relationship>();
+
+ [InverseProperty("To")]
+ public virtual ICollection<Relationship> RelationshipTos { get; set; } = new List<Relationship>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<SecurityKey> SecurityKeys { get; set; } = new List<SecurityKey>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<Session> Sessions { get; set; } = new List<Session>();
+
+ [ForeignKey("SettingsIndex")]
+ [InverseProperty("User")]
+ public virtual UserSetting? SettingsIndexNavigation { get; set; }
+
+ [InverseProperty("User")]
+ public virtual ICollection<Sticker> Stickers { get; set; } = new List<Sticker>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<StreamSession> StreamSessions { get; set; } = new List<StreamSession>();
+
+ [InverseProperty("Owner")]
+ public virtual ICollection<Stream> Streams { get; set; } = new List<Stream>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<TeamMember> TeamMembers { get; set; } = new List<TeamMember>();
+
+ [InverseProperty("OwnerUser")]
+ public virtual ICollection<Team> Teams { get; set; } = new List<Team>();
+
+ [InverseProperty("Creator")]
+ public virtual ICollection<Template> Templates { get; set; } = new List<Template>();
+
+ [InverseProperty("User")]
+ public virtual UserSettingsProto? UserSettingsProto { get; set; }
+
+ [InverseProperty("User")]
+ public virtual ICollection<VoiceState> VoiceStates { get; set; } = new List<VoiceState>();
+
+ [InverseProperty("User")]
+ public virtual ICollection<Webhook> Webhooks { get; set; } = new List<Webhook>();
+
+ [ForeignKey("UsersId")]
+ [InverseProperty("Users")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSetting.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSetting.cs
new file mode 100644
index 00000000..a8d6d91c
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSetting.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("user_settings")]
+public partial class UserSetting
+{
+ [Key]
+ [Column("index")]
+ public int Index { get; set; }
+
+ [Column("afk_timeout")]
+ public int? AfkTimeout { get; set; }
+
+ [Column("allow_accessibility_detection")]
+ public bool? AllowAccessibilityDetection { get; set; }
+
+ [Column("animate_emoji")]
+ public bool? AnimateEmoji { get; set; }
+
+ [Column("animate_stickers")]
+ public int? AnimateStickers { get; set; }
+
+ [Column("contact_sync_enabled")]
+ public bool? ContactSyncEnabled { get; set; }
+
+ [Column("convert_emoticons")]
+ public bool? ConvertEmoticons { get; set; }
+
+ [Column("custom_status")]
+ public string? CustomStatus { get; set; }
+
+ [Column("default_guilds_restricted")]
+ public bool? DefaultGuildsRestricted { get; set; }
+
+ [Column("detect_platform_accounts")]
+ public bool? DetectPlatformAccounts { get; set; }
+
+ [Column("developer_mode")]
+ public bool? DeveloperMode { get; set; }
+
+ [Column("disable_games_tab")]
+ public bool? DisableGamesTab { get; set; }
+
+ [Column("enable_tts_command")]
+ public bool? EnableTtsCommand { get; set; }
+
+ [Column("explicit_content_filter")]
+ public int? ExplicitContentFilter { get; set; }
+
+ [Column("friend_source_flags")]
+ public string? FriendSourceFlags { get; set; }
+
+ [Column("gateway_connected")]
+ public bool? GatewayConnected { get; set; }
+
+ [Column("gif_auto_play")]
+ public bool? GifAutoPlay { get; set; }
+
+ [Column("guild_folders")]
+ public string? GuildFolders { get; set; }
+
+ [Column("guild_positions")]
+ public string? GuildPositions { get; set; }
+
+ [Column("inline_attachment_media")]
+ public bool? InlineAttachmentMedia { get; set; }
+
+ [Column("inline_embed_media")]
+ public bool? InlineEmbedMedia { get; set; }
+
+ [Column("locale", TypeName = "character varying")]
+ public string? Locale { get; set; }
+
+ [Column("message_display_compact")]
+ public bool? MessageDisplayCompact { get; set; }
+
+ [Column("native_phone_integration_enabled")]
+ public bool? NativePhoneIntegrationEnabled { get; set; }
+
+ [Column("render_embeds")]
+ public bool? RenderEmbeds { get; set; }
+
+ [Column("render_reactions")]
+ public bool? RenderReactions { get; set; }
+
+ [Column("restricted_guilds")]
+ public string? RestrictedGuilds { get; set; }
+
+ [Column("show_current_game")]
+ public bool? ShowCurrentGame { get; set; }
+
+ [Column("status", TypeName = "character varying")]
+ public string? Status { get; set; }
+
+ [Column("stream_notifications_enabled")]
+ public bool? StreamNotificationsEnabled { get; set; }
+
+ [Column("theme", TypeName = "character varying")]
+ public string? Theme { get; set; }
+
+ [Column("timezone_offset")]
+ public int? TimezoneOffset { get; set; }
+
+ [Column("friend_discovery_flags")]
+ public int? FriendDiscoveryFlags { get; set; }
+
+ [Column("view_nsfw_guilds")]
+ public bool? ViewNsfwGuilds { get; set; }
+
+ [InverseProperty("SettingsIndexNavigation")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSettingsProto.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSettingsProto.cs
new file mode 100644
index 00000000..1e458592
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/UserSettingsProto.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("user_settings_protos")]
+public partial class UserSettingsProto
+{
+ [Key]
+ [Column("user_id", TypeName = "character varying")]
+ public string UserId { get; set; } = null!;
+
+ [Column("userSettings", TypeName = "character varying")]
+ public string? UserSettings { get; set; }
+
+ [Column("frecencySettings", TypeName = "character varying")]
+ public string? FrecencySettings { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("UserSettingsProto")]
+ public virtual User User { get; set; } = null!;
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/ValidRegistrationToken.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/ValidRegistrationToken.cs
new file mode 100644
index 00000000..32c2b30a
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/ValidRegistrationToken.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("valid_registration_tokens")]
+public partial class ValidRegistrationToken
+{
+ [Key]
+ [Column("token", TypeName = "character varying")]
+ public string Token { get; set; } = null!;
+
+ [Column("created_at", TypeName = "timestamp without time zone")]
+ public DateTime CreatedAt { get; set; }
+
+ [Column("expires_at", TypeName = "timestamp without time zone")]
+ public DateTime ExpiresAt { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/VoiceState.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/VoiceState.cs
new file mode 100644
index 00000000..f1d8504d
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/VoiceState.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("voice_states")]
+public partial class VoiceState
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("session_id", TypeName = "character varying")]
+ public string SessionId { get; set; } = null!;
+
+ [Column("token", TypeName = "character varying")]
+ public string? Token { get; set; }
+
+ [Column("deaf")]
+ public bool Deaf { get; set; }
+
+ [Column("mute")]
+ public bool Mute { get; set; }
+
+ [Column("self_deaf")]
+ public bool SelfDeaf { get; set; }
+
+ [Column("self_mute")]
+ public bool SelfMute { get; set; }
+
+ [Column("self_stream")]
+ public bool? SelfStream { get; set; }
+
+ [Column("self_video")]
+ public bool SelfVideo { get; set; }
+
+ [Column("suppress")]
+ public bool Suppress { get; set; }
+
+ [Column("request_to_speak_timestamp", TypeName = "timestamp without time zone")]
+ public DateTime? RequestToSpeakTimestamp { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("VoiceStates")]
+ public virtual Channel? Channel { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("VoiceStates")]
+ public virtual Guild? Guild { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("VoiceStates")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Models/Webhook.cs b/extra/admin-api/Models/Spacebar.Models.Db/Models/Webhook.cs
new file mode 100644
index 00000000..122db3aa
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Models/Webhook.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Spacebar.Models.Db.Models;
+
+[Table("webhooks")]
+public partial class Webhook
+{
+ [Key]
+ [Column("id", TypeName = "character varying")]
+ public string Id { get; set; } = null!;
+
+ [Column("type")]
+ public int Type { get; set; }
+
+ [Column("name", TypeName = "character varying")]
+ public string? Name { get; set; }
+
+ [Column("avatar", TypeName = "character varying")]
+ public string? Avatar { get; set; }
+
+ [Column("token", TypeName = "character varying")]
+ public string? Token { get; set; }
+
+ [Column("guild_id", TypeName = "character varying")]
+ public string? GuildId { get; set; }
+
+ [Column("channel_id", TypeName = "character varying")]
+ public string? ChannelId { get; set; }
+
+ [Column("application_id", TypeName = "character varying")]
+ public string? ApplicationId { get; set; }
+
+ [Column("user_id", TypeName = "character varying")]
+ public string? UserId { get; set; }
+
+ [Column("source_guild_id", TypeName = "character varying")]
+ public string? SourceGuildId { get; set; }
+
+ [Column("source_channel_id", TypeName = "character varying")]
+ public string? SourceChannelId { get; set; }
+
+ [ForeignKey("ApplicationId")]
+ [InverseProperty("Webhooks")]
+ public virtual Application? Application { get; set; }
+
+ [ForeignKey("ChannelId")]
+ [InverseProperty("WebhookChannels")]
+ public virtual Channel? Channel { get; set; }
+
+ [ForeignKey("GuildId")]
+ [InverseProperty("WebhookGuilds")]
+ public virtual Guild? Guild { get; set; }
+
+ [InverseProperty("Webhook")]
+ public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
+
+ [ForeignKey("SourceChannelId")]
+ [InverseProperty("WebhookSourceChannels")]
+ public virtual Channel? SourceChannel { get; set; }
+
+ [ForeignKey("SourceGuildId")]
+ [InverseProperty("WebhookSourceGuilds")]
+ public virtual Guild? SourceGuild { get; set; }
+
+ [ForeignKey("UserId")]
+ [InverseProperty("Webhooks")]
+ public virtual User? User { get; set; }
+}
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/Spacebar.Models.Db.csproj b/extra/admin-api/Models/Spacebar.Models.Db/Spacebar.Models.Db.csproj
new file mode 100644
index 00000000..2d1dcaf5
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/Spacebar.Models.Db.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net10.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="*" />
+ <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="*" />
+ </ItemGroup>
+
+</Project>
diff --git a/extra/admin-api/Models/Spacebar.Models.Db/deps.json b/extra/admin-api/Models/Spacebar.Models.Db/deps.json
new file mode 100644
index 00000000..c978dd1b
--- /dev/null
+++ b/extra/admin-api/Models/Spacebar.Models.Db/deps.json
@@ -0,0 +1,362 @@
+[
+ {
+ "pname": "Humanizer.Core",
+ "version": "2.14.1",
+ "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
+ },
+ {
+ "pname": "Microsoft.Build",
+ "version": "17.7.2",
+ "hash": "sha256-k35nFdPxC8t0zAltVSmAJtsepp/ubNIjPOsJ6k8jSqM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.14.28",
+ "hash": "sha256-7RzEyIipumafwLW1xN1q23114NafG6PT0+RADElNsiM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.7.2",
+ "hash": "sha256-fNWmVQYFTJDveAGmxEdNqJRAczV6+Ep8RA8clKBJFqw="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.14.28",
+ "hash": "sha256-M9zRXYijH2HtLlRXbrUK1a1LQ9zkT+DC9ZmMiiVZwv0="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.7.2",
+ "hash": "sha256-OrV/qWgZHzGlNUmaSfX5wDBcmg1aQeF3/OUHpSH+uZU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.14.28",
+ "hash": "sha256-VFfO+UpyTpw2X/qiCCOCYzvMLuu7B+XVSSpJZQLkPzU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.7.2",
+ "hash": "sha256-oatF0KfuP1nb4+OLNKg2/R/ZLO4EiACaO5leaxMEY4A="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Analyzers",
+ "version": "3.11.0",
+ "hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Common",
+ "version": "4.14.0",
+ "hash": "sha256-ne/zxH3GqoGB4OemnE8oJElG5mai+/67ASaKqwmL2BE="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp",
+ "version": "4.14.0",
+ "hash": "sha256-5Mzj3XkYYLkwDWh17r1NEXSbXwwWYQPiOmkSMlgo1JY="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces",
+ "version": "4.14.0",
+ "hash": "sha256-aNbV1a0yYBs0fpQawG6LXcbyoE8en+YFSpV5vcYE4J4="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.Common",
+ "version": "4.14.0",
+ "hash": "sha256-0YfeaJe01WBUm9avy4a8FacQJXA1NkpnDpiXu4yz88I="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
+ "version": "4.14.0",
+ "hash": "sha256-5SJfpRqzqCK0UbkmAaJpA/r1XJb0YAriMMeQHYC4d+o="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.0",
+ "hash": "sha256-xfgrlxhtOkQwF5Q7j8gSm41URJiH8IuJ/T/Dh88++hE="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.1",
+ "hash": "sha256-IxA+/nDA6hZkUm9bDT6bRu8+9qeHA3gbTvIhR9Ncg4w="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-FMGXhAAgcVSedV0/GmUVqAwoiRzFJil9mQYr6eNgowg="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.0",
+ "hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.1",
+ "hash": "sha256-O949vr98WoSRXtiIo0ZI6dz2cibIBKbiuC+mQOe9bV4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Design",
+ "version": "10.0.1",
+ "hash": "sha256-GGNZIGNEMhSGaMRFkRN4bOuCUBs5YVnX8klXarm319U="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.0",
+ "hash": "sha256-vOP2CE5YA551BlpbOuIy6RuAiAEPEpCVS1cEE33/zN4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.1",
+ "hash": "sha256-zLgxr/iW9HP8Fip1IDgr7X0Ar8OWKDvVmoEt65gG6VY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-qVLAEqxPK/dNq+z1a6D9NqdcSg/18sfzZhlBWMkqV/A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.0",
+ "hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.1",
+ "hash": "sha256-Qb7xK6VEZDas0lJFaW1suKdFjtkSYwLHHxkQEfWIU2A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-s4PDp+vtzdxKIxnOT3+dDRoTDopyl8kqmmw4KDnkOtQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.1",
+ "hash": "sha256-RKOB+zPrtQNUbJY/1jR54rKOM8KHPgynPExxugku3I8="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "9.0.0",
+ "hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-zNUpau51ds7iQTaSUTFtyTHIUoinYc129W50CnufMdQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyModel",
+ "version": "10.0.1",
+ "hash": "sha256-XIj2jEURe25YA4RhBSuCqQpic0YP+TZaO/dbBPCjad8="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.0",
+ "hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.1",
+ "hash": "sha256-zuLP3SIpCToMOlIPOEv3Kq8y/minecd8k8GSkxFo13E="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "9.0.0",
+ "hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-NRk0feNE1fgi/hyO0AVDbSGJQRT+9yte6Lpm4Hz/2Bs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.1",
+ "hash": "sha256-vBiSS1vqAC7eDrpJNT4H3A9qLikCSAepnNRbry0mKnk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "9.0.0",
+ "hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.1",
+ "hash": "sha256-EXmukq09erT4s+miQpBSYy3IY4HxxKlwEPL43/KoyEc="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "9.0.0",
+ "hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.14.28",
+ "hash": "sha256-UzREyvDxkiOQ4cEOQ5UCjkwXGrldIDCcbefECTPGjXI="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.7.2",
+ "hash": "sha256-hQE07TCgcQuyu9ZHVq2gPDb0+xe8ECJUdrgh17bJP4o="
+ },
+ {
+ "pname": "Mono.TextTemplating",
+ "version": "3.0.0",
+ "hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.3",
+ "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
+ },
+ {
+ "pname": "Npgsql",
+ "version": "10.0.0",
+ "hash": "sha256-UVKz9dH/rVCCbMyFdqA31RYpht1XgDRLIqUy0Dp9ACQ="
+ },
+ {
+ "pname": "Npgsql.EntityFrameworkCore.PostgreSQL",
+ "version": "10.0.0",
+ "hash": "sha256-XIJxnTMektQVP1qtslEIGbmBGrIQsvjQjCMRTs9UIbg="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "6.0.0",
+ "hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "7.0.0",
+ "hash": "sha256-7IPt39cY+0j0ZcRr/J45xPtEjnSXdUJ/5ai3ebaYQiE="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "9.0.0",
+ "hash": "sha256-578lcBgswW0eM16r0EnJzfGodPx86RxxFoZHc2PSzsw="
+ },
+ {
+ "pname": "System.Composition",
+ "version": "9.0.0",
+ "hash": "sha256-FehOkQ2u1p8mQ0/wn3cZ+24HjhTLdck8VZYWA1CcgbM="
+ },
+ {
+ "pname": "System.Composition.AttributedModel",
+ "version": "9.0.0",
+ "hash": "sha256-a7y7H6zj+kmYkllNHA402DoVfY9IaqC3Ooys8Vzl24M="
+ },
+ {
+ "pname": "System.Composition.Convention",
+ "version": "9.0.0",
+ "hash": "sha256-tw4vE5JRQ60ubTZBbxoMPhtjOQCC3XoDFUH7NHO7o8U="
+ },
+ {
+ "pname": "System.Composition.Hosting",
+ "version": "9.0.0",
+ "hash": "sha256-oOxU+DPEEfMCuNLgW6wSkZp0JY5gYt44FJNnWt+967s="
+ },
+ {
+ "pname": "System.Composition.Runtime",
+ "version": "9.0.0",
+ "hash": "sha256-AyIe+di1TqwUBbSJ/sJ8Q8tzsnTN+VBdJw4K8xZz43s="
+ },
+ {
+ "pname": "System.Composition.TypedParts",
+ "version": "9.0.0",
+ "hash": "sha256-F5fpTUs3Rr7yP/NyIzr+Xn5NdTXXp8rrjBnF9UBBUog="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "7.0.0",
+ "hash": "sha256-SgBexTTjRn23uuXvkzO0mz0qOfA23MiS4Wv+qepMLZE="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "9.0.0",
+ "hash": "sha256-+pLnTC0YDP6Kjw5DVBiFrV/Q3x5is/+6N6vAtjvhVWk="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "9.0.0",
+ "hash": "sha256-tPvt6yoAp56sK/fe+/ei8M65eavY2UUhRnbrREj/Ems="
+ },
+ {
+ "pname": "System.Formats.Nrbf",
+ "version": "9.0.0",
+ "hash": "sha256-c4qf6CocQUZB0ySGQd8s15PXY7xfrjQqMGXxkwytKyw="
+ },
+ {
+ "pname": "System.Reflection.MetadataLoadContext",
+ "version": "7.0.0",
+ "hash": "sha256-VYl6SFD130K9Aw4eJH16ApJ9Sau4Xu0dcxEip2veuTI="
+ },
+ {
+ "pname": "System.Resources.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-y2gLEMuAy6QfEyNJxABC/ayMWGnwlpX735jsUQLktho="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.0",
+ "hash": "sha256-3J3vL9hcKSuZjT2GKappa2A9p2xJm1nH2asTNAl8ZCA="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.2",
+ "hash": "sha256-qS5Z/Yo8J+f3ExVX5Qkcpj1Z57oUZqz5rWa1h5bVpl8="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "9.0.0",
+ "hash": "sha256-AjG14mGeSc2Ka4QSelGBM1LrGBW3VJX60lnihKyJjGY="
+ },
+ {
+ "pname": "System.Security.Cryptography.ProtectedData",
+ "version": "9.0.0",
+ "hash": "sha256-gPgPU7k/InTqmXoRzQfUMEKL3QuTnOKowFqmXTnWaBQ="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "7.0.1",
+ "hash": "sha256-CH8+JVC8LyCSW75/6ZQ7ecMbSOAE1c16z4dG8JTp01w="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "9.0.0",
+ "hash": "sha256-SQJWwAFrJUddEU6JiZB52FM9tGjRlJAYH8oYVzG5IJU="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "7.0.0",
+ "hash": "sha256-DOFoX+AKRmrkllykHheR8FfUXYx/Ph+I/HYuReQydXI="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "9.0.0",
+ "hash": "sha256-BFrA9ottmQtLIAiKiGRbfSUpzNJwuaOCeFRDN4Z0ku0="
+ },
+ {
+ "pname": "System.Windows.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-RErD+Ju15qtnwdwB7E0SjjJGAnhXwJyC7UPcl24Z3Vs="
+ }
+]
|