diff --git a/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Country.json b/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Country.json new file mode 100644 index 0000000..39bba35 --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Country.json @@ -0,0 +1,10 @@ +[ + { + "Id": 1, + "Name": "Afghanistan" + }, + { + "Id": 2, + "Name": "Albania" + } +] \ No newline at end of file diff --git a/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Genre.json b/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Genre.json new file mode 100644 index 0000000..4e0b2ae --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.DataSeeding/Data/Genre.json @@ -0,0 +1,22 @@ +[ + { + "Id": 1, + "Name": "Comedy" + }, + { + "Id": 2, + "Name": "Thriller" + }, + { + "Id": 3, + "Name": "Horror" + }, + { + "Id": 4, + "Name": "Action" + }, + { + "Id": 5, + "Name": "Drama" + } +] \ No newline at end of file diff --git a/WatchIt.Database/WatchIt.Database.DataSeeding/DataReader.cs b/WatchIt.Database/WatchIt.Database.DataSeeding/DataReader.cs new file mode 100644 index 0000000..6a728f7 --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.DataSeeding/DataReader.cs @@ -0,0 +1,25 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WatchIt.Database.DataSeeding +{ + public static class DataReader + { + #region METHODS + + public static IEnumerable Read() => Read(typeof(T).Name); + public static IEnumerable Read(string filename) + { + string jsonFile = $"..\\WatchIt.Database\\WatchIt.Database.DataSeeding\\Data\\{filename}.json"; + string dataString = File.ReadAllText(jsonFile); + IEnumerable data = JsonConvert.DeserializeObject>(dataString); + return data; + } + + #endregion + } +} diff --git a/WatchIt.Database/WatchIt.Database.DataSeeding/WatchIt.Database.DataSeeding.csproj b/WatchIt.Database/WatchIt.Database.DataSeeding/WatchIt.Database.DataSeeding.csproj new file mode 100644 index 0000000..3b5b170 --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.DataSeeding/WatchIt.Database.DataSeeding.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/WatchIt.Database/WatchIt.Database.Model/Common/Country.cs b/WatchIt.Database/WatchIt.Database.Model/Common/Country.cs new file mode 100644 index 0000000..954e917 --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.Model/Common/Country.cs @@ -0,0 +1,56 @@ +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WatchIt.Database.DataSeeding; +using WatchIt.Database.Model.Media; + +namespace WatchIt.Database.Model.Common +{ + public class Country : IEntity + { + #region PROPERTIES + + public short Id { get; set; } + public string Name { get; set; } + + #endregion + + + + #region NAVIGATION + + public IEnumerable MediaProductionCountries { get; set; } + public IEnumerable MediaProduction { get; set; } + + #endregion + + + + #region PUBLIC METHODS + + static void IEntity.Build(EntityTypeBuilder builder) + { + builder.HasKey(x => x.Id); + builder.HasIndex(x => x.Id) + .IsUnique(); + builder.Property(x => x.Id) + .IsRequired(); + + builder.Property(x => x.Name) + .HasMaxLength(100) + .IsRequired(); + + // Navigation + builder.HasMany(x => x.MediaProduction) + .WithMany(x => x.ProductionCountries) + .UsingEntity(); + } + + static IEnumerable IEntity.InsertData() => DataReader.Read(); + + #endregion + } +} diff --git a/WatchIt.Database/WatchIt.Database.Model/Genre/Genre.cs b/WatchIt.Database/WatchIt.Database.Model/Common/Genre.cs similarity index 74% rename from WatchIt.Database/WatchIt.Database.Model/Genre/Genre.cs rename to WatchIt.Database/WatchIt.Database.Model/Common/Genre.cs index f1953c1..bdf79f9 100644 --- a/WatchIt.Database/WatchIt.Database.Model/Genre/Genre.cs +++ b/WatchIt.Database/WatchIt.Database.Model/Common/Genre.cs @@ -1,11 +1,14 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WatchIt.Database.DataSeeding; +using WatchIt.Database.Model.Media; -namespace WatchIt.Database.Model.Genre +namespace WatchIt.Database.Model.Common { public class Genre : IEntity { @@ -21,8 +24,8 @@ namespace WatchIt.Database.Model.Genre #region NAVIGATION - public ICollection GenreMedia { get; set; } - public ICollection Media { get; set; } + public IEnumerable MediaGenres { get; set; } + public IEnumerable Media { get; set; } #endregion @@ -48,15 +51,10 @@ namespace WatchIt.Database.Model.Genre // Navigation builder.HasMany(x => x.Media) .WithMany(x => x.Genres) - .UsingEntity(); + .UsingEntity(); } - static IEnumerable IEntity.InsertData() => new List - { - new Genre { Id = 1, Name = "Comedy" }, - new Genre { Id = 2, Name = "Thriller" }, - new Genre { Id = 3, Name = "Horror" }, - }; + static IEnumerable IEntity.InsertData() => DataReader.Read(); #endregion } diff --git a/WatchIt.Database/WatchIt.Database.Model/Media/Media.cs b/WatchIt.Database/WatchIt.Database.Model/Media/Media.cs index dbca2f4..613a022 100644 --- a/WatchIt.Database/WatchIt.Database.Model/Media/Media.cs +++ b/WatchIt.Database/WatchIt.Database.Model/Media/Media.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WatchIt.Database.Model.Account; -using WatchIt.Database.Model.Genre; +using WatchIt.Database.Model.Common; namespace WatchIt.Database.Model.Media { @@ -28,9 +28,11 @@ namespace WatchIt.Database.Model.Media #region NAVIGATION public MediaPosterImage? MediaPosterImage { get; set; } - public ICollection MediaPhotoImages { get; set; } - public ICollection GenreMedia { get; set; } - public ICollection Genres { get; set; } + public IEnumerable MediaPhotoImages { get; set; } + public IEnumerable MediaGenres { get; set; } + public IEnumerable MediaProductionCountries { get; set; } + public IEnumerable Genres { get; set; } + public IEnumerable ProductionCountries { get; set; } #endregion @@ -68,7 +70,10 @@ namespace WatchIt.Database.Model.Media // Navigation builder.HasMany(x => x.Genres) .WithMany(x => x.Media) - .UsingEntity(); + .UsingEntity(); + builder.HasMany(x => x.ProductionCountries) + .WithMany(x => x.MediaProduction) + .UsingEntity(); } #endregion diff --git a/WatchIt.Database/WatchIt.Database.Model/Genre/GenreMedia.cs b/WatchIt.Database/WatchIt.Database.Model/Media/MediaGenre.cs similarity index 71% rename from WatchIt.Database/WatchIt.Database.Model/Genre/GenreMedia.cs rename to WatchIt.Database/WatchIt.Database.Model/Media/MediaGenre.cs index fe3cefd..e331fdf 100644 --- a/WatchIt.Database/WatchIt.Database.Model/Genre/GenreMedia.cs +++ b/WatchIt.Database/WatchIt.Database.Model/Media/MediaGenre.cs @@ -4,11 +4,11 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using WatchIt.Database.Model.Media; +using WatchIt.Database.Model.Common; -namespace WatchIt.Database.Model.Genre +namespace WatchIt.Database.Model.Media { - public class GenreMedia : IEntity + public class MediaGenre : IEntity { #region PROPERTIES @@ -21,7 +21,7 @@ namespace WatchIt.Database.Model.Genre #region NAVIGATION - public Media.Media Media { get; set; } + public Media Media { get; set; } public Genre Genre { get; set; } #endregion @@ -30,17 +30,17 @@ namespace WatchIt.Database.Model.Genre #region PUBLIC METHODS - static void IEntity.Build(EntityTypeBuilder builder) + static void IEntity.Build(EntityTypeBuilder builder) { builder.HasOne(x => x.Media) - .WithMany(x => x.GenreMedia) + .WithMany(x => x.MediaGenres) .HasForeignKey(x => x.MediaId) .IsRequired(); builder.Property(x => x.MediaId) .IsRequired(); builder.HasOne(x => x.Genre) - .WithMany(x => x.GenreMedia) + .WithMany(x => x.MediaGenres) .HasForeignKey(x => x.GenreId) .IsRequired(); builder.Property(x => x.GenreId) diff --git a/WatchIt.Database/WatchIt.Database.Model/Media/MediaProductionCountry.cs b/WatchIt.Database/WatchIt.Database.Model/Media/MediaProductionCountry.cs new file mode 100644 index 0000000..0e2de78 --- /dev/null +++ b/WatchIt.Database/WatchIt.Database.Model/Media/MediaProductionCountry.cs @@ -0,0 +1,52 @@ +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WatchIt.Database.Model.Common; + +namespace WatchIt.Database.Model.Media +{ + public class MediaProductionCountry : IEntity + { + #region PROPERTIES + + public long MediaId { get; set; } + public short CountryId { get; set; } + + #endregion + + + + #region NAVIGATION + + public Media Media { get; set; } + public Country Country { get; set; } + + #endregion + + + + #region PUBLIC METHODS + + static void IEntity.Build(EntityTypeBuilder builder) + { + builder.HasOne(x => x.Media) + .WithMany(x => x.MediaProductionCountries) + .HasForeignKey(x => x.MediaId) + .IsRequired(); + builder.Property(x => x.MediaId) + .IsRequired(); + + builder.HasOne(x => x.Country) + .WithMany(x => x.MediaProductionCountries) + .HasForeignKey(x => x.CountryId) + .IsRequired(); + builder.Property(x => x.CountryId) + .IsRequired(); + } + + #endregion + } +} diff --git a/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeries.cs b/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeries.cs index 09fda89..04a620d 100644 --- a/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeries.cs +++ b/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeries.cs @@ -21,7 +21,7 @@ namespace WatchIt.Database.Model.Media #region NAVIGATION public Media Media { get; set; } - public ICollection MediaSeriesSeasons { get; set; } + public IEnumerable MediaSeriesSeasons { get; set; } #endregion diff --git a/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeriesSeason.cs b/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeriesSeason.cs index 59bae9c..2818116 100644 --- a/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeriesSeason.cs +++ b/WatchIt.Database/WatchIt.Database.Model/Media/MediaSeriesSeason.cs @@ -24,7 +24,7 @@ namespace WatchIt.Database.Model.Media #region NAVIGATION public MediaSeries MediaSeries { get; set; } - public ICollection MediaSeriesEpisodes { get; set; } + public IEnumerable MediaSeriesEpisodes { get; set; } #endregion diff --git a/WatchIt.Database/WatchIt.Database.Model/WatchIt.Database.Model.csproj b/WatchIt.Database/WatchIt.Database.Model/WatchIt.Database.Model.csproj index e3240b1..a3fae4a 100644 --- a/WatchIt.Database/WatchIt.Database.Model/WatchIt.Database.Model.csproj +++ b/WatchIt.Database/WatchIt.Database.Model/WatchIt.Database.Model.csproj @@ -13,4 +13,8 @@ + + + + diff --git a/WatchIt.Database/WatchIt.Database/DatabaseContext.cs b/WatchIt.Database/WatchIt.Database/DatabaseContext.cs index 5419f16..386a6ea 100644 --- a/WatchIt.Database/WatchIt.Database/DatabaseContext.cs +++ b/WatchIt.Database/WatchIt.Database/DatabaseContext.cs @@ -7,7 +7,7 @@ using System.Text; using System.Threading.Tasks; using WatchIt.Database.Model; using WatchIt.Database.Model.Account; -using WatchIt.Database.Model.Genre; +using WatchIt.Database.Model.Common; using WatchIt.Database.Model.Media; namespace WatchIt.Database @@ -26,14 +26,14 @@ namespace WatchIt.Database #region PROPERTIES + // Common + public virtual DbSet Countries { get; set; } + public virtual DbSet Genres { get; set; } + // Account public virtual DbSet Accounts { get; set; } public virtual DbSet AccountProfilePictures { get; set; } - // Genre - public virtual DbSet Genres { get; set; } - public virtual DbSet GenresMedia { get; set; } - // Media public virtual DbSet Media { get; set; } public virtual DbSet MediaMovies { get; set; } @@ -42,6 +42,8 @@ namespace WatchIt.Database public virtual DbSet MediaSeriesEpisodes { get; set; } public virtual DbSet MediaPosterImages { get; set; } public virtual DbSet MediaPhotoImages { get; set; } + public virtual DbSet MediaGenres { get; set; } + public virtual DbSet MediaProductionCountrys { get; set; } #endregion @@ -53,6 +55,10 @@ namespace WatchIt.Database protected override void OnModelCreating(ModelBuilder modelBuilder) { + // Common + EntityBuilder.Build(modelBuilder); + EntityBuilder.Build(modelBuilder); + // Account EntityBuilder.Build(modelBuilder); EntityBuilder.Build(modelBuilder); @@ -65,10 +71,8 @@ namespace WatchIt.Database EntityBuilder.Build(modelBuilder); EntityBuilder.Build(modelBuilder); EntityBuilder.Build(modelBuilder); - - // Genre - EntityBuilder.Build(modelBuilder); - EntityBuilder.Build(modelBuilder); + EntityBuilder.Build(modelBuilder); + EntityBuilder.Build(modelBuilder); } #endregion diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.Designer.cs deleted file mode 100644 index ca7e397..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.Designer.cs +++ /dev/null @@ -1,378 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317200431_Migration1")] - partial class Migration1 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.Designer.cs deleted file mode 100644 index 43a8508..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.Designer.cs +++ /dev/null @@ -1,378 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317203820_Migration2")] - partial class Migration2 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.cs deleted file mode 100644 index 9b7d32e..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317203820_Migration2.cs +++ /dev/null @@ -1,102 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration2 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_GenreMedia_Genres_GenreId", - table: "GenreMedia"); - - migrationBuilder.DropForeignKey( - name: "FK_GenreMedia_Media_MediaId", - table: "GenreMedia"); - - migrationBuilder.DropPrimaryKey( - name: "PK_GenreMedia", - table: "GenreMedia"); - - migrationBuilder.RenameTable( - name: "GenreMedia", - newName: "GenresMedia"); - - migrationBuilder.RenameIndex( - name: "IX_GenreMedia_MediaId", - table: "GenresMedia", - newName: "IX_GenresMedia_MediaId"); - - migrationBuilder.AddPrimaryKey( - name: "PK_GenresMedia", - table: "GenresMedia", - columns: new[] { "GenreId", "MediaId" }); - - migrationBuilder.AddForeignKey( - name: "FK_GenresMedia_Genres_GenreId", - table: "GenresMedia", - column: "GenreId", - principalTable: "Genres", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "FK_GenresMedia_Media_MediaId", - table: "GenresMedia", - column: "MediaId", - principalTable: "Media", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_GenresMedia_Genres_GenreId", - table: "GenresMedia"); - - migrationBuilder.DropForeignKey( - name: "FK_GenresMedia_Media_MediaId", - table: "GenresMedia"); - - migrationBuilder.DropPrimaryKey( - name: "PK_GenresMedia", - table: "GenresMedia"); - - migrationBuilder.RenameTable( - name: "GenresMedia", - newName: "GenreMedia"); - - migrationBuilder.RenameIndex( - name: "IX_GenresMedia_MediaId", - table: "GenreMedia", - newName: "IX_GenreMedia_MediaId"); - - migrationBuilder.AddPrimaryKey( - name: "PK_GenreMedia", - table: "GenreMedia", - columns: new[] { "GenreId", "MediaId" }); - - migrationBuilder.AddForeignKey( - name: "FK_GenreMedia_Genres_GenreId", - table: "GenreMedia", - column: "GenreId", - principalTable: "Genres", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "FK_GenreMedia_Media_MediaId", - table: "GenreMedia", - column: "MediaId", - principalTable: "Media", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.Designer.cs deleted file mode 100644 index ce6bc6f..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.Designer.cs +++ /dev/null @@ -1,406 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317204255_Migration3")] - partial class Migration3 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .HasColumnType("bigint"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Budget") - .HasColumnType("money"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaMovies"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.cs deleted file mode 100644 index 76a39c8..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317204255_Migration3.cs +++ /dev/null @@ -1,71 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration3 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "Id", - table: "Media", - type: "bigint", - nullable: false, - oldClrType: typeof(long), - oldType: "bigint") - .OldAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - migrationBuilder.CreateTable( - name: "MediaMovies", - columns: table => new - { - Id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - Budget = table.Column(type: "money", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_MediaMovies", x => x.Id); - }); - - migrationBuilder.CreateIndex( - name: "IX_MediaMovies_Id", - table: "MediaMovies", - column: "Id", - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_Media_MediaMovies_Id", - table: "Media", - column: "Id", - principalTable: "MediaMovies", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Media_MediaMovies_Id", - table: "Media"); - - migrationBuilder.DropTable( - name: "MediaMovies"); - - migrationBuilder.AlterColumn( - name: "Id", - table: "Media", - type: "bigint", - nullable: false, - oldClrType: typeof(long), - oldType: "bigint") - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.Designer.cs deleted file mode 100644 index 7e4ebbe..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.Designer.cs +++ /dev/null @@ -1,475 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317220502_Migration4")] - partial class Migration4 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .HasColumnType("bigint"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Budget") - .HasColumnType("money"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaMovies"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("HasEnded") - .HasColumnType("boolean"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("IsSpecial") - .HasColumnType("boolean"); - - b.Property("MediaSeriesId") - .HasColumnType("bigint"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Number") - .HasColumnType("smallint"); - - b.HasKey("Id"); - - b.HasIndex("MediaSeriesId"); - - b.ToTable("MediaSeriesSeason"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", "MediaSeries") - .WithMany("MediaSeriesSeasons") - .HasForeignKey("MediaSeriesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Navigation("Media") - .IsRequired(); - - b.Navigation("MediaSeriesSeasons"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.cs deleted file mode 100644 index 4e4bb4e..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317220502_Migration4.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration4 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "MediaSeries", - columns: table => new - { - Id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - HasEnded = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_MediaSeries", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "MediaSeriesSeason", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - MediaSeriesId = table.Column(type: "bigint", nullable: false), - Number = table.Column(type: "smallint", nullable: false), - Name = table.Column(type: "text", nullable: true), - IsSpecial = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_MediaSeriesSeason", x => x.Id); - table.ForeignKey( - name: "FK_MediaSeriesSeason_MediaSeries_MediaSeriesId", - column: x => x.MediaSeriesId, - principalTable: "MediaSeries", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_MediaSeries_Id", - table: "MediaSeries", - column: "Id", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_MediaSeriesSeason_MediaSeriesId", - table: "MediaSeriesSeason", - column: "MediaSeriesId"); - - migrationBuilder.AddForeignKey( - name: "FK_Media_MediaSeries_Id", - table: "Media", - column: "Id", - principalTable: "MediaSeries", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Media_MediaSeries_Id", - table: "Media"); - - migrationBuilder.DropTable( - name: "MediaSeriesSeason"); - - migrationBuilder.DropTable( - name: "MediaSeries"); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.Designer.cs deleted file mode 100644 index f1ba674..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.Designer.cs +++ /dev/null @@ -1,480 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317220558_Migration5")] - partial class Migration5 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .HasColumnType("bigint"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Budget") - .HasColumnType("money"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaMovies"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("HasEnded") - .HasColumnType("boolean"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("IsSpecial") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaSeriesId") - .HasColumnType("bigint"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Number") - .HasColumnType("smallint"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaSeriesId"); - - b.ToTable("MediaSeriesSeasons"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", "MediaSeries") - .WithMany("MediaSeriesSeasons") - .HasForeignKey("MediaSeriesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Navigation("Media") - .IsRequired(); - - b.Navigation("MediaSeriesSeasons"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.cs deleted file mode 100644 index 0779c57..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317220558_Migration5.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration5 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_MediaSeriesSeason_MediaSeries_MediaSeriesId", - table: "MediaSeriesSeason"); - - migrationBuilder.DropPrimaryKey( - name: "PK_MediaSeriesSeason", - table: "MediaSeriesSeason"); - - migrationBuilder.RenameTable( - name: "MediaSeriesSeason", - newName: "MediaSeriesSeasons"); - - migrationBuilder.RenameIndex( - name: "IX_MediaSeriesSeason_MediaSeriesId", - table: "MediaSeriesSeasons", - newName: "IX_MediaSeriesSeasons_MediaSeriesId"); - - migrationBuilder.AlterColumn( - name: "IsSpecial", - table: "MediaSeriesSeasons", - type: "boolean", - nullable: false, - defaultValue: false, - oldClrType: typeof(bool), - oldType: "boolean"); - - migrationBuilder.AddPrimaryKey( - name: "PK_MediaSeriesSeasons", - table: "MediaSeriesSeasons", - column: "Id"); - - migrationBuilder.CreateIndex( - name: "IX_MediaSeriesSeasons_Id", - table: "MediaSeriesSeasons", - column: "Id", - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_MediaSeriesSeasons_MediaSeries_MediaSeriesId", - table: "MediaSeriesSeasons", - column: "MediaSeriesId", - principalTable: "MediaSeries", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_MediaSeriesSeasons_MediaSeries_MediaSeriesId", - table: "MediaSeriesSeasons"); - - migrationBuilder.DropPrimaryKey( - name: "PK_MediaSeriesSeasons", - table: "MediaSeriesSeasons"); - - migrationBuilder.DropIndex( - name: "IX_MediaSeriesSeasons_Id", - table: "MediaSeriesSeasons"); - - migrationBuilder.RenameTable( - name: "MediaSeriesSeasons", - newName: "MediaSeriesSeason"); - - migrationBuilder.RenameIndex( - name: "IX_MediaSeriesSeasons_MediaSeriesId", - table: "MediaSeriesSeason", - newName: "IX_MediaSeriesSeason_MediaSeriesId"); - - migrationBuilder.AlterColumn( - name: "IsSpecial", - table: "MediaSeriesSeason", - type: "boolean", - nullable: false, - oldClrType: typeof(bool), - oldType: "boolean", - oldDefaultValue: false); - - migrationBuilder.AddPrimaryKey( - name: "PK_MediaSeriesSeason", - table: "MediaSeriesSeason", - column: "Id"); - - migrationBuilder.AddForeignKey( - name: "FK_MediaSeriesSeason_MediaSeries_MediaSeriesId", - table: "MediaSeriesSeason", - column: "MediaSeriesId", - principalTable: "MediaSeries", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.Designer.cs deleted file mode 100644 index f806cce..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.Designer.cs +++ /dev/null @@ -1,516 +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 WatchIt.Database; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20240317230106_Migration6")] - partial class Migration6 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BackgroundPictureId") - .HasColumnType("uuid"); - - b.Property("CreationDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(320) - .HasColumnType("character varying(320)"); - - b.Property("IsAdmin") - .HasColumnType("boolean"); - - b.Property("LastActive") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.Property("LeftSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(1000) - .HasColumnType("bytea"); - - b.Property("ProfilePictureId") - .HasColumnType("uuid"); - - b.Property("RightSalt") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("character varying(20)"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.HasKey("Id"); - - b.HasIndex("BackgroundPictureId"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("ProfilePictureId") - .IsUnique(); - - b.ToTable("Accounts"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("AccountProfilePictures"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("smallint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("character varying(100)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("Genres"); - - b.HasData( - new - { - Id = (short)1, - Name = "Comedy" - }, - new - { - Id = (short)2, - Name = "Thriller" - }, - new - { - Id = (short)3, - Name = "Horror" - }); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Property("Id") - .HasColumnType("bigint"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("character varying(1000)"); - - b.Property("Length") - .HasColumnType("interval"); - - b.Property("MediaPosterImageId") - .HasColumnType("uuid"); - - b.Property("OriginalTitle") - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("character varying(250)"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaPosterImageId") - .IsUnique(); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Budget") - .HasColumnType("money"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaMovies"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("IsMediaBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("IsUniversalBackground") - .ValueGeneratedOnAdd() - .HasColumnType("boolean") - .HasDefaultValue(false); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaId"); - - b.ToTable("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Image") - .IsRequired() - .HasMaxLength(-1) - .HasColumnType("bytea"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("character varying(50)"); - - b.Property("UploadDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasDefaultValueSql("now()"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaPosterImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("HasEnded") - .HasColumnType("boolean"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.ToTable("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("IsSpecial") - .HasColumnType("boolean"); - - b.Property("MediaSeriesSeasonId") - .HasColumnType("uuid"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Number") - .HasColumnType("smallint"); - - b.HasKey("Id"); - - b.HasIndex("MediaSeriesSeasonId"); - - b.ToTable("MediaSeriesEpisode"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("MediaSeriesId") - .HasColumnType("bigint"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Number") - .HasColumnType("smallint"); - - b.HasKey("Id"); - - b.HasIndex("Id") - .IsUnique(); - - b.HasIndex("MediaSeriesId"); - - b.ToTable("MediaSeriesSeasons"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.Account", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaPhotoImage", "BackgroundPicture") - .WithMany() - .HasForeignKey("BackgroundPictureId"); - - b.HasOne("WatchIt.Database.Model.Account.AccountProfilePicture", "ProfilePicture") - .WithOne("Account") - .HasForeignKey("WatchIt.Database.Model.Account.Account", "ProfilePictureId"); - - b.Navigation("BackgroundPicture"); - - b.Navigation("ProfilePicture"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", null) - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.MediaPosterImage", "MediaPosterImage") - .WithOne("Media") - .HasForeignKey("WatchIt.Database.Model.Media.Media", "MediaPosterImageId"); - - b.Navigation("MediaPosterImage"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => - { - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("MediaPhotoImages") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesEpisode", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaSeriesSeason", "MediaSeriesSeason") - .WithMany("MediaSeriesEpisodes") - .HasForeignKey("MediaSeriesSeasonId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("MediaSeriesSeason"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.HasOne("WatchIt.Database.Model.Media.MediaSeries", "MediaSeries") - .WithMany("MediaSeriesSeasons") - .HasForeignKey("MediaSeriesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("MediaSeries"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Account.AccountProfilePicture", b => - { - b.Navigation("Account") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => - { - b.Navigation("GenreMedia"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => - { - b.Navigation("GenreMedia"); - - b.Navigation("MediaPhotoImages"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPosterImage", b => - { - b.Navigation("Media") - .IsRequired(); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => - { - b.Navigation("Media") - .IsRequired(); - - b.Navigation("MediaSeriesSeasons"); - }); - - modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesSeason", b => - { - b.Navigation("MediaSeriesEpisodes"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.cs deleted file mode 100644 index eae758a..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317230106_Migration6.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration6 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "IsSpecial", - table: "MediaSeriesSeasons"); - - migrationBuilder.CreateTable( - name: "MediaSeriesEpisode", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - MediaSeriesSeasonId = table.Column(type: "uuid", nullable: false), - Number = table.Column(type: "smallint", nullable: false), - Name = table.Column(type: "text", nullable: true), - IsSpecial = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_MediaSeriesEpisode", x => x.Id); - table.ForeignKey( - name: "FK_MediaSeriesEpisode_MediaSeriesSeasons_MediaSeriesSeasonId", - column: x => x.MediaSeriesSeasonId, - principalTable: "MediaSeriesSeasons", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_MediaSeriesEpisode_MediaSeriesSeasonId", - table: "MediaSeriesEpisode", - column: "MediaSeriesSeasonId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "MediaSeriesEpisode"); - - migrationBuilder.AddColumn( - name: "IsSpecial", - table: "MediaSeriesSeasons", - type: "boolean", - nullable: false, - defaultValue: false); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.cs deleted file mode 100644 index 2accc90..0000000 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace WatchIt.Database.Migrations -{ - /// - public partial class Migration7 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_MediaSeriesEpisode_MediaSeriesSeasons_MediaSeriesSeasonId", - table: "MediaSeriesEpisode"); - - migrationBuilder.DropPrimaryKey( - name: "PK_MediaSeriesEpisode", - table: "MediaSeriesEpisode"); - - migrationBuilder.RenameTable( - name: "MediaSeriesEpisode", - newName: "MediaSeriesEpisodes"); - - migrationBuilder.RenameIndex( - name: "IX_MediaSeriesEpisode_MediaSeriesSeasonId", - table: "MediaSeriesEpisodes", - newName: "IX_MediaSeriesEpisodes_MediaSeriesSeasonId"); - - migrationBuilder.AlterColumn( - name: "IsSpecial", - table: "MediaSeriesEpisodes", - type: "boolean", - nullable: false, - defaultValue: false, - oldClrType: typeof(bool), - oldType: "boolean"); - - migrationBuilder.AddPrimaryKey( - name: "PK_MediaSeriesEpisodes", - table: "MediaSeriesEpisodes", - column: "Id"); - - migrationBuilder.CreateIndex( - name: "IX_MediaSeriesEpisodes_Id", - table: "MediaSeriesEpisodes", - column: "Id", - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_MediaSeriesEpisodes_MediaSeriesSeasons_MediaSeriesSeasonId", - table: "MediaSeriesEpisodes", - column: "MediaSeriesSeasonId", - principalTable: "MediaSeriesSeasons", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_MediaSeriesEpisodes_MediaSeriesSeasons_MediaSeriesSeasonId", - table: "MediaSeriesEpisodes"); - - migrationBuilder.DropPrimaryKey( - name: "PK_MediaSeriesEpisodes", - table: "MediaSeriesEpisodes"); - - migrationBuilder.DropIndex( - name: "IX_MediaSeriesEpisodes_Id", - table: "MediaSeriesEpisodes"); - - migrationBuilder.RenameTable( - name: "MediaSeriesEpisodes", - newName: "MediaSeriesEpisode"); - - migrationBuilder.RenameIndex( - name: "IX_MediaSeriesEpisodes_MediaSeriesSeasonId", - table: "MediaSeriesEpisode", - newName: "IX_MediaSeriesEpisode_MediaSeriesSeasonId"); - - migrationBuilder.AlterColumn( - name: "IsSpecial", - table: "MediaSeriesEpisode", - type: "boolean", - nullable: false, - oldClrType: typeof(bool), - oldType: "boolean", - oldDefaultValue: false); - - migrationBuilder.AddPrimaryKey( - name: "PK_MediaSeriesEpisode", - table: "MediaSeriesEpisode", - column: "Id"); - - migrationBuilder.AddForeignKey( - name: "FK_MediaSeriesEpisode_MediaSeriesSeasons_MediaSeriesSeasonId", - table: "MediaSeriesEpisode", - column: "MediaSeriesSeasonId", - principalTable: "MediaSeriesSeasons", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.Designer.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.Designer.cs similarity index 83% rename from WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.Designer.cs rename to WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.Designer.cs index 062c08f..404fb09 100644 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317230336_Migration7.Designer.cs +++ b/WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.Designer.cs @@ -12,8 +12,8 @@ using WatchIt.Database; namespace WatchIt.Database.Migrations { [DbContext(typeof(DatabaseContext))] - [Migration("20240317230336_Migration7")] - partial class Migration7 + [Migration("20240319162326_0000_Initial")] + partial class _0000_Initial { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -124,7 +124,40 @@ namespace WatchIt.Database.Migrations b.ToTable("AccountProfilePictures"); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => + modelBuilder.Entity("WatchIt.Database.Model.Common.Country", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("smallint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Countries"); + + b.HasData( + new + { + Id = (short)1, + Name = "Afghanistan" + }, + new + { + Id = (short)2, + Name = "Albania" + }); + }); + + modelBuilder.Entity("WatchIt.Database.Model.Common.Genre", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -163,24 +196,19 @@ namespace WatchIt.Database.Migrations { Id = (short)3, Name = "Horror" + }, + new + { + Id = (short)4, + Name = "Action" + }, + new + { + Id = (short)5, + Name = "Drama" }); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { b.Property("Id") @@ -219,6 +247,21 @@ namespace WatchIt.Database.Migrations b.ToTable("Media"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaGenre", b => + { + b.Property("GenreId") + .HasColumnType("smallint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.HasKey("GenreId", "MediaId"); + + b.HasIndex("MediaId"); + + b.ToTable("MediaGenres"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => { b.Property("Id") @@ -311,6 +354,21 @@ namespace WatchIt.Database.Migrations b.ToTable("MediaPosterImages"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaProductionCountry", b => + { + b.Property("CountryId") + .HasColumnType("smallint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.HasKey("CountryId", "MediaId"); + + b.HasIndex("MediaId"); + + b.ToTable("MediaProductionCountrys"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => { b.Property("Id") @@ -400,25 +458,6 @@ namespace WatchIt.Database.Migrations b.Navigation("ProfilePicture"); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) @@ -440,6 +479,25 @@ namespace WatchIt.Database.Migrations b.Navigation("MediaPosterImage"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaGenre", b => + { + b.HasOne("WatchIt.Database.Model.Common.Genre", "Genre") + .WithMany("MediaGenres") + .HasForeignKey("GenreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WatchIt.Database.Model.Media.Media", "Media") + .WithMany("MediaGenres") + .HasForeignKey("MediaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Genre"); + + b.Navigation("Media"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => { b.HasOne("WatchIt.Database.Model.Media.Media", "Media") @@ -451,6 +509,25 @@ namespace WatchIt.Database.Migrations b.Navigation("Media"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaProductionCountry", b => + { + b.HasOne("WatchIt.Database.Model.Common.Country", "Country") + .WithMany("MediaProductionCountries") + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WatchIt.Database.Model.Media.Media", "Media") + .WithMany("MediaProductionCountries") + .HasForeignKey("MediaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Country"); + + b.Navigation("Media"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesEpisode", b => { b.HasOne("WatchIt.Database.Model.Media.MediaSeriesSeason", "MediaSeriesSeason") @@ -479,16 +556,23 @@ namespace WatchIt.Database.Migrations .IsRequired(); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => + modelBuilder.Entity("WatchIt.Database.Model.Common.Country", b => { - b.Navigation("GenreMedia"); + b.Navigation("MediaProductionCountries"); + }); + + modelBuilder.Entity("WatchIt.Database.Model.Common.Genre", b => + { + b.Navigation("MediaGenres"); }); modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { - b.Navigation("GenreMedia"); + b.Navigation("MediaGenres"); b.Navigation("MediaPhotoImages"); + + b.Navigation("MediaProductionCountries"); }); modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => diff --git a/WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.cs b/WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.cs similarity index 57% rename from WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.cs rename to WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.cs index 086bdb0..182f200 100644 --- a/WatchIt.Database/WatchIt.Database/Migrations/20240317200431_Migration1.cs +++ b/WatchIt.Database/WatchIt.Database/Migrations/20240319162326_0000_Initial.cs @@ -9,7 +9,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace WatchIt.Database.Migrations { /// - public partial class Migration1 : Migration + public partial class _0000_Initial : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) @@ -28,6 +28,19 @@ namespace WatchIt.Database.Migrations table.PrimaryKey("PK_AccountProfilePictures", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Countries", + columns: table => new + { + Id = table.Column(type: "smallint", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(type: "character varying(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Countries", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Genres", columns: table => new @@ -42,6 +55,19 @@ namespace WatchIt.Database.Migrations table.PrimaryKey("PK_Genres", x => x.Id); }); + migrationBuilder.CreateTable( + name: "MediaMovies", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Budget = table.Column(type: "money", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaMovies", x => x.Id); + }); + migrationBuilder.CreateTable( name: "MediaPosterImages", columns: table => new @@ -57,11 +83,23 @@ namespace WatchIt.Database.Migrations }); migrationBuilder.CreateTable( - name: "Media", + name: "MediaSeries", columns: table => new { Id = table.Column(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + HasEnded = table.Column(type: "boolean", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaSeries", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Media", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false), Title = table.Column(type: "character varying(250)", maxLength: 250, nullable: false), OriginalTitle = table.Column(type: "character varying(250)", maxLength: 250, nullable: true), Description = table.Column(type: "character varying(1000)", maxLength: 1000, nullable: true), @@ -72,15 +110,47 @@ namespace WatchIt.Database.Migrations constraints: table => { table.PrimaryKey("PK_Media", x => x.Id); + table.ForeignKey( + name: "FK_Media_MediaMovies_Id", + column: x => x.Id, + principalTable: "MediaMovies", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Media_MediaPosterImages_MediaPosterImageId", column: x => x.MediaPosterImageId, principalTable: "MediaPosterImages", principalColumn: "Id"); + table.ForeignKey( + name: "FK_Media_MediaSeries_Id", + column: x => x.Id, + principalTable: "MediaSeries", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "GenreMedia", + name: "MediaSeriesSeasons", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + MediaSeriesId = table.Column(type: "bigint", nullable: false), + Number = table.Column(type: "smallint", nullable: false), + Name = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaSeriesSeasons", x => x.Id); + table.ForeignKey( + name: "FK_MediaSeriesSeasons_MediaSeries_MediaSeriesId", + column: x => x.MediaSeriesId, + principalTable: "MediaSeries", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "MediaGenres", columns: table => new { MediaId = table.Column(type: "bigint", nullable: false), @@ -88,15 +158,15 @@ namespace WatchIt.Database.Migrations }, constraints: table => { - table.PrimaryKey("PK_GenreMedia", x => new { x.GenreId, x.MediaId }); + table.PrimaryKey("PK_MediaGenres", x => new { x.GenreId, x.MediaId }); table.ForeignKey( - name: "FK_GenreMedia_Genres_GenreId", + name: "FK_MediaGenres_Genres_GenreId", column: x => x.GenreId, principalTable: "Genres", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_GenreMedia_Media_MediaId", + name: "FK_MediaGenres_Media_MediaId", column: x => x.MediaId, principalTable: "Media", principalColumn: "Id", @@ -126,6 +196,51 @@ namespace WatchIt.Database.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "MediaProductionCountrys", + columns: table => new + { + MediaId = table.Column(type: "bigint", nullable: false), + CountryId = table.Column(type: "smallint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaProductionCountrys", x => new { x.CountryId, x.MediaId }); + table.ForeignKey( + name: "FK_MediaProductionCountrys_Countries_CountryId", + column: x => x.CountryId, + principalTable: "Countries", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_MediaProductionCountrys_Media_MediaId", + column: x => x.MediaId, + principalTable: "Media", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "MediaSeriesEpisodes", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + MediaSeriesSeasonId = table.Column(type: "uuid", nullable: false), + Number = table.Column(type: "smallint", nullable: false), + Name = table.Column(type: "text", nullable: true), + IsSpecial = table.Column(type: "boolean", nullable: false, defaultValue: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaSeriesEpisodes", x => x.Id); + table.ForeignKey( + name: "FK_MediaSeriesEpisodes_MediaSeriesSeasons_MediaSeriesSeasonId", + column: x => x.MediaSeriesSeasonId, + principalTable: "MediaSeriesSeasons", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Accounts", columns: table => new @@ -159,6 +274,15 @@ namespace WatchIt.Database.Migrations principalColumn: "Id"); }); + migrationBuilder.InsertData( + table: "Countries", + columns: new[] { "Id", "Name" }, + values: new object[,] + { + { (short)1, "Afghanistan" }, + { (short)2, "Albania" } + }); + migrationBuilder.InsertData( table: "Genres", columns: new[] { "Id", "Description", "Name" }, @@ -166,7 +290,9 @@ namespace WatchIt.Database.Migrations { { (short)1, null, "Comedy" }, { (short)2, null, "Thriller" }, - { (short)3, null, "Horror" } + { (short)3, null, "Horror" }, + { (short)4, null, "Action" }, + { (short)5, null, "Drama" } }); migrationBuilder.CreateIndex( @@ -193,9 +319,10 @@ namespace WatchIt.Database.Migrations unique: true); migrationBuilder.CreateIndex( - name: "IX_GenreMedia_MediaId", - table: "GenreMedia", - column: "MediaId"); + name: "IX_Countries_Id", + table: "Countries", + column: "Id", + unique: true); migrationBuilder.CreateIndex( name: "IX_Genres_Id", @@ -215,6 +342,17 @@ namespace WatchIt.Database.Migrations column: "MediaPosterImageId", unique: true); + migrationBuilder.CreateIndex( + name: "IX_MediaGenres_MediaId", + table: "MediaGenres", + column: "MediaId"); + + migrationBuilder.CreateIndex( + name: "IX_MediaMovies_Id", + table: "MediaMovies", + column: "Id", + unique: true); + migrationBuilder.CreateIndex( name: "IX_MediaPhotoImages_Id", table: "MediaPhotoImages", @@ -231,6 +369,39 @@ namespace WatchIt.Database.Migrations table: "MediaPosterImages", column: "Id", unique: true); + + migrationBuilder.CreateIndex( + name: "IX_MediaProductionCountrys_MediaId", + table: "MediaProductionCountrys", + column: "MediaId"); + + migrationBuilder.CreateIndex( + name: "IX_MediaSeries_Id", + table: "MediaSeries", + column: "Id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_MediaSeriesEpisodes_Id", + table: "MediaSeriesEpisodes", + column: "Id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_MediaSeriesEpisodes_MediaSeriesSeasonId", + table: "MediaSeriesEpisodes", + column: "MediaSeriesSeasonId"); + + migrationBuilder.CreateIndex( + name: "IX_MediaSeriesSeasons_Id", + table: "MediaSeriesSeasons", + column: "Id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_MediaSeriesSeasons_MediaSeriesId", + table: "MediaSeriesSeasons", + column: "MediaSeriesId"); } /// @@ -240,7 +411,13 @@ namespace WatchIt.Database.Migrations name: "Accounts"); migrationBuilder.DropTable( - name: "GenreMedia"); + name: "MediaGenres"); + + migrationBuilder.DropTable( + name: "MediaProductionCountrys"); + + migrationBuilder.DropTable( + name: "MediaSeriesEpisodes"); migrationBuilder.DropTable( name: "AccountProfilePictures"); @@ -251,11 +428,23 @@ namespace WatchIt.Database.Migrations migrationBuilder.DropTable( name: "Genres"); + migrationBuilder.DropTable( + name: "Countries"); + + migrationBuilder.DropTable( + name: "MediaSeriesSeasons"); + migrationBuilder.DropTable( name: "Media"); + migrationBuilder.DropTable( + name: "MediaMovies"); + migrationBuilder.DropTable( name: "MediaPosterImages"); + + migrationBuilder.DropTable( + name: "MediaSeries"); } } } diff --git a/WatchIt.Database/WatchIt.Database/Migrations/DatabaseContextModelSnapshot.cs b/WatchIt.Database/WatchIt.Database/Migrations/DatabaseContextModelSnapshot.cs index 37b283b..d79e5c9 100644 --- a/WatchIt.Database/WatchIt.Database/Migrations/DatabaseContextModelSnapshot.cs +++ b/WatchIt.Database/WatchIt.Database/Migrations/DatabaseContextModelSnapshot.cs @@ -121,7 +121,40 @@ namespace WatchIt.Database.Migrations b.ToTable("AccountProfilePictures"); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => + modelBuilder.Entity("WatchIt.Database.Model.Common.Country", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("smallint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Countries"); + + b.HasData( + new + { + Id = (short)1, + Name = "Afghanistan" + }, + new + { + Id = (short)2, + Name = "Albania" + }); + }); + + modelBuilder.Entity("WatchIt.Database.Model.Common.Genre", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -160,24 +193,19 @@ namespace WatchIt.Database.Migrations { Id = (short)3, Name = "Horror" + }, + new + { + Id = (short)4, + Name = "Action" + }, + new + { + Id = (short)5, + Name = "Drama" }); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.Property("GenreId") - .HasColumnType("smallint"); - - b.Property("MediaId") - .HasColumnType("bigint"); - - b.HasKey("GenreId", "MediaId"); - - b.HasIndex("MediaId"); - - b.ToTable("GenresMedia"); - }); - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { b.Property("Id") @@ -216,6 +244,21 @@ namespace WatchIt.Database.Migrations b.ToTable("Media"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaGenre", b => + { + b.Property("GenreId") + .HasColumnType("smallint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.HasKey("GenreId", "MediaId"); + + b.HasIndex("MediaId"); + + b.ToTable("MediaGenres"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => { b.Property("Id") @@ -308,6 +351,21 @@ namespace WatchIt.Database.Migrations b.ToTable("MediaPosterImages"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaProductionCountry", b => + { + b.Property("CountryId") + .HasColumnType("smallint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.HasKey("CountryId", "MediaId"); + + b.HasIndex("MediaId"); + + b.ToTable("MediaProductionCountrys"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeries", b => { b.Property("Id") @@ -397,25 +455,6 @@ namespace WatchIt.Database.Migrations b.Navigation("ProfilePicture"); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.GenreMedia", b => - { - b.HasOne("WatchIt.Database.Model.Genre.Genre", "Genre") - .WithMany("GenreMedia") - .HasForeignKey("GenreId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("WatchIt.Database.Model.Media.Media", "Media") - .WithMany("GenreMedia") - .HasForeignKey("MediaId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Genre"); - - b.Navigation("Media"); - }); - modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { b.HasOne("WatchIt.Database.Model.Media.MediaMovie", null) @@ -437,6 +476,25 @@ namespace WatchIt.Database.Migrations b.Navigation("MediaPosterImage"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaGenre", b => + { + b.HasOne("WatchIt.Database.Model.Common.Genre", "Genre") + .WithMany("MediaGenres") + .HasForeignKey("GenreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WatchIt.Database.Model.Media.Media", "Media") + .WithMany("MediaGenres") + .HasForeignKey("MediaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Genre"); + + b.Navigation("Media"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaPhotoImage", b => { b.HasOne("WatchIt.Database.Model.Media.Media", "Media") @@ -448,6 +506,25 @@ namespace WatchIt.Database.Migrations b.Navigation("Media"); }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaProductionCountry", b => + { + b.HasOne("WatchIt.Database.Model.Common.Country", "Country") + .WithMany("MediaProductionCountries") + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WatchIt.Database.Model.Media.Media", "Media") + .WithMany("MediaProductionCountries") + .HasForeignKey("MediaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Country"); + + b.Navigation("Media"); + }); + modelBuilder.Entity("WatchIt.Database.Model.Media.MediaSeriesEpisode", b => { b.HasOne("WatchIt.Database.Model.Media.MediaSeriesSeason", "MediaSeriesSeason") @@ -476,16 +553,23 @@ namespace WatchIt.Database.Migrations .IsRequired(); }); - modelBuilder.Entity("WatchIt.Database.Model.Genre.Genre", b => + modelBuilder.Entity("WatchIt.Database.Model.Common.Country", b => { - b.Navigation("GenreMedia"); + b.Navigation("MediaProductionCountries"); + }); + + modelBuilder.Entity("WatchIt.Database.Model.Common.Genre", b => + { + b.Navigation("MediaGenres"); }); modelBuilder.Entity("WatchIt.Database.Model.Media.Media", b => { - b.Navigation("GenreMedia"); + b.Navigation("MediaGenres"); b.Navigation("MediaPhotoImages"); + + b.Navigation("MediaProductionCountries"); }); modelBuilder.Entity("WatchIt.Database.Model.Media.MediaMovie", b => diff --git a/WatchIt.sln b/WatchIt.sln index 66d758f..e01b1b8 100644 --- a/WatchIt.sln +++ b/WatchIt.sln @@ -13,7 +13,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WatchIt.Database", "WatchIt EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WatchIt.Database", "WatchIt.Database\WatchIt.Database\WatchIt.Database.csproj", "{8CDAA140-05FC-4EB7-A9F5-A85032C8FD2F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WatchIt.Database.Model", "WatchIt.Database\WatchIt.Database.Model\WatchIt.Database.Model.csproj", "{46A294FF-F15F-4773-9E33-AFFC6DF2148C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WatchIt.Database.Model", "WatchIt.Database\WatchIt.Database.Model\WatchIt.Database.Model.csproj", "{46A294FF-F15F-4773-9E33-AFFC6DF2148C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WatchIt.Database.DataSeeding", "WatchIt.Database\WatchIt.Database.DataSeeding\WatchIt.Database.DataSeeding.csproj", "{EC685BDC-9C80-4D6D-94DA-F788976CD104}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -33,6 +35,10 @@ Global {46A294FF-F15F-4773-9E33-AFFC6DF2148C}.Debug|Any CPU.Build.0 = Debug|Any CPU {46A294FF-F15F-4773-9E33-AFFC6DF2148C}.Release|Any CPU.ActiveCfg = Release|Any CPU {46A294FF-F15F-4773-9E33-AFFC6DF2148C}.Release|Any CPU.Build.0 = Release|Any CPU + {EC685BDC-9C80-4D6D-94DA-F788976CD104}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC685BDC-9C80-4D6D-94DA-F788976CD104}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC685BDC-9C80-4D6D-94DA-F788976CD104}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC685BDC-9C80-4D6D-94DA-F788976CD104}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -40,6 +46,7 @@ Global GlobalSection(NestedProjects) = preSolution {8CDAA140-05FC-4EB7-A9F5-A85032C8FD2F} = {98C91E27-2C36-4C74-A80F-9ACD7F28BC54} {46A294FF-F15F-4773-9E33-AFFC6DF2148C} = {98C91E27-2C36-4C74-A80F-9ACD7F28BC54} + {EC685BDC-9C80-4D6D-94DA-F788976CD104} = {98C91E27-2C36-4C74-A80F-9ACD7F28BC54} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1D253492-C786-4DD9-80B5-7DE51D4D3304} diff --git a/genre.json b/genre.json new file mode 100644 index 0000000..acb126a --- /dev/null +++ b/genre.json @@ -0,0 +1,18 @@ +[ + { + "Id": 1, + "Name": "Comedy" + }, + { + "Id": 2, + "Name": "Thriller" + }, + { + "Id": 3, + "Name": "Horror" + }, + { + "Id": 4, + "Name": "Action" + } +] \ No newline at end of file