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:
amazing-username
2019-05-17 22:31:57 -04:00
parent a471d40cb6
commit 30abf31877
8 changed files with 279 additions and 13 deletions
+55 -2
View File
@@ -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))
+5 -3
View File
@@ -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();
}
+16 -1
View File
@@ -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);
+65 -3
View File
@@ -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())
+10
View File
@@ -37,5 +37,15 @@ namespace Icarus.Models
public Artist SongArtist { get; set; }
[JsonIgnore]
public int ArtistId { get; set; }
[JsonIgnore]
public Genre SongGenre { get; set; }
[JsonIgnore]
public int GenreId { get; set; }
[JsonIgnore]
public Year SongYear { get; set; }
[JsonIgnore]
public int YearId { get; set; }
}
}