public void RemoveTag(Tag tag) { if (tag == null) throw new ArgumentNullException("tag"); if (!tags.Contains(tag)) return; tags.Remove(tag); }
public void AddTag(Tag tag) { if (tag == null) throw new ArgumentNullException("tag"); if (tags.Contains(tag)) return; tags.Add(tag); }
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); } }
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 }; }
private void SaveWorkTag(Work work, Tag tag) { if (work == null || tag == null) return; var workId = cache.GetWorkId(work); if (workId == 0) return; var id = cache.GetWorkTagId(tag); if (id > 0) { database.UpdateWorkTag(connection, tag, id, workId); } else { id = database.InsertWorkTag(connection, tag, workId); cache.Add(id, work, tag); } }
public void Remove(Work work, Tag tag) { var id = GetWorkTagId(tag); if (id == 0) return; if (!workTagsById.ContainsKey(id)) return; var workId = GetWorkId(work); if (tagsByWorkId.ContainsKey(workId)) { if (tagsByWorkId[workId].Contains(tag)) tagsByWorkId[workId].Remove(tag); } workTagsById.Remove(id); }
public uint GetWorkTagId(Tag tag) { if (tag == null) return 0; return workTagsById.Where(x => x.Value == tag).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 Add(uint id, Work work, Tag tag) { if (workTagsById.ContainsKey(id)) return; var workId = GetWorkId(work); if (workId == 0) return; workTagsById.Add(id, tag); if (tagsByWorkId.ContainsKey(workId)) { if (tagsByWorkId[workId].Contains(tag)) return; tagsByWorkId[workId].Add(tag); } else tagsByWorkId[workId] = new List<Tag> { tag }; }
private void LoadArtistTags(IDbConnection connection, GlobalCache cache) { var command = GetCommand(connection, "select * from ArtistTag;"); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var id = (uint)reader.GetInt64(0); var artist = cache.GetArtist((uint)reader.GetInt64(1)); var name = reader.GetString(2); var category = (Category)reader.GetInt32(3); var source = (Source)reader.GetInt32(4); if (artist == null) continue; var tag = new Tag(name, category, source); cache.Add(id, artist, tag); artist.AddTag(tag); } } }
public void UpdateWorkTag(IDbConnection connection, Tag tag, uint id, uint workId) { if (!tag.IsChanged) return; var command = connection.CreateCommand(); AddParameter(command, "@Work", workId); AddParameter(command, "@Name", tag.Name); AddParameter(command, "@Category", (ushort)tag.Category); AddParameter(command, "@Source", (ushort)tag.Source); AddParameter(command, "@Id", id); command.CommandText = "update WorkTag set Work = @Work, Name = @Name, Category = @Category, Source = @Source where Id = @Id;"; command.ExecuteNonQuery(); }
public uint InsertWorkTag(IDbConnection connection, Tag tag, uint workId) { var command = connection.CreateCommand(); AddParameter(command, "@Work", workId); AddParameter(command, "@Name", tag.Name); AddParameter(command, "@Category", (ushort)tag.Category); AddParameter(command, "@Source", (ushort)tag.Source); command.CommandText = "insert into WorkTag (Work, Name, Category, Source) values (@Work, @Name, @Category, @Source); select last_insert_rowid();"; var result = command.ExecuteScalar(); uint id = 0; return (result != null && uint.TryParse(result.ToString(), out id)) ? id : 0; }