An atproto PDS written in Go
103
fork

Configure Feed

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

at 4c6db2f12c7e5b081cbbe132e37bd183f08f326e 65 lines 2.2 kB view raw
1package server 2 3import ( 4 "github.com/haileyok/cocoon/internal/helpers" 5 "github.com/haileyok/cocoon/models" 6 "github.com/ipfs/go-cid" 7 "github.com/labstack/echo/v4" 8) 9 10type ComAtprotoServerCheckAccountStatusResponse struct { 11 Activated bool `json:"activated"` 12 ValidDid bool `json:"validDid"` 13 RepoCommit string `json:"repoCommit"` 14 RepoRev string `json:"repoRev"` 15 RepoBlocks int64 `json:"repoBlocks"` 16 IndexedRecords int64 `json:"indexedRecords"` 17 PrivateStateValues int64 `json:"privateStateValues"` 18 ExpectedBlobs int64 `json:"expectedBlobs"` 19 ImportedBlobs int64 `json:"importedBlobs"` 20} 21 22func (s *Server) handleServerCheckAccountStatus(e echo.Context) error { 23 urepo := e.Get("repo").(*models.RepoActor) 24 25 resp := ComAtprotoServerCheckAccountStatusResponse{ 26 Activated: true, // TODO: should allow for deactivation etc. 27 ValidDid: true, // TODO: should probably verify? 28 RepoRev: urepo.Rev, 29 ImportedBlobs: 0, // TODO: ??? 30 } 31 32 rootcid, err := cid.Cast(urepo.Root) 33 if err != nil { 34 s.logger.Error("error casting cid", "error", err) 35 return helpers.ServerError(e, nil) 36 } 37 resp.RepoCommit = rootcid.String() 38 39 type CountResp struct { 40 Ct int64 41 } 42 43 var blockCtResp CountResp 44 if err := s.db.Raw("SELECT COUNT(*) AS ct FROM blocks WHERE did = ?", nil, urepo.Repo.Did).Scan(&blockCtResp).Error; err != nil { 45 s.logger.Error("error getting block count", "error", err) 46 return helpers.ServerError(e, nil) 47 } 48 resp.RepoBlocks = blockCtResp.Ct 49 50 var recCtResp CountResp 51 if err := s.db.Raw("SELECT COUNT(*) AS ct FROM records WHERE did = ?", nil, urepo.Repo.Did).Scan(&recCtResp).Error; err != nil { 52 s.logger.Error("error getting record count", "error", err) 53 return helpers.ServerError(e, nil) 54 } 55 resp.IndexedRecords = recCtResp.Ct 56 57 var blobCtResp CountResp 58 if err := s.db.Raw("SELECT COUNT(*) AS ct FROM blobs WHERE did = ?", nil, urepo.Repo.Did).Scan(&blobCtResp).Error; err != nil { 59 s.logger.Error("error getting record count", "error", err) 60 return helpers.ServerError(e, nil) 61 } 62 resp.ExpectedBlobs = blobCtResp.Ct 63 64 return e.JSON(200, resp) 65}