From edcee14d07bae129e2d1a06d99c30fc6f659ff5e Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Fri, 11 Nov 2022 12:18:38 +0100 Subject: [feature] Read + Write tombstones for deleted Actors (#1005) * [feature] Read + Write tombstones for deleted Actors * copyTombstone * update to use resultcache instead of old ttl cache Signed-off-by: kim * update go-cache library to fix result cache capacity / ordering bugs Signed-off-by: kim * bump go-cache/v3 to v3.1.6 to fix bugs Signed-off-by: kim * switch on status code * better explain ErrGone reasoning Signed-off-by: kim Co-authored-by: kim --- internal/federation/gone.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 internal/federation/gone.go (limited to 'internal/federation/gone.go') diff --git a/internal/federation/gone.go b/internal/federation/gone.go new file mode 100644 index 000000000..3d9fe3b84 --- /dev/null +++ b/internal/federation/gone.go @@ -0,0 +1,34 @@ +package federation + +import ( + "context" + "fmt" + "net/url" + + "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/internal/id" + "github.com/superseriousbusiness/gotosocial/internal/log" +) + +// CheckGone checks if a tombstone exists in the database for AP Actor or Object with the given uri. +func (f *federator) CheckGone(ctx context.Context, uri *url.URL) (bool, error) { + return f.db.TombstoneExistsWithURI(ctx, uri.String()) +} + +// HandleGone puts a tombstone in the database, which marks an AP Actor or Object with the given uri as gone. +func (f *federator) HandleGone(ctx context.Context, uri *url.URL) error { + tombstoneID, err := id.NewULID() + if err != nil { + err = fmt.Errorf("HandleGone: error generating id for new tombstone %s: %s", uri, err) + log.Error(err) + return err + } + + tombstone := >smodel.Tombstone{ + ID: tombstoneID, + Domain: uri.Host, + URI: uri.String(), + } + + return f.db.PutTombstone(ctx, tombstone) +} -- cgit v1.2.3