this repo has no description

cleanup context todo

Hailey 521a73a5 214d8b4d

+1
server/handle_account.go
··· 12 13 func (s *Server) handleAccount(e echo.Context) error { 14 ctx := e.Request().Context() 15 repo, sess, err := s.getSessionRepoOrErr(e) 16 if err != nil { 17 return e.Redirect(303, "/account/signin")
··· 12 13 func (s *Server) handleAccount(e echo.Context) error { 14 ctx := e.Request().Context() 15 + 16 repo, sess, err := s.getSessionRepoOrErr(e) 17 if err != nil { 18 return e.Redirect(303, "/account/signin")
+8 -7
server/handle_import_repo.go
··· 2 3 import ( 4 "bytes" 5 - "context" 6 "io" 7 "slices" 8 "strings" ··· 18 ) 19 20 func (s *Server) handleRepoImportRepo(e echo.Context) error { 21 urepo := e.Get("repo").(*models.RepoActor) 22 23 b, err := io.ReadAll(e.Request().Body) ··· 52 53 slices.Reverse(orderedBlocks) 54 55 - if err := bs.PutMany(context.TODO(), orderedBlocks); err != nil { 56 s.logger.Error("could not insert blocks", "error", err) 57 return helpers.ServerError(e, nil) 58 } 59 60 - r, err := repo.OpenRepo(context.TODO(), bs, cs.Header.Roots[0]) 61 if err != nil { 62 s.logger.Error("could not open repo", "error", err) 63 return helpers.ServerError(e, nil) ··· 67 68 clock := syntax.NewTIDClock(0) 69 70 - if err := r.ForEach(context.TODO(), "", func(key string, cid cid.Cid) error { 71 pts := strings.Split(key, "/") 72 nsid := pts[0] 73 rkey := pts[1] 74 cidStr := cid.String() 75 - b, err := bs.Get(context.TODO(), cid) 76 if err != nil { 77 s.logger.Error("record bytes don't exist in blockstore", "error", err) 78 return helpers.ServerError(e, nil) ··· 100 101 tx.Commit() 102 103 - root, rev, err := r.Commit(context.TODO(), urepo.SignFor) 104 if err != nil { 105 s.logger.Error("error committing", "error", err) 106 return helpers.ServerError(e, nil) 107 } 108 109 - if err := s.UpdateRepo(context.TODO(), urepo.Repo.Did, root, rev); err != nil { 110 s.logger.Error("error updating repo after commit", "error", err) 111 return helpers.ServerError(e, nil) 112 }
··· 2 3 import ( 4 "bytes" 5 "io" 6 "slices" 7 "strings" ··· 17 ) 18 19 func (s *Server) handleRepoImportRepo(e echo.Context) error { 20 + ctx := e.Request().Context() 21 + 22 urepo := e.Get("repo").(*models.RepoActor) 23 24 b, err := io.ReadAll(e.Request().Body) ··· 53 54 slices.Reverse(orderedBlocks) 55 56 + if err := bs.PutMany(ctx, orderedBlocks); err != nil { 57 s.logger.Error("could not insert blocks", "error", err) 58 return helpers.ServerError(e, nil) 59 } 60 61 + r, err := repo.OpenRepo(ctx, bs, cs.Header.Roots[0]) 62 if err != nil { 63 s.logger.Error("could not open repo", "error", err) 64 return helpers.ServerError(e, nil) ··· 68 69 clock := syntax.NewTIDClock(0) 70 71 + if err := r.ForEach(ctx, "", func(key string, cid cid.Cid) error { 72 pts := strings.Split(key, "/") 73 nsid := pts[0] 74 rkey := pts[1] 75 cidStr := cid.String() 76 + b, err := bs.Get(ctx, cid) 77 if err != nil { 78 s.logger.Error("record bytes don't exist in blockstore", "error", err) 79 return helpers.ServerError(e, nil) ··· 101 102 tx.Commit() 103 104 + root, rev, err := r.Commit(ctx, urepo.SignFor) 105 if err != nil { 106 s.logger.Error("error committing", "error", err) 107 return helpers.ServerError(e, nil) 108 } 109 110 + if err := s.UpdateRepo(ctx, urepo.Repo.Did, root, rev); err != nil { 111 s.logger.Error("error updating repo after commit", "error", err) 112 return helpers.ServerError(e, nil) 113 }
+3 -1
server/handle_repo_apply_writes.go
··· 26 } 27 28 func (s *Server) handleApplyWrites(e echo.Context) error { 29 repo := e.Get("repo").(*models.RepoActor) 30 31 var req ComAtprotoRepoApplyWritesRequest ··· 54 }) 55 } 56 57 - results, err := s.repoman.applyWrites(repo.Repo, ops, req.SwapCommit) 58 if err != nil { 59 s.logger.Error("error applying writes", "error", err) 60 return helpers.ServerError(e, nil)
··· 26 } 27 28 func (s *Server) handleApplyWrites(e echo.Context) error { 29 + ctx := e.Request().Context() 30 + 31 repo := e.Get("repo").(*models.RepoActor) 32 33 var req ComAtprotoRepoApplyWritesRequest ··· 56 }) 57 } 58 59 + results, err := s.repoman.applyWrites(ctx, repo.Repo, ops, req.SwapCommit) 60 if err != nil { 61 s.logger.Error("error applying writes", "error", err) 62 return helpers.ServerError(e, nil)
+3 -1
server/handle_repo_create_record.go
··· 17 } 18 19 func (s *Server) handleCreateRecord(e echo.Context) error { 20 repo := e.Get("repo").(*models.RepoActor) 21 22 var req ComAtprotoRepoCreateRecordRequest ··· 40 optype = OpTypeUpdate 41 } 42 43 - results, err := s.repoman.applyWrites(repo.Repo, []Op{ 44 { 45 Type: optype, 46 Collection: req.Collection,
··· 17 } 18 19 func (s *Server) handleCreateRecord(e echo.Context) error { 20 + ctx := e.Request().Context() 21 + 22 repo := e.Get("repo").(*models.RepoActor) 23 24 var req ComAtprotoRepoCreateRecordRequest ··· 42 optype = OpTypeUpdate 43 } 44 45 + results, err := s.repoman.applyWrites(ctx, repo.Repo, []Op{ 46 { 47 Type: optype, 48 Collection: req.Collection,
+3 -1
server/handle_repo_delete_record.go
··· 15 } 16 17 func (s *Server) handleDeleteRecord(e echo.Context) error { 18 repo := e.Get("repo").(*models.RepoActor) 19 20 var req ComAtprotoRepoDeleteRecordRequest ··· 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,
··· 15 } 16 17 func (s *Server) handleDeleteRecord(e echo.Context) error { 18 + ctx := e.Request().Context() 19 + 20 repo := e.Get("repo").(*models.RepoActor) 21 22 var req ComAtprotoRepoDeleteRecordRequest ··· 35 return helpers.InputError(e, nil) 36 } 37 38 + results, err := s.repoman.applyWrites(ctx, repo.Repo, []Op{ 39 { 40 Type: OpTypeDelete, 41 Collection: req.Collection,
+3 -1
server/handle_repo_put_record.go
··· 17 } 18 19 func (s *Server) handlePutRecord(e echo.Context) error { 20 repo := e.Get("repo").(*models.RepoActor) 21 22 var req ComAtprotoRepoPutRecordRequest ··· 40 optype = OpTypeUpdate 41 } 42 43 - results, err := s.repoman.applyWrites(repo.Repo, []Op{ 44 { 45 Type: optype, 46 Collection: req.Collection,
··· 17 } 18 19 func (s *Server) handlePutRecord(e echo.Context) error { 20 + ctx := e.Request().Context() 21 + 22 repo := e.Get("repo").(*models.RepoActor) 23 24 var req ComAtprotoRepoPutRecordRequest ··· 42 optype = OpTypeUpdate 43 } 44 45 + results, err := s.repoman.applyWrites(ctx, repo.Repo, []Op{ 46 { 47 Type: optype, 48 Collection: req.Collection,
+3 -1
server/handle_sync_get_record.go
··· 13 ) 14 15 func (s *Server) handleSyncGetRecord(e echo.Context) error { 16 did := e.QueryParam("did") 17 collection := e.QueryParam("collection") 18 rkey := e.QueryParam("rkey") ··· 23 return helpers.ServerError(e, nil) 24 } 25 26 - root, blocks, err := s.repoman.getRecordProof(urepo, collection, rkey) 27 if err != nil { 28 return err 29 }
··· 13 ) 14 15 func (s *Server) handleSyncGetRecord(e echo.Context) error { 16 + ctx := e.Request().Context() 17 + 18 did := e.QueryParam("did") 19 collection := e.QueryParam("collection") 20 rkey := e.QueryParam("rkey") ··· 25 return helpers.ServerError(e, nil) 26 } 27 28 + root, blocks, err := s.repoman.getRecordProof(ctx, urepo, collection, rkey) 29 if err != nil { 30 return err 31 }
+19 -16
server/repo.go
··· 96 } 97 98 // TODO make use of swap commit 99 - func (rm *RepoMan) applyWrites(urepo models.Repo, writes []Op, swapCommit *string) ([]ApplyWriteResult, error) { 100 rootcid, err := cid.Cast(urepo.Root) 101 if err != nil { 102 return nil, err ··· 104 105 dbs := rm.s.getBlockstore(urepo.Did) 106 bs := recording_blockstore.New(dbs) 107 - r, err := repo.OpenRepo(context.TODO(), bs, rootcid) 108 109 - entries := []models.Record{} 110 - var results []ApplyWriteResult 111 112 for i, op := range writes { 113 if op.Type != OpTypeCreate && op.Rkey == nil { 114 return nil, fmt.Errorf("invalid rkey") 115 } else if op.Type == OpTypeCreate && op.Rkey != nil { 116 - _, _, err := r.GetRecord(context.TODO(), op.Collection+"/"+*op.Rkey) 117 if err == nil { 118 op.Type = OpTypeUpdate 119 } ··· 144 mm["$type"] = op.Collection 145 } 146 147 - nc, err := r.PutRecord(context.TODO(), op.Collection+"/"+*op.Rkey, &mm) 148 if err != nil { 149 return nil, err 150 } ··· 177 Rkey: *op.Rkey, 178 Value: old.Value, 179 }) 180 - err := r.DeleteRecord(context.TODO(), op.Collection+"/"+*op.Rkey) 181 if err != nil { 182 return nil, err 183 } ··· 194 return nil, err 195 } 196 mm := MarshalableMap(out) 197 - nc, err := r.UpdateRecord(context.TODO(), op.Collection+"/"+*op.Rkey, &mm) 198 if err != nil { 199 return nil, err 200 } ··· 219 } 220 } 221 222 - newroot, rev, err := r.Commit(context.TODO(), urepo.SignFor) 223 if err != nil { 224 return nil, err 225 } ··· 230 Roots: []cid.Cid{newroot}, 231 Version: 1, 232 }) 233 234 if _, err := carstore.LdWrite(buf, hb); err != nil { 235 return nil, err 236 } 237 238 - diffops, err := r.DiffSince(context.TODO(), rootcid) 239 if err != nil { 240 return nil, err 241 } ··· 270 }) 271 } 272 273 - blk, err := dbs.Get(context.TODO(), c) 274 if err != nil { 275 return nil, err 276 } ··· 316 } 317 } 318 319 - rm.s.evtman.AddEvent(context.TODO(), &events.XRPCStreamEvent{ 320 RepoCommit: &atproto.SyncSubscribeRepos_Commit{ 321 Repo: urepo.Did, 322 Blocks: buf.Bytes(), ··· 330 }, 331 }) 332 333 - if err := rm.s.UpdateRepo(context.TODO(), urepo.Did, newroot, rev); err != nil { 334 return nil, err 335 } 336 ··· 345 return results, nil 346 } 347 348 - func (rm *RepoMan) getRecordProof(urepo models.Repo, collection, rkey string) (cid.Cid, []blocks.Block, error) { 349 c, err := cid.Cast(urepo.Root) 350 if err != nil { 351 return cid.Undef, nil, err ··· 354 dbs := rm.s.getBlockstore(urepo.Did) 355 bs := recording_blockstore.New(dbs) 356 357 - r, err := repo.OpenRepo(context.TODO(), bs, c) 358 if err != nil { 359 return cid.Undef, nil, err 360 } 361 362 - _, _, err = r.GetRecordBytes(context.TODO(), collection+"/"+rkey) 363 if err != nil { 364 return cid.Undef, nil, err 365 }
··· 96 } 97 98 // TODO make use of swap commit 99 + func (rm *RepoMan) applyWrites(ctx context.Context, urepo models.Repo, writes []Op, swapCommit *string) ([]ApplyWriteResult, error) { 100 rootcid, err := cid.Cast(urepo.Root) 101 if err != nil { 102 return nil, err ··· 104 105 dbs := rm.s.getBlockstore(urepo.Did) 106 bs := recording_blockstore.New(dbs) 107 + r, err := repo.OpenRepo(ctx, bs, rootcid) 108 109 + entries := make([]models.Record, 0, len(writes)) 110 + results := make([]ApplyWriteResult, 0, len(writes)) 111 112 for i, op := range writes { 113 if op.Type != OpTypeCreate && op.Rkey == nil { 114 return nil, fmt.Errorf("invalid rkey") 115 } else if op.Type == OpTypeCreate && op.Rkey != nil { 116 + _, _, err := r.GetRecord(ctx, op.Collection+"/"+*op.Rkey) 117 if err == nil { 118 op.Type = OpTypeUpdate 119 } ··· 144 mm["$type"] = op.Collection 145 } 146 147 + nc, err := r.PutRecord(ctx, op.Collection+"/"+*op.Rkey, &mm) 148 if err != nil { 149 return nil, err 150 } ··· 177 Rkey: *op.Rkey, 178 Value: old.Value, 179 }) 180 + err := r.DeleteRecord(ctx, op.Collection+"/"+*op.Rkey) 181 if err != nil { 182 return nil, err 183 } ··· 194 return nil, err 195 } 196 mm := MarshalableMap(out) 197 + nc, err := r.UpdateRecord(ctx, op.Collection+"/"+*op.Rkey, &mm) 198 if err != nil { 199 return nil, err 200 } ··· 219 } 220 } 221 222 + newroot, rev, err := r.Commit(ctx, urepo.SignFor) 223 if err != nil { 224 return nil, err 225 } ··· 230 Roots: []cid.Cid{newroot}, 231 Version: 1, 232 }) 233 + if err != nil { 234 + return nil, err 235 + } 236 237 if _, err := carstore.LdWrite(buf, hb); err != nil { 238 return nil, err 239 } 240 241 + diffops, err := r.DiffSince(ctx, rootcid) 242 if err != nil { 243 return nil, err 244 } ··· 273 }) 274 } 275 276 + blk, err := dbs.Get(ctx, c) 277 if err != nil { 278 return nil, err 279 } ··· 319 } 320 } 321 322 + rm.s.evtman.AddEvent(ctx, &events.XRPCStreamEvent{ 323 RepoCommit: &atproto.SyncSubscribeRepos_Commit{ 324 Repo: urepo.Did, 325 Blocks: buf.Bytes(), ··· 333 }, 334 }) 335 336 + if err := rm.s.UpdateRepo(ctx, urepo.Did, newroot, rev); err != nil { 337 return nil, err 338 } 339 ··· 348 return results, nil 349 } 350 351 + func (rm *RepoMan) getRecordProof(ctx context.Context, urepo models.Repo, collection, rkey string) (cid.Cid, []blocks.Block, error) { 352 c, err := cid.Cast(urepo.Root) 353 if err != nil { 354 return cid.Undef, nil, err ··· 357 dbs := rm.s.getBlockstore(urepo.Did) 358 bs := recording_blockstore.New(dbs) 359 360 + r, err := repo.OpenRepo(ctx, bs, c) 361 if err != nil { 362 return cid.Undef, nil, err 363 } 364 365 + _, _, err = r.GetRecordBytes(ctx, collection+"/"+rkey) 366 if err != nil { 367 return cid.Undef, nil, err 368 }