From be3cdb823514c8a91db8c9ec7277e3732aa5a257 Mon Sep 17 00:00:00 2001 From: ChiaraBm Date: Thu, 25 Dec 2025 22:02:12 +0100 Subject: [PATCH] Added settings option model. Recreated migrations --- Moonlight.Api/Database/DataContext.cs | 10 ++- .../Database/Entities/SettingsOption.cs | 14 ++++ Moonlight.Api/Database/Entities/User.cs | 11 ++- .../20251216083232_AddedUsers.Designer.cs | 55 ------------- .../Migrations/20251216083232_AddedUsers.cs | 37 --------- ...25202335_AddedUsersAndSettings.Designer.cs | 80 +++++++++++++++++++ .../20251225202335_AddedUsersAndSettings.cs | 62 ++++++++++++++ .../Migrations/DataContextModelSnapshot.cs | 63 ++++++++++----- 8 files changed, 217 insertions(+), 115 deletions(-) create mode 100644 Moonlight.Api/Database/Entities/SettingsOption.cs delete mode 100644 Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.Designer.cs delete mode 100644 Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.cs create mode 100644 Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.Designer.cs create mode 100644 Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.cs diff --git a/Moonlight.Api/Database/DataContext.cs b/Moonlight.Api/Database/DataContext.cs index ddddf1cc..0e809a52 100644 --- a/Moonlight.Api/Database/DataContext.cs +++ b/Moonlight.Api/Database/DataContext.cs @@ -8,6 +8,7 @@ namespace Moonlight.Api.Database; public class DataContext : DbContext { public DbSet Users { get; set; } + public DbSet SettingsOptions { get; set; } private readonly IOptions Options; @@ -20,7 +21,7 @@ public class DataContext : DbContext { if (optionsBuilder.IsConfigured) return; - + optionsBuilder.UseNpgsql( $"Host={Options.Value.Host};" + $"Port={Options.Value.Port};" + @@ -29,4 +30,11 @@ public class DataContext : DbContext $"Database={Options.Value.Database}" ); } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.HasDefaultSchema("core"); + + base.OnModelCreating(modelBuilder); + } } \ No newline at end of file diff --git a/Moonlight.Api/Database/Entities/SettingsOption.cs b/Moonlight.Api/Database/Entities/SettingsOption.cs new file mode 100644 index 00000000..5e35d194 --- /dev/null +++ b/Moonlight.Api/Database/Entities/SettingsOption.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; + +namespace Moonlight.Api.Database.Entities; + +public class SettingsOption +{ + public int Id { get; set; } + + [MaxLength(256)] + public required string Key { get; set; } + + [MaxLength(4096)] + public required string Value { get; set; } +} \ No newline at end of file diff --git a/Moonlight.Api/Database/Entities/User.cs b/Moonlight.Api/Database/Entities/User.cs index f5fcf8b4..9309d456 100644 --- a/Moonlight.Api/Database/Entities/User.cs +++ b/Moonlight.Api/Database/Entities/User.cs @@ -1,11 +1,16 @@ -namespace Moonlight.Api.Database.Entities; +using System.ComponentModel.DataAnnotations; + +namespace Moonlight.Api.Database.Entities; public class User { public int Id { get; set; } - public string Username { get; set; } - public string Email { get; set; } + [MaxLength(50)] + public required string Username { get; set; } + + [MaxLength(254)] + public required string Email { get; set; } public DateTimeOffset InvalidateTimestamp { get; set; } } \ No newline at end of file diff --git a/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.Designer.cs b/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.Designer.cs deleted file mode 100644 index 8b45c33a..00000000 --- a/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.Designer.cs +++ /dev/null @@ -1,55 +0,0 @@ -// - -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using Moonlight.Api.Database; - -#nullable disable - -namespace Moonlight.Api.Database.Migrations -{ - [DbContext(typeof(DataContext))] - [Migration("20251216083232_AddedUsers")] - partial class AddedUsers - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "10.0.1") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Moonlight.Api.Database.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Email") - .IsRequired() - .HasColumnType("text"); - - b.Property("InvalidateTimestamp") - .HasColumnType("timestamp with time zone"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Users"); - }); -#pragma warning restore 612, 618 - } - } -} \ No newline at end of file diff --git a/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.cs b/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.cs deleted file mode 100644 index 9ecca052..00000000 --- a/Moonlight.Api/Database/Migrations/20251216083232_AddedUsers.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Moonlight.Api.Database.Migrations -{ - /// - public partial class AddedUsers : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Users", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", - NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - Username = table.Column(type: "text", nullable: false), - Email = table.Column(type: "text", nullable: false), - InvalidateTimestamp = - table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => { table.PrimaryKey("PK_Users", x => x.Id); }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Users"); - } - } -} \ No newline at end of file diff --git a/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.Designer.cs b/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.Designer.cs new file mode 100644 index 00000000..0c7f92c8 --- /dev/null +++ b/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.Designer.cs @@ -0,0 +1,80 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Moonlight.Api.Database; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Moonlight.Api.Database.Migrations +{ + [DbContext(typeof(DataContext))] + [Migration("20251225202335_AddedUsersAndSettings")] + partial class AddedUsersAndSettings + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("core") + .HasAnnotation("ProductVersion", "10.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Moonlight.Api.Database.Entities.SettingsOption", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Key") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)"); + + b.HasKey("Id"); + + b.ToTable("SettingsOptions", "core"); + }); + + modelBuilder.Entity("Moonlight.Api.Database.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(254) + .HasColumnType("character varying(254)"); + + b.Property("InvalidateTimestamp") + .HasColumnType("timestamp with time zone"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.ToTable("Users", "core"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.cs b/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.cs new file mode 100644 index 00000000..02ebe6e5 --- /dev/null +++ b/Moonlight.Api/Database/Migrations/20251225202335_AddedUsersAndSettings.cs @@ -0,0 +1,62 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Moonlight.Api.Database.Migrations +{ + /// + public partial class AddedUsersAndSettings : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "core"); + + migrationBuilder.CreateTable( + name: "SettingsOptions", + schema: "core", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Key = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), + Value = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SettingsOptions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Users", + schema: "core", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Username = table.Column(type: "character varying(50)", maxLength: 50, nullable: false), + Email = table.Column(type: "character varying(254)", maxLength: 254, nullable: false), + InvalidateTimestamp = table.Column(type: "timestamp with time zone", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "SettingsOptions", + schema: "core"); + + migrationBuilder.DropTable( + name: "Users", + schema: "core"); + } + } +} diff --git a/Moonlight.Api/Database/Migrations/DataContextModelSnapshot.cs b/Moonlight.Api/Database/Migrations/DataContextModelSnapshot.cs index fabcebfb..ff9a4888 100644 --- a/Moonlight.Api/Database/Migrations/DataContextModelSnapshot.cs +++ b/Moonlight.Api/Database/Migrations/DataContextModelSnapshot.cs @@ -1,11 +1,10 @@ // - using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using Moonlight.Api.Database; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable @@ -18,35 +17,61 @@ namespace Moonlight.Api.Database.Migrations { #pragma warning disable 612, 618 modelBuilder + .HasDefaultSchema("core") .HasAnnotation("ProductVersion", "10.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + modelBuilder.Entity("Moonlight.Api.Database.Entities.SettingsOption", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Key") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)"); + + b.HasKey("Id"); + + b.ToTable("SettingsOptions", "core"); + }); + modelBuilder.Entity("Moonlight.Api.Database.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("Email") - .IsRequired() - .HasColumnType("text"); + b.Property("Email") + .IsRequired() + .HasMaxLength(254) + .HasColumnType("character varying(254)"); - b.Property("InvalidateTimestamp") - .HasColumnType("timestamp with time zone"); + b.Property("InvalidateTimestamp") + .HasColumnType("timestamp with time zone"); - b.Property("Username") - .IsRequired() - .HasColumnType("text"); + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Users"); - }); + b.ToTable("Users", "core"); + }); #pragma warning restore 612, 618 } } -} \ No newline at end of file +}