A vibe coded tangled fork which supports pijul.
at sl/tap-appview 54 lines 1.1 kB view raw
1package models 2 3import ( 4 "fmt" 5 "time" 6 7 "github.com/bluesky-social/indigo/atproto/syntax" 8 "tangled.org/core/api/tangled" 9) 10 11type Star struct { 12 Did string 13 RepoAt syntax.ATURI 14 Created time.Time 15 Rkey string 16} 17 18func (s *Star) AsRecord() tangled.FeedStar { 19 return tangled.FeedStar{ 20 Subject: s.RepoAt.String(), 21 CreatedAt: s.Created.Format(time.RFC3339), 22 } 23} 24 25func StarFromRecord(did syntax.DID, rkey syntax.RecordKey, record tangled.FeedStar) (Star, error) { 26 subjectAt, err := syntax.ParseATURI(record.Subject) 27 if err != nil { 28 return Star{}, fmt.Errorf("subject should be valid at-uri: %w", err) 29 } 30 31 created, err := time.Parse(time.RFC3339, record.CreatedAt) 32 if err != nil { 33 return Star{}, fmt.Errorf("invalid time format '%s'", record.CreatedAt) 34 } 35 36 return Star{ 37 Did: did.String(), 38 Rkey: rkey.String(), 39 RepoAt: subjectAt, 40 Created: created, 41 }, nil 42} 43 44// RepoStar is used for reverse mapping to repos 45type RepoStar struct { 46 Star 47 Repo *Repo 48} 49 50// StringStar is used for reverse mapping to strings 51type StringStar struct { 52 Star 53 String *String 54}