an app.bsky.* indexer
1package models 2 3import ( 4 "bytes" 5 "log/slog" 6 "time" 7 8 appbsky "github.com/bluesky-social/indigo/api/bsky" 9 "github.com/bluesky-social/indigo/atproto/syntax" 10) 11 12type FeedLike struct { 13 ID string `gorm:"primaryKey"` 14 15 CreatedAt string 16 Subject *StrongRef `gorm:"embedded;embeddedPrefix:subject_"` 17 Via *StrongRef `gorm:"embedded;embeddedPrefix:via_"` 18 19 AutoCreatedAt time.Time `gorm:"autoCreateTime"` 20 AutoUpdatedAt time.Time `gorm:"autoUpdateTime"` 21} 22 23func NewFeedLike(uri syntax.ATURI, rec []byte) *FeedLike { 24 var out appbsky.FeedLike 25 if err := out.UnmarshalCBOR(bytes.NewReader(rec)); err != nil { 26 slog.Error("could not unmarshal feed like CBOR", "err", err) 27 return nil 28 } 29 30 like := FeedLike{ 31 ID: string(uri), 32 CreatedAt: out.CreatedAt, 33 } 34 35 if out.Subject != nil { 36 like.Subject = &StrongRef{ 37 Uri: out.Subject.Uri, 38 Cid: out.Subject.Cid, 39 } 40 } 41 42 if out.Via != nil { 43 like.Via = &StrongRef{ 44 Uri: out.Via.Uri, 45 Cid: out.Via.Cid, 46 } 47 } 48 49 return &like 50}