using System; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; using Icarus.Models; namespace Icarus.Database.Contexts; public class SongContext : DbContext { public DbSet Songs { get; set; } public SongContext(string connString) : base(new DbContextOptionsBuilder() .UseMySQL(connString).Options) { } public SongContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .ToTable("Song"); /** modelBuilder.Entity() .HasOne(s => s.Album) .WithMany(al => al.Songs) .HasForeignKey(s => s.AlbumID) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(sa => sa.SongArtist) .WithMany(ar => ar.Songs) .HasForeignKey(s => s.ArtistID) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(s => s.SongGenre) .WithMany(gnr => gnr.Songs) .HasForeignKey(s => s.GenreID) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(s => s.SongYear) .WithMany(yr => yr.Songs) .HasForeignKey(s => s.YearID) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(s => s.SongCoverArt) .WithMany(ca => ca.Songs) .HasForeignKey(s => s.CoverArtID) .OnDelete(DeleteBehavior.SetNull); */ modelBuilder.Entity() .Property(s => s.Year) .IsRequired(false); modelBuilder.Entity() .Property(s => s.GenreID) .IsRequired(false); modelBuilder.Entity() .Property(s => s.ArtistID) .IsRequired(false); modelBuilder.Entity() .Property(s => s.AlbumID) .IsRequired(false); modelBuilder.Entity() .Property(s => s.CoverArtID) .IsRequired(false); } public Song RetrieveRecord(Song song) { return Songs.FirstOrDefault(sng => sng.SongID == song.SongID); } public bool DoesRecordExist(Song song) { return Songs.FirstOrDefault(sng => sng.SongID == song.SongID) != null ? true : false; } }