Continuing work on the Genre and Year API functionality. It is now working, just need to add it to the api #41 #42
This commit is contained in:
@@ -30,6 +30,8 @@ namespace Icarus.Models.Context
|
||||
#region Methods
|
||||
public List<Genre> GetGenres()
|
||||
{
|
||||
_logger.Info("Retrieving Genre records");
|
||||
|
||||
var genres = new List<Genre>();
|
||||
|
||||
try
|
||||
@@ -60,6 +62,8 @@ namespace Icarus.Models.Context
|
||||
|
||||
public Genre GetGenre(Genre genre)
|
||||
{
|
||||
_logger.Info("Retrieving Genre record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
@@ -87,9 +91,44 @@ namespace Icarus.Models.Context
|
||||
|
||||
return genre;
|
||||
}
|
||||
public Genre GetGenre(Song song)
|
||||
{
|
||||
_logger.Info("Retrieving Genre record");
|
||||
|
||||
var genre = new Genre();
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "SELECT * FROM Genre WHERE GenreName=@GenreName";
|
||||
|
||||
using (var cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@GenreName", song.Genre);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
genre = ParseSingleData(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var msg = ex.Message;
|
||||
_logger.Error(msg, "An error occurred");
|
||||
}
|
||||
|
||||
return genre;
|
||||
}
|
||||
|
||||
public bool DoesGenreExist(Genre genre)
|
||||
{
|
||||
_logger.Info("Checking to see if Genre record exists");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
@@ -129,17 +168,19 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public bool DoesGenreExist(Song song)
|
||||
{
|
||||
_logger.Info("Checking to see if Genre record exists");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "SELECT * FROM Song WHERE Genre=@Genre";
|
||||
var query = "SELECT * FROM Genre WHERE GenreName=@GenreName";
|
||||
|
||||
using (var cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Genre", song.Genre);
|
||||
cmd.Parameters.AddWithValue("@GenreName", song.Genre);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
@@ -169,10 +210,14 @@ namespace Icarus.Models.Context
|
||||
|
||||
public void SaveGenre(Genre genre)
|
||||
{
|
||||
_logger.Info("Saving Genre record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "INSERT INTO Genre(GenreName, SongCount) VALUES(" +
|
||||
"@GenreName, @SongCount)";
|
||||
|
||||
@@ -193,10 +238,14 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public void UpdateGenre(Genre genre)
|
||||
{
|
||||
_logger.Info("Updating Genre record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "UPDATE Genre SET GenreName=@GenreName, " +
|
||||
"SongCount=@SongCount WHERE GenreId=@GenreId";
|
||||
|
||||
@@ -218,10 +267,14 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public void DeleteGenre(Genre genre)
|
||||
{
|
||||
_logger.Info("Deleting Genre record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "DELETE Genre WHERE GenreId=@GenreId";
|
||||
|
||||
using (var cmd = new MySqlCommand(query, conn))
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace Icarus.Models.Context
|
||||
conn.Open();
|
||||
string query = "INSERT INTO Song(Title, AlbumTitle, Artist," +
|
||||
" Year, Genre, Duration, Filename, SongPath, AlbumId, " +
|
||||
"ArtistId) VALUES(@Title, @AlbumTitle, @Artist, @Year, " +
|
||||
"@Genre, @Duration, @Filename, @SongPath, @AlbumId, " +
|
||||
"@ArtistId)";
|
||||
"ArtistId, GenreId, YearId) VALUES(@Title, @AlbumTitle, " +
|
||||
"@Artist, @Year, @Genre, @Duration, @Filename, @SongPath, " +
|
||||
"@AlbumId, @ArtistId, @GenreId, @YearId)";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", song.Title);
|
||||
@@ -49,6 +49,8 @@ namespace Icarus.Models.Context
|
||||
cmd.Parameters.AddWithValue("@SongPath", song.SongPath);
|
||||
cmd.Parameters.AddWithValue("@AlbumId", song.AlbumId);
|
||||
cmd.Parameters.AddWithValue("@ArtistId", song.ArtistId);
|
||||
cmd.Parameters.AddWithValue("@GenreId", song.GenreId);
|
||||
cmd.Parameters.AddWithValue("@YearId", song.YearId);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,9 @@ namespace Icarus.Models.Context
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Song>()
|
||||
.ToTable("Song")
|
||||
.ToTable("Song");
|
||||
|
||||
modelBuilder.Entity<Song>()
|
||||
.HasOne(s => s.Album)
|
||||
.WithMany(al => al.Songs)
|
||||
.HasForeignKey(s => s.AlbumId)
|
||||
@@ -33,6 +35,19 @@ namespace Icarus.Models.Context
|
||||
.WithMany(ar => ar.Songs)
|
||||
.HasForeignKey(s => s.ArtistId)
|
||||
.HasConstraintName("ForeignKey_Song_Artist");
|
||||
|
||||
modelBuilder.Entity<Song>()
|
||||
.HasOne(s => s.SongGenre)
|
||||
.WithMany(gnr => gnr.Songs)
|
||||
.HasForeignKey(s => s.GenreId)
|
||||
.HasConstraintName("HasForeignKey_Song_Genre");
|
||||
|
||||
modelBuilder.Entity<Song>()
|
||||
.HasOne(s => s.SongYear)
|
||||
.WithMany(yr => yr.Songs)
|
||||
.HasForeignKey(s => s.YearId)
|
||||
.HasConstraintName("HasForeignKey_Song_Year");
|
||||
|
||||
modelBuilder.Entity<Song>()
|
||||
.Property(s => s.Year)
|
||||
.IsRequired(false);
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace Icarus.Models.Context
|
||||
#region Methods
|
||||
public List<Year> GetSongYears()
|
||||
{
|
||||
_logger.Info("Retrieving Year records");
|
||||
|
||||
var yearValues = new List<Year>();
|
||||
|
||||
try
|
||||
@@ -60,6 +62,8 @@ namespace Icarus.Models.Context
|
||||
|
||||
public Year GetSongYear(Year year)
|
||||
{
|
||||
_logger.Info("Retrieving Year record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
@@ -87,9 +91,44 @@ namespace Icarus.Models.Context
|
||||
|
||||
return year;
|
||||
}
|
||||
public Year GetSongYear(Song song)
|
||||
{
|
||||
var year = new Year();
|
||||
|
||||
_logger.Info("Retrieving Year record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "SELECT * FROM Year WHERE YearValue=@YearValue";
|
||||
|
||||
using(var cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@YearValue", song.Year);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
year = ParseSingleData(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var msg = ex.Message;
|
||||
_logger.Error(msg, "An error occurred");
|
||||
}
|
||||
|
||||
return year;
|
||||
}
|
||||
|
||||
public bool DoesYearExist(Year year)
|
||||
{
|
||||
_logger.Info("Checking to see if Year record exists");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
@@ -128,17 +167,19 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public bool DoesYearExist(Song song)
|
||||
{
|
||||
_logger.Info("Checking to see if Year record exists");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "SELECT * FROM Song WHERE Year=@Year";
|
||||
var query = "SELECT * FROM Year WHERE YearValue=@YearValue";
|
||||
|
||||
using (var cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Year", song.Year);
|
||||
cmd.Parameters.AddWithValue("@YearValue", song.Year);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
@@ -167,6 +208,8 @@ namespace Icarus.Models.Context
|
||||
|
||||
public void SaveYear(Year year)
|
||||
{
|
||||
_logger.Info("Saving Year record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
@@ -193,9 +236,26 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public void UpdateYear(Year year)
|
||||
{
|
||||
_logger.Info("Deleting Year record");
|
||||
|
||||
try
|
||||
{
|
||||
// TODO: Add functionality for updating the Year record
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "UPDATE Year SET YearValue=@YearValue, SongCount=@SongCount " +
|
||||
"WHERE YearId=@YearId";
|
||||
|
||||
using (var cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@YearId", year.YearId);
|
||||
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
|
||||
cmd.Parameters.AddWithValue("@SongCount", year.SongCount);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -205,6 +265,8 @@ namespace Icarus.Models.Context
|
||||
}
|
||||
public void DeleteYear(Year year)
|
||||
{
|
||||
_logger.Info("Deleting Year record");
|
||||
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
|
||||
Reference in New Issue
Block a user