Something went wrong. Try again.
Monorepo for Tangled
Something went wrong. Try again.
1.2 kB · 52 lines
Go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package db
import ( "database/sql" "errors")
type RepoAlias struct { OwnerDid string Rkey string RepoDid string Rev string}
func (d *DB) UpsertRepoAlias(a RepoAlias) error { _, err := d.db.Exec( `insert into repo_aliases (owner_did, rkey, repo_did, rev) values (?, ?, ?, ?) on conflict(owner_did, rkey) do update set repo_did = excluded.repo_did, rev = excluded.rev where excluded.rev > repo_aliases.rev`, a.OwnerDid, a.Rkey, a.RepoDid, a.Rev, ) return err}
func (d *DB) ResolveAlias(ownerDid, rkey string) (*RepoAlias, error) { var a RepoAlias err := d.db.QueryRow( `select owner_did, rkey, repo_did, rev from repo_aliases where owner_did = ? and rkey = ?`, ownerDid, rkey, ).Scan(&a.OwnerDid, &a.Rkey, &a.RepoDid, &a.Rev) if errors.Is(err, sql.ErrNoRows) { return nil, nil } if err != nil { return nil, err } return &a, nil}
func (d *DB) CurrentRkey(repoDid string) (ownerDid string, rkey string, err error) { err = d.db.QueryRow( `select owner_did, rkey from repo_aliases where repo_did = ? order by rev desc limit 1`, repoDid, ).Scan(&ownerDid, &rkey) return}