Updated Song model to include ArtistId, Updated Artist Model, and partially implemented Artist API endpoint functionality. I left TODO's on where to pick up. #19, #21, #26
This commit is contained in:
@@ -37,6 +37,7 @@ namespace Icarus.Controllers
|
|||||||
public IActionResult Get()
|
public IActionResult Get()
|
||||||
{
|
{
|
||||||
List<Artist> artists = new List<Artist>();
|
List<Artist> artists = new List<Artist>();
|
||||||
|
// TODO: Implement functionality
|
||||||
|
|
||||||
return Ok(artists);
|
return Ok(artists);
|
||||||
}
|
}
|
||||||
@@ -45,6 +46,7 @@ namespace Icarus.Controllers
|
|||||||
public IActionResult Get(int id)
|
public IActionResult Get(int id)
|
||||||
{
|
{
|
||||||
Artist artist = new Artist();
|
Artist artist = new Artist();
|
||||||
|
// TODO: Implement functionality
|
||||||
|
|
||||||
return Ok(artist);
|
return Ok(artist);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
@@ -7,10 +8,13 @@ namespace Icarus.Models
|
|||||||
public class Artist
|
public class Artist
|
||||||
{
|
{
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public int Id { get; set; }
|
public int ArtistId { get; set; }
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
[JsonProperty("song_count")]
|
[JsonProperty("song_count")]
|
||||||
public int SongCount { get; set; }
|
public int SongCount { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<Song> Songs { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
public class ArtistContext : DbContext
|
public class ArtistContext : DbContext
|
||||||
{
|
{
|
||||||
public DbSet<Artist> Artist { get; set; }
|
public DbSet<Artist> Artists { get; set; }
|
||||||
|
|
||||||
public ArtistContext(DbContextOptions<ArtistContext> options)
|
public ArtistContext(DbContextOptions<ArtistContext> options)
|
||||||
: base (options)
|
: base (options)
|
||||||
@@ -20,7 +20,8 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<Artist>();
|
modelBuilder.Entity<Artist>()
|
||||||
|
.ToTable("Artist");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,18 +43,8 @@ namespace Icarus.Models.Context
|
|||||||
{
|
{
|
||||||
using (var reader = cmd.ExecuteReader())
|
using (var reader = cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
|
||||||
{
|
artists = ParseData(reader);
|
||||||
var id = Convert.ToInt32(reader["Id"].ToString());
|
|
||||||
var name = reader["Name"].ToString();
|
|
||||||
var songCount = Convert.ToInt32(reader["SongCount"].ToString());
|
|
||||||
artists.Add(new Artist
|
|
||||||
{
|
|
||||||
Id = id,
|
|
||||||
Name = name,
|
|
||||||
SongCount = songCount
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,6 +57,211 @@ namespace Icarus.Models.Context
|
|||||||
|
|
||||||
return artists;
|
return artists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool DoesArtistExist(Artist artist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT * FROM Artist WHERE ArtistId=@ArtistId";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@AlbumId", artist.ArtistId);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
artist = ParseSingleData(reader);
|
||||||
|
|
||||||
|
if (artist.Name != null)
|
||||||
|
{
|
||||||
|
_logger.Info($"Artist {artist.Name} exists");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public bool DoesArtistExist(Song song)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var query = "SELECT * FROM Album WHERE Name=@Name";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@Name", song.Artist);
|
||||||
|
|
||||||
|
using (var reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
var artist = ParseSingleData(reader);
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(artist.Name))
|
||||||
|
{
|
||||||
|
_logger.Info($"Artist {artist.Name} exists");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SaveArtist(Artist artist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
var query = "INSERT INTO Artist(Name, SongCount) " +
|
||||||
|
"VALUES(@Name, @SongCount)";
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@Name", artist.Name);
|
||||||
|
cmd.Parameters.AddWithValue("@SongCount", artist.SongCount);
|
||||||
|
|
||||||
|
cmd.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void UpdateArtist(Artist artist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MySqlConnection conn = GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
// TODO: Implement functionality
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
var msg = ex.Message;
|
||||||
|
_logger.Error(msg, "An error occurred");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Artist GetArtist(Artist artist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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", song.ArtistId);
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
List<Artist> artists = new List<Artist>();
|
||||||
|
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
var id = Convert.ToInt32(reader["ArtistId"]);
|
||||||
|
var name = reader["Name"].ToString();
|
||||||
|
var songCount = Convert.ToInt32(reader["SongCount"].ToString());
|
||||||
|
artists.Add(new Artist
|
||||||
|
{
|
||||||
|
ArtistId = id,
|
||||||
|
Name = name,
|
||||||
|
SongCount = songCount
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return artists;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Artist ParseSingleData(MySqlDataReader reader)
|
||||||
|
{
|
||||||
|
Artist artist = new Artist();
|
||||||
|
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
var id = Convert.ToInt32(reader["ArtistId"]);
|
||||||
|
var name = reader["Name"].ToString();
|
||||||
|
var songCount = Convert.ToInt32(reader["SongCount"].ToString());
|
||||||
|
artist.ArtistId = id;
|
||||||
|
artist.Name = name;
|
||||||
|
artist.SongCount = songCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,15 @@ namespace Icarus.Models.Context
|
|||||||
modelBuilder.Entity<Song>()
|
modelBuilder.Entity<Song>()
|
||||||
.ToTable("Song")
|
.ToTable("Song")
|
||||||
.HasOne(s => s.Album)
|
.HasOne(s => s.Album)
|
||||||
.WithMany(a => a.Songs)
|
.WithMany(al => al.Songs)
|
||||||
.HasForeignKey(s => s.AlbumId)
|
.HasForeignKey(s => s.AlbumId)
|
||||||
.HasConstraintName("ForeignKey_Song_Album");
|
.HasConstraintName("ForeignKey_Song_Album");
|
||||||
|
|
||||||
|
modelBuilder.Entity<Song>()
|
||||||
|
.HasOne(sa => sa.SongArtist)
|
||||||
|
.WithMany(ar => ar.Songs)
|
||||||
|
.HasForeignKey(s => s.ArtistId)
|
||||||
|
.HasConstraintName("ForeignKey_Song_Artist");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,5 +35,10 @@ namespace Icarus.Models
|
|||||||
public Album Album { get; set; }
|
public Album Album { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public int AlbumId { get; set; }
|
public int AlbumId { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public Artist SongArtist { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public int ArtistId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user