Live video on the AT Protocol
79
fork

Configure Feed

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

at v0.7.20 60 lines 1.4 kB view raw
1package model 2 3import ( 4 "fmt" 5 6 "github.com/google/uuid" 7) 8 9type Thumbnail struct { 10 ID string `json:"id" gorm:"primaryKey"` 11 Format string `json:"format"` 12 SegmentID string `json:"segmentId" gorm:"index"` 13 Segment Segment `json:"segment,omitempty" gorm:"foreignKey:SegmentID;references:id"` 14} 15 16func (m *DBModel) CreateThumbnail(thumb *Thumbnail) error { 17 uu, err := uuid.NewV7() 18 if err != nil { 19 return err 20 } 21 if thumb.SegmentID == "" { 22 return fmt.Errorf("segmentID is required") 23 } 24 thumb.ID = uu.String() 25 err = m.DB.Model(Thumbnail{}).Create(thumb).Error 26 if err != nil { 27 return err 28 } 29 return nil 30} 31 32// return the most recent thumbnail for a user 33func (m *DBModel) LatestThumbnailForUser(user string) (*Thumbnail, error) { 34 var thumbnail Thumbnail 35 36 res := m.DB.Table("thumbnails AS t"). 37 Select("t.*"). 38 Joins("JOIN segments AS s ON t.segment_id = s.id"). 39 Where("s.repo_did = ?", user). 40 Order("s.start_time DESC"). 41 Limit(1). 42 Scan(&thumbnail) 43 44 if res.RowsAffected == 0 { 45 return nil, nil 46 } 47 if res.Error != nil { 48 return nil, res.Error 49 } 50 51 var seg Segment 52 err := m.DB.First(&seg, "id = ?", thumbnail.SegmentID).Error 53 if err != nil { 54 return nil, fmt.Errorf("could not find segment for thumbnail SegmentID=%s", thumbnail.SegmentID) 55 } 56 57 thumbnail.Segment = seg 58 59 return &thumbnail, nil 60}