diff --git a/Core/Models/TagDatabase/TagDatabase.DeleteMethods.cs b/Core/Models/TagDatabase/TagDatabase.DeleteMethods.cs index 7f9f213..0b02e08 100644 --- a/Core/Models/TagDatabase/TagDatabase.DeleteMethods.cs +++ b/Core/Models/TagDatabase/TagDatabase.DeleteMethods.cs @@ -85,6 +85,7 @@ partial class TagDatabase int count = Convert.ToInt32(await command.ExecuteNonQueryAsync().ConfigureAwait(false)); if (count > 0) await transaction.CommitAsync().ConfigureAwait(false); this.DeleteFromCache(targetTag); + TagDeleted.Invoke(this, (targetTag.Id, targetTag.Name)); } catch (SqliteException) { diff --git a/Core/Models/TagDatabase/TagDatabase.Events.cs b/Core/Models/TagDatabase/TagDatabase.Events.cs index 227f9c5..1c8bf5d 100644 --- a/Core/Models/TagDatabase/TagDatabase.Events.cs +++ b/Core/Models/TagDatabase/TagDatabase.Events.cs @@ -7,6 +7,12 @@ public partial class TagDatabase /// public event EventHandler InitialisationComplete = delegate { }; + public event EventHandler TagAdded = delegate { }; + + public event EventHandler TagUpdated = delegate { }; + + public event EventHandler<(int id, string name)> TagDeleted = delegate { }; + private void OnInitialisationComplete(EventArgs e) { this.Logger.Debug("OnInitialised invoked!"); diff --git a/Core/Models/TagDatabase/TagDatabase.WriteMethods.cs b/Core/Models/TagDatabase/TagDatabase.WriteMethods.cs index 46ae43f..7e4b569 100644 --- a/Core/Models/TagDatabase/TagDatabase.WriteMethods.cs +++ b/Core/Models/TagDatabase/TagDatabase.WriteMethods.cs @@ -41,9 +41,15 @@ public partial class TagDatabase int index = this.Tags.FindIndex(t => t.Id == tag.Id); if (index != -1) + { this.Tags[index] = tag; + TagUpdated.Invoke(this, tag); + } else + { this.Tags.Add(tag); + TagAdded.Invoke(this, tag); + } } catch (SqliteException) {