this repo has no description
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 ctx := e.Request().Context() 24 25 urepo := e.Get("repo").(*models.RepoActor) 26 27 resp := ComAtprotoServerCheckAccountStatusResponse{ 28 Activated: true, // TODO: should allow for deactivation etc. 29 ValidDid: true, // TODO: should probably verify? 30 RepoRev: urepo.Rev, 31 ImportedBlobs: 0, // TODO: ??? 32 } 33 34 rootcid, err := cid.Cast(urepo.Root) 35 if err != nil { 36 s.logger.Error("error casting cid", "error", err) 37 return helpers.ServerError(e, nil) 38 } 39 resp.RepoCommit = rootcid.String() 40 41 type CountResp struct { 42 Ct int64 43 } 44 45 var blockCtResp CountResp 46 if err := s.db.Raw(ctx, "SELECT COUNT(*) AS ct FROM blocks WHERE did = ?", nil, urepo.Repo.Did).Scan(&blockCtResp).Error; err != nil { 47 s.logger.Error("error getting block count", "error", err) 48 return helpers.ServerError(e, nil) 49 } 50 resp.RepoBlocks = blockCtResp.Ct 51 52 var recCtResp CountResp 53 if err := s.db.Raw(ctx, "SELECT COUNT(*) AS ct FROM records WHERE did = ?", nil, urepo.Repo.Did).Scan(&recCtResp).Error; err != nil { 54 s.logger.Error("error getting record count", "error", err) 55 return helpers.ServerError(e, nil) 56 } 57 resp.IndexedRecords = recCtResp.Ct 58 59 var blobCtResp CountResp 60 if err := s.db.Raw(ctx, "SELECT COUNT(*) AS ct FROM blobs WHERE did = ?", nil, urepo.Repo.Did).Scan(&blobCtResp).Error; err != nil { 61 s.logger.Error("error getting record count", "error", err) 62 return helpers.ServerError(e, nil) 63 } 64 resp.ExpectedBlobs = blobCtResp.Ct 65 66 return e.JSON(200, resp) 67}