Completed all TODO tasks, what's left is to go over the code and do some cleanup regarding the album API functonality. #22, #25
This commit is contained in:
+2
-1
@@ -9,13 +9,14 @@ namespace Icarus.Models
|
||||
public class Album
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
public int Id { get; set; }
|
||||
public int AlbumId { get; set; }
|
||||
[JsonProperty("title")]
|
||||
public string Title { get; set; }
|
||||
[JsonProperty("album_artist")]
|
||||
public string AlbumArtist { get; set; }
|
||||
[JsonProperty("song_count")]
|
||||
public int SongCount { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public List<Song> Songs { get; set; }
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@ namespace Icarus.Models.Context
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Album>();
|
||||
modelBuilder.Entity<Album>()
|
||||
.ToTable("Album");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,13 +45,13 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = Convert.ToInt32(reader["Id"]);
|
||||
var id = Convert.ToInt32(reader["AlbumId"]);
|
||||
var title = reader["Title"].ToString();
|
||||
var albumArtist = reader["AlbumArtist"].ToString();
|
||||
var songCount = Convert.ToInt32(reader["SongCount"]);
|
||||
albums.Add(new Album
|
||||
{
|
||||
Id = id,
|
||||
AlbumId = id,
|
||||
Title = title,
|
||||
AlbumArtist = albumArtist,
|
||||
SongCount = songCount
|
||||
@@ -78,22 +78,22 @@ namespace Icarus.Models.Context
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
var query = "SELECT * FROM Album WHERE Id=@Id";
|
||||
var query = "SELECT * FROM Album WHERE AlbumId=@AlbumId";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Id", album.Id);
|
||||
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = Convert.ToInt32(reader["Id"]);
|
||||
var id = Convert.ToInt32(reader["AlbumId"]);
|
||||
var title = reader["Title"].ToString();
|
||||
var albumArtist = reader["AlbumArtist"].ToString();
|
||||
var songCount = Convert.ToInt32(reader["SongCount"]);
|
||||
album =new Album
|
||||
{
|
||||
Id = id,
|
||||
AlbumId = id,
|
||||
Title = title,
|
||||
AlbumArtist = albumArtist,
|
||||
SongCount = songCount
|
||||
@@ -121,21 +121,22 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
conn.Open();
|
||||
var query = "SELECT * FROM Album WHERE Title=@Title";
|
||||
_logger.Info($"Song title to rerieve album:\n{song.AlbumTitle}");
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", song.Album);
|
||||
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = Convert.ToInt32(reader["Id"]);
|
||||
var id = Convert.ToInt32(reader["AlbumId"]);
|
||||
var title = reader["Title"].ToString();
|
||||
var albumArtist = reader["AlbumArtist"].ToString();
|
||||
var songCount = Convert.ToInt32(reader["SongCount"]);
|
||||
album = new Album
|
||||
{
|
||||
Id = id,
|
||||
AlbumId = id,
|
||||
Title = title,
|
||||
AlbumArtist = albumArtist,
|
||||
SongCount = songCount
|
||||
@@ -162,10 +163,10 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
var query = "SELECT * FROM Album WHERE Id=@Id";
|
||||
var query = "SELECT * FROM Album WHERE AlbumId=@AlbumId";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Id", album.Id);
|
||||
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
@@ -198,7 +199,7 @@ namespace Icarus.Models.Context
|
||||
var query = "SELECT * FROM Album WHERE Title=@Title";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", song.Album);
|
||||
cmd.Parameters.AddWithValue("@Title", song.AlbumTitle);
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
@@ -230,7 +231,7 @@ namespace Icarus.Models.Context
|
||||
conn.Open();
|
||||
var query = "INSERT INTO Album(Title, AlbumArtist, " +
|
||||
"SongCount) VALUES (@Title, @AlbumArtist, " +
|
||||
"SongCount)";
|
||||
"@SongCount)";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", album.Title);
|
||||
@@ -251,6 +252,22 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
try
|
||||
{
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
var query = "UPDATE Album SET Title=@Title, AlbumArtist=" +
|
||||
"@AlbumArtist, SongCount=@SongCount WHERE AlbumId=@AlbumId";
|
||||
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", album.Title);
|
||||
cmd.Parameters.AddWithValue("@AlbumArtist", album.AlbumArtist);
|
||||
cmd.Parameters.AddWithValue("@SongCount", album.SongCount);
|
||||
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -264,13 +281,13 @@ namespace Icarus.Models.Context
|
||||
List<Album> albums = new List<Album>();
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = Convert.ToInt32(reader["Id"]);
|
||||
var id = Convert.ToInt32(reader["AlbumId"]);
|
||||
var title = reader["Title"].ToString();
|
||||
var albumArtist = reader["AlbumArtist"].ToString();
|
||||
var songCount = Convert.ToInt32(reader["SongCount"]);
|
||||
albums.Add(new Album
|
||||
{
|
||||
Id = id,
|
||||
AlbumId = id,
|
||||
Title = title,
|
||||
AlbumArtist = albumArtist,
|
||||
SongCount = songCount
|
||||
@@ -282,20 +299,22 @@ namespace Icarus.Models.Context
|
||||
private Album ParseSingleData(MySqlDataReader reader)
|
||||
{
|
||||
Album album = new Album();
|
||||
_logger.Info("Retrieving single album record");
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = Convert.ToInt32(reader["Id"]);
|
||||
var id = Convert.ToInt32(reader["AlbumId"]);
|
||||
var title = reader["Title"].ToString();
|
||||
var albumArtist = reader["AlbumArtist"].ToString();
|
||||
var songCount = Convert.ToInt32(reader["SongCount"]);
|
||||
album = new Album
|
||||
{
|
||||
Id = id,
|
||||
AlbumId = id,
|
||||
Title = title,
|
||||
AlbumArtist = albumArtist,
|
||||
SongCount = songCount
|
||||
};
|
||||
}
|
||||
_logger.Info("Single ablum retreived");
|
||||
|
||||
return album;
|
||||
}
|
||||
|
||||
@@ -33,20 +33,21 @@ namespace Icarus.Models.Context
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
string query = "INSERT INTO Songs(Title, Album, Artist," +
|
||||
" Year, Genre, Duration, Filename, SongPath) " +
|
||||
"VALUES(@Title, @Album, @Artist, @Year, @Genre, " +
|
||||
"@Duration, @Filename, @SongPath)";
|
||||
string query = "INSERT INTO Song(Title, AlbumTitle, Artist," +
|
||||
" Year, Genre, Duration, Filename, SongPath, AlbumId) " +
|
||||
"VALUES(@Title, @AlbumTitle, @Artist, @Year, @Genre, " +
|
||||
"@Duration, @Filename, @SongPath, @AlbumId)";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", song.Title);
|
||||
cmd.Parameters.AddWithValue("@Album", song.Album);
|
||||
cmd.Parameters.AddWithValue("@AlbumTitle", song.AlbumTitle);
|
||||
cmd.Parameters.AddWithValue("@Artist", song.Artist);
|
||||
cmd.Parameters.AddWithValue("@Year", song.Year);
|
||||
cmd.Parameters.AddWithValue("@Genre", song.Genre);
|
||||
cmd.Parameters.AddWithValue("@Duration", song.Duration);
|
||||
cmd.Parameters.AddWithValue("@Filename", song.Filename);
|
||||
cmd.Parameters.AddWithValue("@SongPath", song.SongPath);
|
||||
cmd.Parameters.AddWithValue("@AlbumId", song.AlbumId);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
@@ -56,8 +57,10 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
var exMsg = ex.Message;
|
||||
Console.WriteLine($"An error occurred:\n{exMsg}");
|
||||
_logger.Error(exMsg, "An error occurred");
|
||||
}
|
||||
}
|
||||
// TODO: Update this method to be compatible with the new AlbumId field
|
||||
public void UpdateSong(Song song)
|
||||
{
|
||||
try
|
||||
@@ -66,14 +69,14 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
string query = "UPDATE Songs SET Title=@Title, Album=@Album, " +
|
||||
string query = "UPDATE Song SET Title=@Title, AlbumTitle=@AlbumTitle, " +
|
||||
"Artist=@Artist, Year=@Year, Genre=@Genre, " +
|
||||
"Duration=@Duration, Filename=@Filename, " +
|
||||
"SongPath=@SongPath WHERE Id=@Id";
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@Title", song.Title);
|
||||
cmd.Parameters.AddWithValue("@Album", song.Album);
|
||||
cmd.Parameters.AddWithValue("@AlbumTitle", song.AlbumTitle);
|
||||
cmd.Parameters.AddWithValue("@Artist", song.Artist);
|
||||
cmd.Parameters.AddWithValue("@Year", song.Year);
|
||||
cmd.Parameters.AddWithValue("@Genre", song.Genre);
|
||||
@@ -91,6 +94,7 @@ namespace Icarus.Models.Context
|
||||
var msg = ex.Message;
|
||||
Console.WriteLine("An error occurred in MusicStoreContext:");
|
||||
Console.WriteLine(msg);
|
||||
_logger.Error(msg, "An error occurred");
|
||||
}
|
||||
}
|
||||
public void DeleteSong(int id)
|
||||
@@ -100,7 +104,7 @@ namespace Icarus.Models.Context
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
string query = "DELETE FROM Songs WHERE Id=@Id";
|
||||
string query = "DELETE FROM Song WHERE Id=@Id";
|
||||
|
||||
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||
{
|
||||
@@ -114,6 +118,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
var exMsg = ex.Message;
|
||||
Console.WriteLine($"An error occurred:\n{exMsg}");
|
||||
_logger.Error(exMsg, "An error occurred");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +130,7 @@ namespace Icarus.Models.Context
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
var query = "SELECT * FROM Songs";
|
||||
var query = "SELECT * FROM Song";
|
||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
@@ -135,7 +140,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
Id = Convert.ToInt32(reader["Id"]),
|
||||
Title = reader["Title"].ToString(),
|
||||
Album = reader["Album"].ToString(),
|
||||
AlbumTitle = reader["AlbumTitle"].ToString(),
|
||||
Artist = reader["Artist"].ToString(),
|
||||
Year = Convert.ToInt32(reader["Year"]),
|
||||
Genre = reader["Genre"].ToString(),
|
||||
@@ -152,6 +157,7 @@ namespace Icarus.Models.Context
|
||||
var exMsg = ex.Message;
|
||||
Console.WriteLine($"An error ocurred:\n{exMsg}");
|
||||
songs.Clear();
|
||||
_logger.Error(exMsg, "An error occurred");
|
||||
}
|
||||
|
||||
return songs;
|
||||
@@ -166,7 +172,7 @@ namespace Icarus.Models.Context
|
||||
using (MySqlConnection conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
var query = "SELECT * FROM Songs WHERE Id=@Id";
|
||||
var query = "SELECT * FROM Song WHERE Id=@Id";
|
||||
|
||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||
cmd.Parameters.AddWithValue("@Id", id);
|
||||
@@ -179,7 +185,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
Id = Convert.ToInt32(reader["Id"]),
|
||||
Title = reader["Title"].ToString(),
|
||||
Album = reader["Album"].ToString(),
|
||||
AlbumTitle = reader["AlbumTitle"].ToString(),
|
||||
Artist = reader["Artist"].ToString(),
|
||||
Year = Convert.ToInt32(reader["Year"]),
|
||||
Genre = reader["Genre"].ToString(),
|
||||
@@ -196,6 +202,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
var exMsg = ex.Message;
|
||||
Console.WriteLine($"An error ocurred: {exMsg}");
|
||||
_logger.Error(exMsg, "An error occurred");
|
||||
}
|
||||
|
||||
return song;
|
||||
@@ -211,7 +218,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
Id = Convert.ToInt32(reader["Id"]),
|
||||
Title = reader["Title"].ToString(),
|
||||
Album = reader["Album"].ToString(),
|
||||
AlbumTitle = reader["AlbumTitle"].ToString(),
|
||||
Artist = reader["Artist"].ToString(),
|
||||
Year = Convert.ToInt32(reader["Year"]),
|
||||
Genre = reader["Genre"].ToString(),
|
||||
@@ -235,7 +242,7 @@ namespace Icarus.Models.Context
|
||||
{
|
||||
Id = Convert.ToInt32(reader["Id"]),
|
||||
Title = reader["Title"].ToString(),
|
||||
Album = reader["Album"].ToString(),
|
||||
AlbumTitle = reader["AlbumTitle"].ToString(),
|
||||
Artist = reader["Artist"].ToString(),
|
||||
Year = Convert.ToInt32(reader["Year"]),
|
||||
Genre = reader["Genre"].ToString(),
|
||||
|
||||
@@ -22,7 +22,8 @@ namespace Icarus.Models.Context
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Song>()
|
||||
.HasOne(s => s.AlbumObject)
|
||||
.ToTable("Song")
|
||||
.HasOne(s => s.Album)
|
||||
.WithMany(a => a.Songs)
|
||||
.HasForeignKey(s => s.AlbumId)
|
||||
.HasConstraintName("ForeignKey_Song_Album");
|
||||
|
||||
+3
-2
@@ -17,7 +17,7 @@ namespace Icarus.Models
|
||||
[JsonProperty("title")]
|
||||
public string Title { get; set; }
|
||||
[JsonProperty("album")]
|
||||
public string Album { get; set; }
|
||||
public string AlbumTitle { get; set; }
|
||||
[JsonProperty("artist")]
|
||||
public string Artist { get; set; }
|
||||
[JsonProperty("year")]
|
||||
@@ -30,8 +30,9 @@ namespace Icarus.Models
|
||||
public string Filename { get; set; }
|
||||
[JsonProperty("song_path")]
|
||||
public string SongPath { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public Album AlbumObject { get; set; }
|
||||
public Album Album { get; set; }
|
||||
[JsonIgnore]
|
||||
public int AlbumId { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user