summaryrefslogtreecommitdiff
path: root/Services
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-08-16 14:19:33 +1000
committerJake Mannens <jake@asger.xyz>2023-08-16 14:19:33 +1000
commit596f79318b41b7da60da0f82794f56f306842973 (patch)
treea6523f99fa70ea6da1780347201e06943f56778f /Services
parent8e94a12be4a56447e78d68c37def772bef8cade4 (diff)
Fixed most existing dialogs
Diffstat (limited to 'Services')
-rw-r--r--Services/TagService.cs21
1 files changed, 12 insertions, 9 deletions
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<HBContext> 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();