The SongCount field is not mapped during migrations. Working on changes to the StoreContext classes. These changes will calculate the song count for the album, artist, genre, and year records when querying data. The other change is to check to see if the record exist in the first place before querying using a left join. #47
This commit is contained in:
@@ -634,8 +634,11 @@ namespace Icarus.Controllers.Managers
|
|||||||
{
|
{
|
||||||
_logger.Info("Starting process to save the song to the database");
|
_logger.Info("Starting process to save the song to the database");
|
||||||
|
|
||||||
|
MetadataRetriever.PrintMetadata(song);
|
||||||
SaveAlbumToDatabase(ref song, albumStore);
|
SaveAlbumToDatabase(ref song, albumStore);
|
||||||
|
MetadataRetriever.PrintMetadata(song);
|
||||||
SaveArtistToDatabase(ref song, artistStore);
|
SaveArtistToDatabase(ref song, artistStore);
|
||||||
|
MetadataRetriever.PrintMetadata(song);
|
||||||
|
|
||||||
_logger.Info($"Song;\nTitle {song.Title}\nAlbum {song.AlbumTitle}\nAlbum Id {song.AlbumId}\nArtist {song.ArtistId}");
|
_logger.Info($"Song;\nTitle {song.Title}\nAlbum {song.AlbumTitle}\nAlbum Id {song.AlbumId}\nArtist {song.ArtistId}");
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ namespace Icarus.Models
|
|||||||
[JsonProperty("album_artist")]
|
[JsonProperty("album_artist")]
|
||||||
public string AlbumArtist { get; set; }
|
public string AlbumArtist { get; set; }
|
||||||
[JsonProperty("song_count")]
|
[JsonProperty("song_count")]
|
||||||
|
[NotMapped]
|
||||||
public int SongCount { get; set; }
|
public int SongCount { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ namespace Icarus.Models
|
|||||||
[JsonProperty("name")]
|
[JsonProperty("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
[JsonProperty("song_count")]
|
[JsonProperty("song_count")]
|
||||||
|
[NotMapped]
|
||||||
public int SongCount { get; set; }
|
public int SongCount { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|||||||
@@ -36,7 +36,9 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "SELECT * FROM Album";
|
var query = "SELECT alb.*,COUNT(*) AS SongCount FROM Album alb " +
|
||||||
|
"LEFT JOIN Song sng ON alb.AlbumId=sng.AlbumId WHERE " +
|
||||||
|
"alb.AlbumId=sng.AlbumId GROUP BY alb.AlbumId";
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
@@ -63,7 +65,9 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "SELECT * FROM Album WHERE AlbumId=@AlbumId";
|
var query = "SELECT alb.*, COUNT(*) AS SongCount FROM Album alb " +
|
||||||
|
"LEFT JOIN Song sng ON alb.AlbumId=sng.AlbumId WHERE "+
|
||||||
|
"alb.AlbumId=@AlbumId LIMIT 1";
|
||||||
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);
|
||||||
@@ -92,11 +96,13 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "SELECT * FROM Album WHERE Title=@Title";
|
var query = "SELECT alb.*, COUNT(*) AS SongCount FROM Album alb " +
|
||||||
|
"LEFT JOIN Song sng ON alb.AlbumId=sng.AlbumId WHERE " +
|
||||||
|
"sng.Id=@Id LIMIT 1";
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
cmd.Parameters.AddWithValue("@Id", song.Id);
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
@@ -118,6 +124,18 @@ 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();
|
||||||
@@ -139,6 +157,7 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -151,6 +170,18 @@ 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();
|
||||||
@@ -172,6 +203,7 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -188,14 +220,12 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "INSERT INTO Album(Title, AlbumArtist, " +
|
var query = "INSERT INTO Album(Title, AlbumArtist)" +
|
||||||
"SongCount) VALUES (@Title, @AlbumArtist, " +
|
" VALUES (@Title, @AlbumArtist)";
|
||||||
"@SongCount)";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Title", album.Title);
|
cmd.Parameters.AddWithValue("@Title", album.Title);
|
||||||
cmd.Parameters.AddWithValue("@AlbumArtist", album.AlbumArtist);
|
cmd.Parameters.AddWithValue("@AlbumArtist", album.AlbumArtist);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", album.SongCount);
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -215,13 +245,12 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "UPDATE Album SET Title=@Title, AlbumArtist=" +
|
var query = "UPDATE Album SET Title=@Title, AlbumArtist=" +
|
||||||
"@AlbumArtist, SongCount=@SongCount WHERE AlbumId=@AlbumId";
|
"@AlbumArtist WHERE AlbumId=@AlbumId";
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Title", album.Title);
|
cmd.Parameters.AddWithValue("@Title", album.Title);
|
||||||
cmd.Parameters.AddWithValue("@AlbumArtist", album.AlbumArtist);
|
cmd.Parameters.AddWithValue("@AlbumArtist", album.AlbumArtist);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", album.SongCount);
|
|
||||||
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace Icarus.Models.Context
|
|||||||
public class ArtistStoreContext : BaseStoreContext
|
public class ArtistStoreContext : BaseStoreContext
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
//private static Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -143,13 +142,11 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "INSERT INTO Artist(Name, SongCount) " +
|
var query = "INSERT INTO Artist(Name) VALUES(@Name)";
|
||||||
"VALUES(@Name, @SongCount)";
|
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Name", artist.Name);
|
cmd.Parameters.AddWithValue("@Name", artist.Name);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", artist.SongCount);
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -171,13 +168,11 @@ namespace Icarus.Models.Context
|
|||||||
using (MySqlConnection conn = GetConnection())
|
using (MySqlConnection conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
var query = "UPDATE Artist SET Name=@Name, SongCount" +
|
var query = "UPDATE Artist SET Name=@Name WHERE ArtistId=@ArtistId";
|
||||||
"=@SongCount WHERE ArtistId=@ArtistId";
|
|
||||||
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@Name", artist.Name);
|
cmd.Parameters.AddWithValue("@Name", artist.Name);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", artist.SongCount);
|
|
||||||
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
|||||||
@@ -172,6 +172,8 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var genre = ParseSingleData(song);
|
||||||
|
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
@@ -196,6 +198,7 @@ namespace Icarus.Models.Context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -218,13 +221,11 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "INSERT INTO Genre(GenreName, SongCount) VALUES(" +
|
var query = "INSERT INTO Genre(GenreName) VALUES(@GenreName)";
|
||||||
"@GenreName, @SongCount)";
|
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
|
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", genre.SongCount);
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -246,13 +247,12 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "UPDATE Genre SET GenreName=@GenreName, " +
|
var query = "UPDATE Genre SET GenreName=@GenreName " +
|
||||||
"SongCount=@SongCount WHERE GenreId=@GenreId";
|
"WHERE GenreId=@GenreId";
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
|
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", genre.SongCount);
|
|
||||||
cmd.Parameters.AddWithValue("@GenreId", genre.GenreId);
|
cmd.Parameters.AddWithValue("@GenreId", genre.GenreId);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
|||||||
@@ -216,13 +216,11 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "INSERT INTO Year(YearValue, SongCount) VALUES(" +
|
var query = "INSERT INTO Year(YearValue) VALUES(@YearValue)";
|
||||||
"@YearValue, @SongCount)";
|
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
|
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", year.SongCount);
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -244,14 +242,12 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = "UPDATE Year SET YearValue=@YearValue, SongCount=@SongCount " +
|
var query = "UPDATE Year SET YearValue=@YearValue WHERE YearId=@YearId";
|
||||||
"WHERE YearId=@YearId";
|
|
||||||
|
|
||||||
using (var cmd = new MySqlCommand(query, conn))
|
using (var cmd = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@YearId", year.YearId);
|
cmd.Parameters.AddWithValue("@YearId", year.YearId);
|
||||||
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
|
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
|
||||||
cmd.Parameters.AddWithValue("@SongCount", year.SongCount);
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ namespace Icarus.Models
|
|||||||
[JsonProperty("genre")]
|
[JsonProperty("genre")]
|
||||||
public string GenreName { get; set; }
|
public string GenreName { get; set; }
|
||||||
[JsonProperty("song_count")]
|
[JsonProperty("song_count")]
|
||||||
|
[NotMapped]
|
||||||
public int SongCount { get; set; }
|
public int SongCount { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ namespace Icarus.Models
|
|||||||
[JsonProperty("year")]
|
[JsonProperty("year")]
|
||||||
public int YearValue { get; set; }
|
public int YearValue { get; set; }
|
||||||
[JsonProperty("song_count")]
|
[JsonProperty("song_count")]
|
||||||
|
[NotMapped]
|
||||||
public int SongCount { get; set; }
|
public int SongCount { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|||||||
Reference in New Issue
Block a user