Song Count for corresponding tables are calcuated when retrieved #47
This commit is contained in:
@@ -673,6 +673,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
album.SongCount = 1;
|
album.SongCount = 1;
|
||||||
albumStore.SaveAlbum(album);
|
albumStore.SaveAlbum(album);
|
||||||
album = albumStore.GetAlbum(song);
|
album = albumStore.GetAlbum(song);
|
||||||
|
Console.WriteLine($"Album Id {album.AlbumId}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -724,6 +725,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
if (!genreStore.DoesGenreExist(song))
|
if (!genreStore.DoesGenreExist(song))
|
||||||
{
|
{
|
||||||
genreStore.SaveGenre(genre);
|
genreStore.SaveGenre(genre);
|
||||||
|
Console.WriteLine("Going to find genre");
|
||||||
genre = genreStore.GetGenre(song);
|
genre = genreStore.GetGenre(song);
|
||||||
var genreDump = $"Genre id {genre.GenreId} GenreName {genre.GenreName}" +
|
var genreDump = $"Genre id {genre.GenreId} GenreName {genre.GenreName}" +
|
||||||
$" Genre song Count {genre.SongCount}";
|
$" Genre song Count {genre.SongCount}";
|
||||||
@@ -807,7 +809,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
|
|
||||||
private Album UpdateAlbumInDatabase(Song oldSongRecord, Song newSongRecord, AlbumStoreContext albumStore)
|
private Album UpdateAlbumInDatabase(Song oldSongRecord, Song newSongRecord, AlbumStoreContext albumStore)
|
||||||
{
|
{
|
||||||
var albumRecord = albumStore.GetAlbum(oldSongRecord);
|
var albumRecord = albumStore.GetAlbum(oldSongRecord, true);
|
||||||
var oldAlbumTitle = oldSongRecord.AlbumTitle;
|
var oldAlbumTitle = oldSongRecord.AlbumTitle;
|
||||||
var oldAlbumArtist = oldSongRecord.Artist;
|
var oldAlbumArtist = oldSongRecord.Artist;
|
||||||
var newAlbumTitle = newSongRecord.AlbumTitle;
|
var newAlbumTitle = newSongRecord.AlbumTitle;
|
||||||
@@ -838,7 +840,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
{
|
{
|
||||||
_logger.Info("Decrementing existing album's song count");
|
_logger.Info("Decrementing existing album's song count");
|
||||||
|
|
||||||
albumRecord.SongCount -= 1;
|
//albumRecord.SongCount -= 1;
|
||||||
albumStore.UpdateAlbum(albumRecord);
|
albumStore.UpdateAlbum(albumRecord);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -867,16 +869,16 @@ namespace Icarus.Controllers.Managers
|
|||||||
|
|
||||||
var existingAlbumRecord = albumStore.GetAlbum(newSongRecord);
|
var existingAlbumRecord = albumStore.GetAlbum(newSongRecord);
|
||||||
existingAlbumRecord.AlbumArtist = newAlbumArtist;
|
existingAlbumRecord.AlbumArtist = newAlbumArtist;
|
||||||
existingAlbumRecord.SongCount += 1;
|
//existingAlbumRecord.SongCount += 1;
|
||||||
|
|
||||||
albumStore.UpdateAlbum(existingAlbumRecord);
|
albumStore.UpdateAlbum(existingAlbumRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
return albumStore.GetAlbum(newSongRecord);
|
return albumStore.GetAlbum(newSongRecord, true);
|
||||||
}
|
}
|
||||||
private Artist UpdateArtistInDatabase(Song oldSongRecord, Song newSongRecord, ArtistStoreContext artistStore)
|
private Artist UpdateArtistInDatabase(Song oldSongRecord, Song newSongRecord, ArtistStoreContext artistStore)
|
||||||
{
|
{
|
||||||
var oldArtistRecord = artistStore.GetArtist(oldSongRecord);
|
var oldArtistRecord = artistStore.GetArtist(oldSongRecord, true);
|
||||||
var oldArtistName = oldArtistRecord.Name;
|
var oldArtistName = oldArtistRecord.Name;
|
||||||
var newArtistName = newSongRecord.Artist;
|
var newArtistName = newSongRecord.Artist;
|
||||||
|
|
||||||
@@ -892,7 +894,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
{
|
{
|
||||||
_logger.Info("Decrementing existing artist's song count");
|
_logger.Info("Decrementing existing artist's song count");
|
||||||
|
|
||||||
oldArtistRecord.SongCount -= 1;
|
//oldArtistRecord.SongCount -= 1;
|
||||||
artistStore.UpdateArtist(oldArtistRecord);
|
artistStore.UpdateArtist(oldArtistRecord);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -919,16 +921,16 @@ namespace Icarus.Controllers.Managers
|
|||||||
_logger.Info("Updating existing artist record");
|
_logger.Info("Updating existing artist record");
|
||||||
|
|
||||||
var existingArtistRecord = artistStore.GetArtist(newSongRecord);
|
var existingArtistRecord = artistStore.GetArtist(newSongRecord);
|
||||||
existingArtistRecord.SongCount += 1;
|
//existingArtistRecord.SongCount += 1;
|
||||||
|
|
||||||
artistStore.UpdateArtist(existingArtistRecord);
|
artistStore.UpdateArtist(existingArtistRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
return artistStore.GetArtist(newSongRecord);
|
return artistStore.GetArtist(newSongRecord, true);
|
||||||
}
|
}
|
||||||
private Genre UpdateGenreInDatabase(Song oldSongRecord, Song newSongRecord, GenreStoreContext genreStore)
|
private Genre UpdateGenreInDatabase(Song oldSongRecord, Song newSongRecord, GenreStoreContext genreStore)
|
||||||
{
|
{
|
||||||
var oldGenreRecord = genreStore.GetGenre(oldSongRecord);
|
var oldGenreRecord = genreStore.GetGenre(oldSongRecord, true);
|
||||||
var oldGenreName = oldGenreRecord.GenreName;
|
var oldGenreName = oldGenreRecord.GenreName;
|
||||||
var newGenreName = newSongRecord.Genre;
|
var newGenreName = newSongRecord.Genre;
|
||||||
|
|
||||||
@@ -971,17 +973,17 @@ namespace Icarus.Controllers.Managers
|
|||||||
_logger.Info("Updating existing genre record");
|
_logger.Info("Updating existing genre record");
|
||||||
|
|
||||||
var existingGenreRecord = genreStore.GetGenre(newSongRecord);
|
var existingGenreRecord = genreStore.GetGenre(newSongRecord);
|
||||||
existingGenreRecord.SongCount += 1;
|
//existingGenreRecord.SongCount += 1;
|
||||||
|
|
||||||
genreStore.UpdateGenre(existingGenreRecord);
|
genreStore.UpdateGenre(existingGenreRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
return genreStore.GetGenre(newSongRecord);
|
return genreStore.GetGenre(newSongRecord, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
private Year UpdateYearInDatabase(Song oldSongRecord, Song newSongRecord, YearStoreContext yearStore)
|
private Year UpdateYearInDatabase(Song oldSongRecord, Song newSongRecord, YearStoreContext yearStore)
|
||||||
{
|
{
|
||||||
var oldYearRecord = yearStore.GetSongYear(oldSongRecord);
|
var oldYearRecord = yearStore.GetSongYear(oldSongRecord, true);
|
||||||
var oldYearValue = oldYearRecord.YearValue;
|
var oldYearValue = oldYearRecord.YearValue;
|
||||||
var newYearValue = newSongRecord.Year;
|
var newYearValue = newSongRecord.Year;
|
||||||
|
|
||||||
@@ -1024,12 +1026,12 @@ namespace Icarus.Controllers.Managers
|
|||||||
_logger.Info("Updating existing year record");
|
_logger.Info("Updating existing year record");
|
||||||
|
|
||||||
var existingYearRecord = yearStore.GetSongYear(newSongRecord);
|
var existingYearRecord = yearStore.GetSongYear(newSongRecord);
|
||||||
existingYearRecord.SongCount += 1;
|
//existingYearRecord.SongCount += 1;
|
||||||
|
|
||||||
yearStore.UpdateYear(existingYearRecord);
|
yearStore.UpdateYear(existingYearRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
return yearStore.GetSongYear(newSongRecord);
|
return yearStore.GetSongYear(newSongRecord, true);
|
||||||
}
|
}
|
||||||
private void UpdateSongInDatabase(ref Song oldSongRecord, ref Song newSongRecord, MusicStoreContext songStore,
|
private void UpdateSongInDatabase(ref Song oldSongRecord, ref Song newSongRecord, MusicStoreContext songStore,
|
||||||
ref SongResult result)
|
ref SongResult result)
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ namespace Icarus.Controllers
|
|||||||
|
|
||||||
Song song = context.GetSong(id);
|
Song song = context.GetSong(id);
|
||||||
|
|
||||||
|
Console.WriteLine("Here");
|
||||||
|
|
||||||
if (song.Id != 0)
|
if (song.Id != 0)
|
||||||
{
|
{
|
||||||
return Ok(song);
|
return Ok(song);
|
||||||
@@ -85,9 +87,8 @@ namespace Icarus.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPut("{id}")]
|
|
||||||
[Authorize("update:songs")]
|
[Authorize("update:songs")]
|
||||||
|
[HttpPut("{id}")]
|
||||||
public IActionResult Put(int id, [FromBody] Song song)
|
public IActionResult Put(int id, [FromBody] Song song)
|
||||||
{
|
{
|
||||||
MusicStoreContext context = HttpContext
|
MusicStoreContext context = HttpContext
|
||||||
|
|||||||
@@ -27,6 +27,36 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
|
public List<Album> GetAlbumWithoutCount()
|
||||||
|
{
|
||||||
|
var albums = new List<Album>();
|
||||||
|
|
||||||
|
if (AnyAlbums())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
var query = "SELECT * FROM Album";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
albums = ParseData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return albums;
|
||||||
|
}
|
||||||
public List<Album> GetAlbums()
|
public List<Album> GetAlbums()
|
||||||
{
|
{
|
||||||
List<Album> albums = new List<Album>();
|
List<Album> albums = new List<Album>();
|
||||||
@@ -96,13 +126,54 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "SELECT alb.*, COUNT(*) AS SongCount FROM Album alb " +
|
var query = "SELECT alb.*, 0 AS SongCount FROM Album alb " +
|
||||||
"LEFT JOIN Song sng ON alb.AlbumId=sng.AlbumId WHERE " +
|
"WHERE alb.Title=@Title LIMIT 1";
|
||||||
"sng.Id=@Id LIMIT 1";
|
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Id", song.Id);
|
Console.WriteLine($"Album title {song.AlbumTitle}");
|
||||||
|
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
album = ParseSingleData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
|
||||||
|
return album;
|
||||||
|
}
|
||||||
|
public Album GetAlbum(Song song, bool retrieveCount)
|
||||||
|
{
|
||||||
|
var album = new Album();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
var query = string.Empty;
|
||||||
|
if (retrieveCount)
|
||||||
|
{
|
||||||
|
query = "SELECT alb.*, COUNT(*) AS SongCount FROM Album alb " +
|
||||||
|
"LEFT JOIN Song sng ON alb.AlbumId=sng.AlbumId WHERE " +
|
||||||
|
"alb.Title=@Title GROUP BY alb.AlbumId LIMIT 1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = "SELECT alb.*, 0 AS SongCount FROM Album alb WHERE " +
|
||||||
|
"alb.Title=@Title LIMIT 1";
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
@@ -124,23 +195,11 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
album = GetAlbum(album);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(album.Title))
|
|
||||||
{
|
|
||||||
_logger.Info("Album exists");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_logger.Info("Album does not exist");
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Album WHERE AlbumId=@AlbumId";
|
var query = "SELECT alb.*, 0 AS SongCount FROM Album alb WHERE alb.AlbumId=@AlbumId";
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
||||||
@@ -157,7 +216,6 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -170,23 +228,11 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var album = GetAlbum(song);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(album.Title))
|
|
||||||
{
|
|
||||||
_logger.Info("Album exists");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_logger.Info("Album does not exist");
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Album WHERE Title=@Title";
|
var query = "SELECT alb.*, 0 AS SongCount FROM Album alb WHERE alb.Title=@Title";
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
||||||
@@ -203,7 +249,6 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -334,6 +379,33 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
return album;
|
return album;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool AnyAlbums()
|
||||||
|
{
|
||||||
|
var albums = new List<Album>();
|
||||||
|
|
||||||
|
using (var conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT * FROM Album";
|
||||||
|
|
||||||
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
albums = ParseData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (albums.Count > 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "SELECT * FROM Artist";
|
var query = "SELECT art.*, COUNT(*) AS SongCount FROM Artist " +
|
||||||
|
"art LEFT JOIN Song sng ON art.ArtistId=sng.ArtistId " +
|
||||||
|
"GROUPY BY art.ArtistId";
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
@@ -57,6 +60,113 @@ namespace Icarus.Models.Context
|
|||||||
return artists;
|
return artists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Artist GetArtist(Artist artist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_logger.Info("Retrieving artist record from the database");
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT art.*, COUNT(*) AS SongCount FROM Artist " +
|
||||||
|
"art LEFT JOIN Song sng ON art.ArtistId=sng.ArtistId " +
|
||||||
|
"WHERE ArtistId=@ArtistId";
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
artist = ParseSingleData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
|
public Artist GetArtist(Song song)
|
||||||
|
{
|
||||||
|
Artist artist = new Artist();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_logger.Info("Retrieving artist record from the database");
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT art.*, 0 AS SongCount FROM Artist " +
|
||||||
|
"art WHERE Name=@Name";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
artist = ParseSingleData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
|
public Artist GetArtist(Song song, bool retrieveCount)
|
||||||
|
{
|
||||||
|
var artist = new Artist();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_logger.Info("Retrieving artist record from the database");
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = string.Empty;
|
||||||
|
|
||||||
|
if (retrieveCount)
|
||||||
|
{
|
||||||
|
query = "SELECT art.*, COUNT(*) AS SongCount FROM Artist " +
|
||||||
|
"art LEFT JOIN Song sng ON art.ArtistId=sng.ArtistId " +
|
||||||
|
"WHERE art.Name=@Name GROUP BY art.ArtistId LIMIT 1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = "SELECT art.*, 0 AS SongCount FROM Artist art " +
|
||||||
|
"WHERE art.Name=@Name LIMIT 1";
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
artist = ParseSingleData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
|
|
||||||
public bool DoesArtistExist(Artist artist)
|
public bool DoesArtistExist(Artist artist)
|
||||||
{
|
{
|
||||||
@@ -67,7 +177,8 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Artist WHERE ArtistId=@ArtistId";
|
var query = "SELECT art.*, 0 AS SongCount FROM Artist art WHERE art.ArtistId=@ArtistId";
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
||||||
@@ -104,7 +215,7 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Artist WHERE Name=@Name";
|
var query = "SELECT art.*, 0 AS SongCount FROM Artist art WHERE art.Name=@Name";
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
||||||
@@ -214,67 +325,6 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Artist GetArtist(Artist artist)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_logger.Info("Retrieving artist record from the database");
|
|
||||||
using (MySqlConnection conn = GetConnection())
|
|
||||||
{
|
|
||||||
conn.Open();
|
|
||||||
|
|
||||||
var query = "SELECT * FROM Artist WHERE ArtistId=@ArtistId";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
|
||||||
{
|
|
||||||
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader())
|
|
||||||
{
|
|
||||||
artist = ParseSingleData(reader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var msg = ex.Message;
|
|
||||||
_logger.Error(msg, "An error occurred");
|
|
||||||
}
|
|
||||||
|
|
||||||
return artist;
|
|
||||||
}
|
|
||||||
public Artist GetArtist(Song song)
|
|
||||||
{
|
|
||||||
Artist artist = new Artist();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_logger.Info("Retrieving artist record from the database");
|
|
||||||
using (MySqlConnection conn = GetConnection())
|
|
||||||
{
|
|
||||||
conn.Open();
|
|
||||||
|
|
||||||
var query = "SELECT * FROM Artist WHERE Name=@Name";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
|
||||||
{
|
|
||||||
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader())
|
|
||||||
{
|
|
||||||
artist = ParseSingleData(reader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var msg = ex.Message;
|
|
||||||
_logger.Error(msg, "An error occurred");
|
|
||||||
}
|
|
||||||
|
|
||||||
return artist;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private List<Artist> ParseData(MySqlDataReader reader)
|
private List<Artist> ParseData(MySqlDataReader reader)
|
||||||
{
|
{
|
||||||
List<Artist> artists = new List<Artist>();
|
List<Artist> artists = new List<Artist>();
|
||||||
|
|||||||
@@ -28,12 +28,15 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public List<Genre> GetGenres()
|
public List<Genre> GetGenresWithoutCount()
|
||||||
{
|
{
|
||||||
_logger.Info("Retrieving Genre records");
|
_logger.Info("Retrieving all genre records without song counts");
|
||||||
|
|
||||||
var genres = new List<Genre>();
|
var genres = new List<Genre>();
|
||||||
|
|
||||||
|
if (AnyGenre())
|
||||||
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
@@ -56,6 +59,44 @@ namespace Icarus.Models.Context
|
|||||||
var msg = ex.Message;
|
var msg = ex.Message;
|
||||||
_logger.Error(msg, "An error occurred");
|
_logger.Error(msg, "An error occurred");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return genres;
|
||||||
|
}
|
||||||
|
public List<Genre> GetGenres()
|
||||||
|
{
|
||||||
|
_logger.Info("Retrieving Genre records");
|
||||||
|
|
||||||
|
var genres = new List<Genre>();
|
||||||
|
|
||||||
|
if (AnyGenre())
|
||||||
|
{
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT gnr.*, COUNT(*) AS SongCount FROM Genre " +
|
||||||
|
"gnr LEFt JOIN Song sng ON gnr.GenreId=sng.GenreId " +
|
||||||
|
"GROUP BY gnr.GenreId";
|
||||||
|
|
||||||
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
genres = ParseData(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return genres;
|
return genres;
|
||||||
}
|
}
|
||||||
@@ -64,13 +105,17 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
_logger.Info("Retrieving Genre record");
|
_logger.Info("Retrieving Genre record");
|
||||||
|
|
||||||
|
if (DoesGenreExist(genre))
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Genre WHERE GenreId=@GenreId";
|
var query = "SELECT gnr.*, COUNT(*) AS SongCount FROM Genre " +
|
||||||
|
"gnr LEFT JOIN Song sng ON gnr.GenreId=sng.GenreId " +
|
||||||
|
"WHERE gnr.GenreId=@GenreId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -88,6 +133,7 @@ namespace Icarus.Models.Context
|
|||||||
var msg = ex.Message;
|
var msg = ex.Message;
|
||||||
_logger.Error(msg, "An error occurred");
|
_logger.Error(msg, "An error occurred");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return genre;
|
return genre;
|
||||||
}
|
}
|
||||||
@@ -97,17 +143,21 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
var genre = new Genre();
|
var genre = new Genre();
|
||||||
|
|
||||||
|
if (DoesGenreExist(song))
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Genre WHERE GenreName=@GenreName";
|
var query = "SELECT gnr.*, 0 AS SongCount FROM Genre " +
|
||||||
|
"gnr WHERE gnr.GenreName=@GenreName";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@GenreName", song.Genre);
|
cmd.Parameters.AddWithValue("@GenreName", song.Genre);
|
||||||
|
_logger.Info($"Song genre:\n\n\n {song.Genre}");
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
@@ -121,6 +171,57 @@ namespace Icarus.Models.Context
|
|||||||
var msg = ex.Message;
|
var msg = ex.Message;
|
||||||
_logger.Error(msg, "An error occurred");
|
_logger.Error(msg, "An error occurred");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return genre;
|
||||||
|
}
|
||||||
|
public Genre GetGenre(Song song, bool retrieveCount)
|
||||||
|
{
|
||||||
|
_logger.Info("Retrieving Genre record");
|
||||||
|
|
||||||
|
var genre = new Genre();
|
||||||
|
|
||||||
|
if (DoesGenreExist(song))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = string.Empty;
|
||||||
|
|
||||||
|
if (retrieveCount)
|
||||||
|
{
|
||||||
|
query = "SELECT gnr.*, 0 AS SongCount FROM Genre gnr " +
|
||||||
|
"LEFT JOIN Song sng ON gnr.GenreId=sng.GenreId " +
|
||||||
|
"WHERE gnr.GenreName=@GenreName GROUP BY gnr.GenreId " +
|
||||||
|
"LIMIT 1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = "SELECT gnr.*, 0 AS SongCount FROM Genre gnr " +
|
||||||
|
"WHERE gnr.GenreName=@GenreName LIMIT 1";
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@GenreName", song.Genre);
|
||||||
|
_logger.Info($"Song genre:\n\n\n {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;
|
return genre;
|
||||||
}
|
}
|
||||||
@@ -135,7 +236,8 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Genre WHERE GenreId=@GenreId";
|
var query = "SELECT gnr.*, 0 AS SongCount FROM Genre gnr WHERE " +
|
||||||
|
"gnr.GenreId=@GenreId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -172,13 +274,12 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var genre = ParseSingleData(song);
|
|
||||||
|
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Genre WHERE GenreName=@GenreName";
|
var query = "SELECT gnr.*, 0 AS SongCount FROM Genre gnr WHERE " +
|
||||||
|
"gnr.GenreName=@GenreName";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -198,7 +299,6 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -335,6 +435,42 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
return genre;
|
return genre;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool AnyGenre()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT * FROM Genre";
|
||||||
|
|
||||||
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
var genres = ParseData(reader);
|
||||||
|
|
||||||
|
if (genres.Count > 0)
|
||||||
|
{
|
||||||
|
_logger.Info("Genres records");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.Info("No genre records found");
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace Icarus.Models.Context
|
|||||||
", PhoneNumber, Firstname, Lastname, EmailVerified) " +
|
", PhoneNumber, Firstname, Lastname, EmailVerified) " +
|
||||||
"VALUES(@Username, @Password, @Nickname, @Email, @PhoneNumber," +
|
"VALUES(@Username, @Password, @Nickname, @Email, @PhoneNumber," +
|
||||||
" @Firstname, @Lastname, @EmailVerified)";
|
" @Firstname, @Lastname, @EmailVerified)";
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Username", user.Username);
|
cmd.Parameters.AddWithValue("@Username", user.Username);
|
||||||
|
|||||||
@@ -40,7 +40,9 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Year";
|
var query = "SELECT yr.*, COUNT(*) AS SongCount FROM Year " +
|
||||||
|
"yr LEFT JOIN Song sng ON yr.YearId=sng.YearId " +
|
||||||
|
"GROUP BY gnr.YearId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -70,7 +72,9 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Year WHERE YearId=@YearId";
|
var query = "SELECT yr.*, COUNT(*) AS SongCount FROM Year " +
|
||||||
|
"yr LEFT JOIN Song sng ON yr.YearId=sng.YearId WHERE " +
|
||||||
|
"YearId=@YearId GROUP BY yr.YearId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -103,7 +107,53 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Year WHERE YearValue=@YearValue";
|
var query = "SELECT yr.*, 0 AS SongCount FROM Year " +
|
||||||
|
"yr WHERE yr.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 Year GetSongYear(Song song, bool retrieveCount)
|
||||||
|
{
|
||||||
|
var year = new Year();
|
||||||
|
|
||||||
|
_logger.Info("Retrieving year record");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = string.Empty;
|
||||||
|
|
||||||
|
if (retrieveCount)
|
||||||
|
{
|
||||||
|
query = "SELECT yr.*, COUNT(*) AS SongCount FROM Year yr " +
|
||||||
|
"LEFT JOIN Song sng ON yr.YearValue=sng.Year WHERE " +
|
||||||
|
"yr.YearValue=@YearValue GROUP BY yr.YearId LIMIT 1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = "SELECT yr.*, 0 AS SongCount FROM Year yr " +
|
||||||
|
"WHERE yr.YearValue=@YearValue LIMIT 1";
|
||||||
|
}
|
||||||
|
|
||||||
using(var cmd = new MySqlCommand(query, conn))
|
using(var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -135,7 +185,8 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Year WHERE YearId=@YearId";
|
var query = "SELECT yr.*, 0 AS SongCount FROM Year yr WHERE " +
|
||||||
|
"yr.YearId=@YearId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
@@ -175,7 +226,8 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "SELECT * FROM Year WHERE YearValue=@YearValue";
|
var query = "SELECT yr.*, 0 AS SongCount FROM Year yr WHERE " +
|
||||||
|
"yr.YearValue=@YearValue";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user