An atproto PDS written in Go
103
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 4c6db2f12c7e5b081cbbe132e37bd183f08f326e 55 lines 1.5 kB view raw
1package server 2 3import ( 4 "github.com/haileyok/cocoon/internal/helpers" 5 "github.com/haileyok/cocoon/models" 6 "github.com/labstack/echo/v4" 7) 8 9type ComAtprotoRepoDeleteRecordRequest struct { 10 Repo string `json:"repo" validate:"required,atproto-did"` 11 Collection string `json:"collection" validate:"required,atproto-nsid"` 12 Rkey string `json:"rkey" validate:"required,atproto-rkey"` 13 SwapRecord *string `json:"swapRecord"` 14 SwapCommit *string `json:"swapCommit"` 15} 16 17func (s *Server) handleDeleteRecord(e echo.Context) error { 18 repo := e.Get("repo").(*models.RepoActor) 19 20 var req ComAtprotoRepoDeleteRecordRequest 21 if err := e.Bind(&req); err != nil { 22 s.logger.Error("error binding", "error", err) 23 return helpers.ServerError(e, nil) 24 } 25 26 if err := e.Validate(req); err != nil { 27 s.logger.Error("error validating", "error", err) 28 return helpers.InputError(e, nil) 29 } 30 31 if repo.Repo.Did != req.Repo { 32 s.logger.Warn("mismatched repo/auth") 33 return helpers.InputError(e, nil) 34 } 35 36 results, err := s.repoman.applyWrites(repo.Repo, []Op{ 37 { 38 Type: OpTypeDelete, 39 Collection: req.Collection, 40 Rkey: &req.Rkey, 41 SwapRecord: req.SwapRecord, 42 }, 43 }, req.SwapCommit) 44 if err != nil { 45 s.logger.Error("error applying writes", "error", err) 46 return helpers.ServerError(e, nil) 47 } 48 49 results[0].Type = nil 50 results[0].Uri = nil 51 results[0].Cid = nil 52 results[0].ValidationStatus = nil 53 54 return e.JSON(200, results[0]) 55}