From 2a69392d98f5d9cee240ce72d9fcb6cf0c8b4279 Mon Sep 17 00:00:00 2001 From: amazing-username Date: Tue, 14 May 2019 23:33:29 -0400 Subject: [PATCH] Continuing to provide functionality to the GenreStoreContext class #41 --- Models/Context/GenreStoreContext.cs | 103 ++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/Models/Context/GenreStoreContext.cs b/Models/Context/GenreStoreContext.cs index 6f23986..da88c6a 100644 --- a/Models/Context/GenreStoreContext.cs +++ b/Models/Context/GenreStoreContext.cs @@ -28,6 +28,109 @@ namespace Icarus.Models.Context #region Methods + public List GetGenres() + { + var genres = new List(); + + try + { + using (var conn = GetConnection()) + { + conn.Open(); + + var query = "SELECT * FROM Genre"; + + 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; + } + + public Genre GetGenre(Genre genre) + { + try + { + using (var conn = GetConnection()) + { + conn.Open(); + + var query = "SELECT * FROM Genre WHERE GenreId=@GenreId"; + + using (var cmd = new MySqlCommand(query, conn)) + { + cmd.Parameters.AddWithValue("@GenreId", genre.GenreId); + + using (var reader = cmd.ExecuteReader()) + { + genre = ParseSingleData(reader); + } + } + } + } + catch (Exception ex) + { + var msg = ex.Message; + _logger.Error(msg, "An error occurred"); + } + + return genre; + } + + private List ParseData(MySqlDataReader reader) + { + var genres = new List(); + _logger.Info("Retrieving genre records"); + + while (reader.Read()) + { + var id = Convert.ToInt32(reader["GenreId"].ToString()); + var genreName = reader["GenreName"].ToString(); + var songCount = Convert.ToInt32(reader["SongCount"].ToString()); + + genres.Add(new Genre + { + GenreId = id, + GenreName = genreName, + SongCount = songCount + }); + } + + _logger.Info("Genre records retrieved"); + + return genres; + } + + private Genre ParseSingleData(MySqlDataReader reader) + { + var genre = new Genre(); + _logger.Info("Retrieving single genre record"); + + while (reader.Read()) + { + var id = Convert.ToInt32(reader["GenreId"].ToString()); + var genreName = reader["GenreName"].ToString(); + var songCount = Convert.ToInt32(reader["SongCount"].ToString()); + genre.GenreId = id; + genre.GenreName = genreName; + genre.SongCount = songCount; + } + + _logger.Info("Single genre record retrieved"); + + return genre; + } #endregion } }