Monorepo for Tangled
0

Configure Feed

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

at master 1.3 kB View raw
1package db 2 3import ( 4 "database/sql" 5 "errors" 6) 7 8type RepoAlias struct { 9 OwnerDid string 10 Rkey string 11 RepoDid string 12 Rev string 13} 14 15func (d *DB) UpsertRepoAlias(a RepoAlias) error { 16 _, err := d.db.Exec( 17 `insert into repo_aliases (owner_did, rkey, repo_did, rev) 18 values (?, ?, ?, ?) 19 on conflict(owner_did, rkey) do update set 20 repo_did = excluded.repo_did, 21 rev = excluded.rev 22 where excluded.rev > repo_aliases.rev`, 23 a.OwnerDid, a.Rkey, a.RepoDid, a.Rev, 24 ) 25 return err 26} 27 28func (d *DB) DeleteRepoAlias(ownerDid, rkey string) error { 29 _, err := d.db.Exec( 30 `delete from repo_aliases where owner_did = ? and rkey = ?`, 31 ownerDid, rkey, 32 ) 33 return err 34} 35 36func (d *DB) ResolveAlias(ownerDid, rkey string) (*RepoAlias, error) { 37 var a RepoAlias 38 err := d.db.QueryRow( 39 `select owner_did, rkey, repo_did, rev from repo_aliases where owner_did = ? and rkey = ?`, 40 ownerDid, rkey, 41 ).Scan(&a.OwnerDid, &a.Rkey, &a.RepoDid, &a.Rev) 42 if errors.Is(err, sql.ErrNoRows) { 43 return nil, nil 44 } 45 if err != nil { 46 return nil, err 47 } 48 return &a, nil 49} 50 51func (d *DB) CurrentRkey(repoDid string) (ownerDid string, rkey string, err error) { 52 err = d.db.QueryRow( 53 `select owner_did, rkey from repo_aliases 54 where repo_did = ? 55 order by rev desc 56 limit 1`, 57 repoDid, 58 ).Scan(&ownerDid, &rkey) 59 return 60}