public void Add(uint id, Artist artist) { if (id == 0) throw new ArgumentException("id cannot be zero"); if (artistsById.ContainsKey(id)) return; artistsById.Add(id, artist); artists.Add(artist); }
private void SaveArtistTags(Artist artist, uint id) { foreach (var existingTag in cache.GetTagsByArtist(id)) { var existingId = cache.GetArtistTagId(existingTag); if (existingId > 0 && !artist.Tags.Contains(existingTag)) { database.DeleteArtistTag(connection, existingId); cache.Remove(artist, existingTag); } } foreach (var tag in artist.Tags) { SaveArtistTag(artist, tag); } }
private void SaveArtistLinks(Artist artist, uint id) { foreach (var existingLink in cache.GetLinksByArtist(id)) { var existingId = cache.GetArtistLinkId(existingLink); if (existingId > 0 && !artist.Links.Contains(existingLink)) { database.DeleteArtistLink(connection, existingId); cache.Remove(artist, existingLink); } } foreach (var link in artist.Links) { SaveArtistLink(artist, link); } }
private static void AddAlbum() { artist = new Artist { Type = ArtistType.Group, Name = "Tool", Year = 1991 }; album = new Work { Type = WorkType.Album, Artist = artist, Name = "Aenima", Year = 1996 }; track1 = new Work { Type = WorkType.Track, Artist = artist, Parent = album, Name = "Stinkfist", Number = 1 }; track2 = new Work { Type = WorkType.Track, Artist = artist, Parent = album, Name = "Eulogy", Number = 2 }; track2.AddLink(new Link("Album Cover", Relationship.Thumbnail, Source.User_Input, "http://example.com/images/Tool/Aenima.jpg")); track2.AddTag(new Tag("Progressive Rock", Category.Genre, Source.Embedded_Metadata)); track3 = new Work { Type = WorkType.Track, Artist = artist, Parent = album, Name = "H.", Number = 3 }; artist.AddWork(album); album.AddChild(track1); album.AddChild(track2); album.AddChild(track3); repository.Save(new List<Entity> { artist }); repository.Save(artist.Works); }
private void SaveArtistTag(Artist artist, Tag tag) { if (artist == null || tag == null) return; var artistId = cache.GetArtistId(artist); if (artistId == 0) return; var id = cache.GetArtistTagId(tag); if (id > 0) { database.UpdateArtistTag(connection, tag, id, artistId); } else { id = database.InsertArtistTag(connection, tag, artistId); cache.Add(id, artist, tag); } }
private void SaveArtistLink(Artist artist, Link link) { if (artist == null || link == null) return; var artistId = cache.GetArtistId(artist); if (artistId == 0) return; var id = cache.GetArtistLinkId(link); if (id > 0) { database.UpdateArtistLink(connection, link, id, artistId); } else { id = database.InsertArtistLink(connection, link, artistId); cache.Add(id, artist, link); } }
public void Add(uint id, Artist artist, Tag tag) { if (artistTagsById.ContainsKey(id)) return; var artistId = GetArtistId(artist); if (artistId == 0) return; artistTagsById.Add(id, tag); if (tagsByArtistId.ContainsKey(artistId)) { if (tagsByArtistId[artistId].Contains(tag)) return; tagsByArtistId[artistId].Add(tag); } else tagsByArtistId[artistId] = new List<Tag> { tag }; }
public void Add(uint id, Artist artist, Link link) { if (artistLinksById.ContainsKey(id)) return; var artistId = GetArtistId(artist); if (artistId == 0) return; artistLinksById.Add(id, link); if (linksByArtistId.ContainsKey(artistId)) { if (linksByArtistId[artistId].Contains(link)) return; linksByArtistId[artistId].Add(link); } else linksByArtistId[artistId] = new List<Link> { link }; }
public void SaveArtist(Artist artist) { if (artist == null) return; var id = cache.GetArtistId(artist); if (id > 0) { database.UpdateArtist(connection, artist, id); } else { id = database.InsertArtist(connection, artist); cache.Add(id, artist); } SaveArtistLinks(artist, id); SaveArtistTags(artist, id); foreach (var work in artist.Works) { SaveWork(work); } }
public void DeleteArtist(Artist artist) { if (artist == null) return; var id = cache.GetArtistId(artist); if (id == 0) return; database.DeleteArtist(connection, id); cache.Remove(artist); }
public uint GetArtistId(Artist artist) { if (artist == null) return 0; return artistsById.Where(x => x.Value == artist).FirstOrDefault().Key; }
public void Remove(Artist artist, Tag tag) { var id = GetArtistTagId(tag); if (id == 0) return; if (!artistTagsById.ContainsKey(id)) return; var artistId = GetArtistId(artist); if (tagsByArtistId.ContainsKey(artistId)) { if (tagsByArtistId[artistId].Contains(tag)) tagsByArtistId[artistId].Remove(tag); } artistTagsById.Remove(id); }
public void Remove(Artist artist, Link link) { var id = GetArtistLinkId(link); if (id == 0) return; if (!artistLinksById.ContainsKey(id)) return; var artistId = GetArtistId(artist); if (linksByArtistId.ContainsKey(artistId)) { if (linksByArtistId[artistId].Contains(link)) linksByArtistId[artistId].Remove(link); } artistLinksById.Remove(id); }
public void Remove(Artist artist) { var id = GetArtistId(artist); if (id == 0) return; foreach (var link in artist.Links) { Remove(artist, link); } foreach (var tag in artist.Tags) { Remove(artist, tag); } if (!artistsById.ContainsKey(id)) return; if (artists.Contains(artist)) artists.Remove(artist); artistsById.Remove(id); }
public void UpdateArtist(IDbConnection connection, Artist artist, uint id) { if (!artist.IsChanged) return; var command = connection.CreateCommand(); AddParameter(command, "@Type", (ushort)artist.Type); AddParameter(command, "@Name", artist.Name); AddParameter(command, "@Year", artist.Year); AddParameter(command, "@Id", id); command.CommandText = "update Artist set Type = @Type, Name = @Name, Year = @Year where Id = @Id;"; command.ExecuteNonQuery(); }
public uint InsertArtist(IDbConnection connection, Artist artist) { var command = connection.CreateCommand(); AddParameter(command, "@Type", (ushort)artist.Type); AddParameter(command, "@Name", artist.Name); AddParameter(command, "@Year", artist.Year); command.CommandText = "insert into Artist (Type, Name, Year) values (@Type, @Name, @Year); select last_insert_rowid();"; var result = command.ExecuteScalar(); uint id = 0; return (result != null && uint.TryParse(result.ToString(), out id)) ? id : 0; }