A vibe coded tangled fork which supports pijul.
1package db
2
3import (
4 "tangled.org/core/appview/models"
5 "time"
6)
7
8func UpsertPublicKey(e Execer, pubKey models.PublicKey) error {
9 _, err := e.Exec(
10 `insert into public_keys (did, rkey, name, key, created)
11 values (?, ?, ?, ?, ?)
12 on conflict(did, rkey) do update set
13 name = excluded.name,
14 key = excluded.key,
15 created = excluded.created`,
16 pubKey.Did,
17 pubKey.Rkey,
18 pubKey.Name,
19 pubKey.Key,
20 pubKey.Created.Format(time.RFC3339),
21 )
22 return err
23}
24
25// for public_keys with empty rkey
26func DeletePublicKeyLegacy(e Execer, did, name string) error {
27 _, err := e.Exec(`
28 delete from public_keys
29 where did = ? and name = ? and rkey = ''`,
30 did, name)
31 return err
32}
33
34func DeletePublicKeyByRkey(e Execer, did, rkey string) error {
35 _, err := e.Exec(`
36 delete from public_keys
37 where did = ? and rkey = ?`,
38 did, rkey)
39 return err
40}
41
42func GetAllPublicKeys(e Execer) ([]models.PublicKey, error) {
43 var keys []models.PublicKey
44
45 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`)
46 if err != nil {
47 return nil, err
48 }
49 defer rows.Close()
50
51 for rows.Next() {
52 var publicKey models.PublicKey
53 var createdAt string
54 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {
55 return nil, err
56 }
57 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
58 publicKey.Created = &createdAtTime
59 keys = append(keys, publicKey)
60 }
61
62 if err := rows.Err(); err != nil {
63 return nil, err
64 }
65
66 return keys, nil
67}
68
69func GetPublicKeysForDid(e Execer, did string) ([]models.PublicKey, error) {
70 var keys []models.PublicKey
71
72 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)
73 if err != nil {
74 return nil, err
75 }
76 defer rows.Close()
77
78 for rows.Next() {
79 var publicKey models.PublicKey
80 var createdAt string
81 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
82 return nil, err
83 }
84 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
85 publicKey.Created = &createdAtTime
86 keys = append(keys, publicKey)
87 }
88
89 if err := rows.Err(); err != nil {
90 return nil, err
91 }
92
93 return keys, nil
94}