From 596f79318b41b7da60da0f82794f56f306842973 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 16 Aug 2023 14:19:33 +1000 Subject: Fixed most existing dialogs --- Services/TagService.cs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'Services') diff --git a/Services/TagService.cs b/Services/TagService.cs index e0dcf64..e0d1072 100644 --- a/Services/TagService.cs +++ b/Services/TagService.cs @@ -4,7 +4,9 @@ using Microsoft.EntityFrameworkCore; namespace HyperBooru.Services; public interface ITagService { + public void AddTag(Guid obj, Guid tagDef); public void AddTag(HBObject obj, TagDefinition tagDef); + public void RemoveTag(Guid obj, Guid tagDef); public void RemoveTag(HBObject obj, TagDefinition tagDef); public void AddImplicitTag(TagDefinition tagDef, TagDefinition implicitTagDef); public void RemoveImplicitTag(TagDefinition tagDef, TagDefinition implicitTagDef); @@ -18,22 +20,23 @@ public class TagService : ITagService { public TagService(IDbContextFactory dbFactory) => this.dbFactory = dbFactory; - public void AddTag(HBObject obj, TagDefinition tagDef) { + public void AddTag(Guid obj, Guid tagDef) { using var db = dbFactory.CreateDbContext(); - db.Entry(obj).State = EntityState.Unchanged; - bool alreadyTagged = obj.Tags - .Select(t => t.TagDefinition.Guid) - .Contains(tagDef.Guid); + var tag = db.TagDefinitions.First(td => td.Guid == tagDef); - obj.Tags.Add(new() { - TagDefinition = tagDef, - Target = obj - }); + db.Objects + .Where(o => !o.Tags.Select(t => t.TagDefinition.Guid).Contains(tagDef)) + .FirstOrDefault(o => o.Guid == obj)? + .Tags + .Add(new(tag)); db.SaveChanges(); } + public void AddTag(HBObject obj, TagDefinition tagDef) => + AddTag(obj.Guid, tagDef.Guid); + public void RemoveTag(Guid obj, Guid tagDef) { using var db = dbFactory.CreateDbContext(); -- cgit v1.3