A vibe coded tangled fork which supports pijul.
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}