A vibe coded tangled fork which supports pijul.
at 3f6e50b7512609295303f4756793a6ff3238c847 94 lines 2.2 kB view raw
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}