fork of indigo with slightly nicer lexgen
at main 1.6 kB view raw
1package yolopersist 2 3import ( 4 "context" 5 "fmt" 6 "sync" 7 8 "github.com/bluesky-social/indigo/events" 9 "github.com/bluesky-social/indigo/models" 10) 11 12// YoloPersister is used for benchmarking, it has no persistence, it just emits events and forgets them 13type YoloPersister struct { 14 lk sync.Mutex 15 seq int64 16 17 broadcast func(*events.XRPCStreamEvent) 18} 19 20func NewYoloPersister() *YoloPersister { 21 return &YoloPersister{} 22} 23 24func (yp *YoloPersister) Persist(ctx context.Context, e *events.XRPCStreamEvent) error { 25 yp.lk.Lock() 26 defer yp.lk.Unlock() 27 yp.seq++ 28 switch { 29 case e.RepoCommit != nil: 30 e.RepoCommit.Seq = yp.seq 31 case e.RepoSync != nil: 32 e.RepoSync.Seq = yp.seq 33 case e.RepoIdentity != nil: 34 e.RepoIdentity.Seq = yp.seq 35 case e.RepoAccount != nil: 36 e.RepoAccount.Seq = yp.seq 37 case e.LabelLabels != nil: 38 e.LabelLabels.Seq = yp.seq 39 default: 40 panic("no event in persist call") 41 } 42 43 yp.broadcast(e) 44 45 return nil 46} 47 48func (mp *YoloPersister) Playback(ctx context.Context, since int64, cb func(*events.XRPCStreamEvent) error) error { 49 return fmt.Errorf("playback not supported by yolo persister, test usage only") 50} 51 52func (yp *YoloPersister) TakeDownRepo(ctx context.Context, uid models.Uid) error { 53 return fmt.Errorf("repo takedowns not currently supported by memory persister, test usage only") 54} 55 56func (yp *YoloPersister) SetEventBroadcaster(brc func(*events.XRPCStreamEvent)) { 57 yp.broadcast = brc 58} 59 60func (yp *YoloPersister) Flush(ctx context.Context) error { 61 return nil 62} 63 64func (yp *YoloPersister) Shutdown(ctx context.Context) error { 65 return nil 66}