Example #1
0
        public void RemoveTag(Tag tag)
        {
            if (tag == null)
                throw new ArgumentNullException("tag");

            if (!tags.Contains(tag))
                return;

            tags.Remove(tag);
        }
Example #2
0
        public void AddTag(Tag tag)
        {
            if (tag == null)
                throw new ArgumentNullException("tag");

            if (tags.Contains(tag))
                return;

            tags.Add(tag);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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 };
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        public uint GetWorkTagId(Tag tag)
        {
            if (tag == null)
                return 0;

            return workTagsById.Where(x => x.Value == tag).FirstOrDefault().Key;
        }
Example #8
0
        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);
        }
Example #9
0
        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;
        }