Continuing work on issue #41 and #42. Added functionality to delete album and artist records

This commit is contained in:
amazing-username
2019-05-16 21:47:19 -04:00
parent 8f6364922b
commit a471d40cb6
5 changed files with 367 additions and 9 deletions
+23
View File
@@ -273,6 +273,29 @@ namespace Icarus.Models.Context
_logger.Error(msg, "An error occurred"); _logger.Error(msg, "An error occurred");
} }
} }
public void DeleteAlbum(Album album)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "DELETE Album WHERE AlbumId=@AlbumId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@AlbumId", album.AlbumId);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
private List<Album> ParseData(MySqlDataReader reader) private List<Album> ParseData(MySqlDataReader reader)
{ {
+26
View File
@@ -192,6 +192,32 @@ namespace Icarus.Models.Context
_logger.Error(msg, "An error occurred"); _logger.Error(msg, "An error occurred");
} }
} }
public void DeleteArtist(Artist artist)
{
try
{
_logger.Info("Deleting artist record");
using (var conn = GetConnection())
{
conn.Open();
var query = "DELETE Artist WHERE ArtistId=@ArtistId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@ArtistId", artist.ArtistId);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
public Artist GetArtist(Artist artist) public Artist GetArtist(Artist artist)
{ {
+78 -2
View File
@@ -123,6 +123,8 @@ namespace Icarus.Models.Context
_logger.Error(msg, "An error occurred"); _logger.Error(msg, "An error occurred");
} }
_logger.Info("Genre does not exist");
return false; return false;
} }
public bool DoesGenreExist(Song song) public bool DoesGenreExist(Song song)
@@ -133,11 +135,11 @@ namespace Icarus.Models.Context
{ {
conn.Open(); conn.Open();
var query = "SELECT * FROM Genre WHERE GenreName=@GenreName"; var query = "SELECT * FROM Song WHERE Genre=@Genre";
using (var cmd = new MySqlCommand(query, conn)) using (var cmd = new MySqlCommand(query, conn))
{ {
cmd.Parameters.AddWithValue("@GenreName", song.Genre); cmd.Parameters.AddWithValue("@Genre", song.Genre);
using (var reader = cmd.ExecuteReader()) using (var reader = cmd.ExecuteReader())
{ {
@@ -160,9 +162,83 @@ namespace Icarus.Models.Context
_logger.Error(msg, "An error occurred"); _logger.Error(msg, "An error occurred");
} }
_logger.Info("Genre does not exist");
return false; return false;
} }
public void SaveGenre(Genre genre)
{
try
{
using (var conn = GetConnection())
{
var query = "INSERT INTO Genre(GenreName, SongCount) VALUES(" +
"@GenreName, @SongCount)";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
cmd.Parameters.AddWithValue("@SongCount", genre.SongCount);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
public void UpdateGenre(Genre genre)
{
try
{
using (var conn = GetConnection())
{
var query = "UPDATE Genre SET GenreName=@GenreName, " +
"SongCount=@SongCount WHERE GenreId=@GenreId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@GenreName", genre.GenreName);
cmd.Parameters.AddWithValue("@SongCount", genre.SongCount);
cmd.Parameters.AddWithValue("@GenreId", genre.GenreId);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
public void DeleteGenre(Genre genre)
{
try
{
using (var conn = GetConnection())
{
var query = "DELETE Genre WHERE GenreId=@GenreId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@GenreId", genre.GenreId);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
private List<Genre> ParseData(MySqlDataReader reader) private List<Genre> ParseData(MySqlDataReader reader)
{ {
var genres = new List<Genre>(); var genres = new List<Genre>();
+227 -2
View File
@@ -28,20 +28,245 @@ namespace Icarus.Models.Context
#region Methods #region Methods
public List<Year> GetSongYear() public List<Year> GetSongYears()
{ {
var yearValues = new List<Year>(); var yearValues = new List<Year>();
try
{
using (var conn = GetConnection()) using (var conn = GetConnection())
{ {
conn.Open(); conn.Open();
var query = "SELECT * FROM Year"; var query = "SELECT * FROM Year";
// TODO: Left off here for the YearStore
using (var cmd = new MySqlCommand(query, conn))
{
using (var reader = cmd.ExecuteReader())
{
yearValues = ParseData(reader);
}
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
} }
return yearValues; return yearValues;
} }
public Year GetSongYear(Year year)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "SELECT * FROM Year WHERE YearId=@YearId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@YearId", year.YearId);
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)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "SELECT * FROM Year WHERE YearId=@YearId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@YearId", year.YearId);
using (var reader = cmd.ExecuteReader())
{
year = ParseSingleData(reader);
if (year.YearValue > 0)
{
_logger.Info("Year record exists");
return true;
}
}
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
_logger.Info("Year record does not exist");
return false;
}
public bool DoesYearExist(Song song)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "SELECT * FROM Song WHERE Year=@Year";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@Year", song.Year);
using (var reader = cmd.ExecuteReader())
{
var year = ParseSingleData(reader);
if (year.YearValue > 0)
{
_logger.Info("Year record exists");
return true;
}
}
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
_logger.Info("Year record does not exist");
return false;
}
public void SaveYear(Year year)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "INSERT INTO Year(YearValue, SongCount) VALUES(" +
"@YearValue, @SongCount)";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@YearValue", year.YearValue);
cmd.Parameters.AddWithValue("@SongCount", year.SongCount);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
public void UpdateYear(Year year)
{
try
{
// TODO: Add functionality for updating the Year record
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
public void DeleteYear(Year year)
{
try
{
using (var conn = GetConnection())
{
conn.Open();
var query = "DELETE Year WHERE YearId=@YearId";
using (var cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@YearId", year.YearId);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
_logger.Error(msg, "An error occurred");
}
}
private List<Year> ParseData(MySqlDataReader reader)
{
var yearValues = new List<Year>();
while (reader.Read())
{
var id = Convert.ToInt32(reader["YearId"].ToString());
var year = Convert.ToInt32(reader["YearValue"].ToString());
var songCount = Convert.ToInt32(reader["SongCount"].ToString());
yearValues.Add(new Year
{
YearId = id,
YearValue = year,
SongCount = songCount
});
}
return yearValues;
}
private Year ParseSingleData(MySqlDataReader reader)
{
var yearValue = new Year();
while (reader.Read())
{
var id = Convert.ToInt32(reader["YearId"].ToString());
var year = Convert.ToInt32(reader["YearValue"].ToString());
var songCount = Convert.ToInt32(reader["SongCount"].ToString());
yearValue.YearId = id;
yearValue.YearValue = year;
yearValue.SongCount = songCount;
}
return yearValue;
}
#endregion #endregion
} }
} }
+10 -2
View File
@@ -98,7 +98,6 @@ namespace Icarus
var connString = Configuration.GetConnectionString("DefaultConnection"); var connString = Configuration.GetConnectionString("DefaultConnection");
// TODO: Add the Genre and Year stores #41 and #42.
services.Add(new ServiceDescriptor(typeof(MusicStoreContext), services.Add(new ServiceDescriptor(typeof(MusicStoreContext),
new MusicStoreContext(Configuration new MusicStoreContext(Configuration
.GetConnectionString("DefaultConnection")))); .GetConnectionString("DefaultConnection"))));
@@ -111,6 +110,14 @@ namespace Icarus
new ArtistStoreContext(Configuration new ArtistStoreContext(Configuration
.GetConnectionString("DefaultConnection")))); .GetConnectionString("DefaultConnection"))));
services.Add(new ServiceDescriptor(typeof(GenreStoreContext),
new GenreStoreContext(Configuration
.GetConnectionString("DefaultConnection"))));
services.Add(new ServiceDescriptor(typeof(YearStoreContext),
new YearStoreContext(Configuration
.GetConnectionString("DefaultConnection"))));
services.Add(new ServiceDescriptor(typeof(UserStoreContext), services.Add(new ServiceDescriptor(typeof(UserStoreContext),
new UserStoreContext(Configuration new UserStoreContext(Configuration
.GetConnectionString("DefaultConnection")))); .GetConnectionString("DefaultConnection"))));
@@ -119,7 +126,8 @@ namespace Icarus
services.AddDbContext<AlbumContext>(options => options.UseMySQL(connString)); services.AddDbContext<AlbumContext>(options => options.UseMySQL(connString));
services.AddDbContext<ArtistContext>(options => options.UseMySQL(connString)); services.AddDbContext<ArtistContext>(options => options.UseMySQL(connString));
services.AddDbContext<UserContext>(options => options.UseMySQL(connString)); services.AddDbContext<UserContext>(options => options.UseMySQL(connString));
// TODO: Add the Genre and Year contexts #41 and #42 services.AddDbContext<GenreContext>(options => options.UseMySQL(connString));
services.AddDbContext<YearContext>(options => options.UseMySQL(connString));
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.