Monorepo for Tangled tangled.org

knotserver: add repodid package, db migrations, and go-didplc dep #1135

open opened by oyster.cafe targeting master from oyster.cafe/tangled-core: master
Labels

None yet.

assignee

None yet.

Participants 2
AT URI
at://did:plc:3fwecdnvtcscjnrx2p4n7alz/sh.tangled.repo.pull/3mgprvt2ech22
+17 -44
Interdiff #9 #10
go.mod

This file has not been changed.

go.sum

This file has not been changed.

+17 -44
knotserver/db/db.go
··· 11 11 securejoin "github.com/cyphar/filepath-securejoin" 12 12 _ "github.com/mattn/go-sqlite3" 13 13 "tangled.org/core/log" 14 + "tangled.org/core/orm" 14 15 ) 15 16 16 17 type DB struct { ··· 83 84 return nil, err 84 85 } 85 86 86 - migrationCheck := func(name string) bool { 87 - var count int 88 - conn.QueryRowContext(ctx, `SELECT count(1) FROM migrations WHERE name = ?`, name).Scan(&count) 89 - return count > 0 90 - } 91 - 92 - runMigration := func(name string, fn func() error) error { 93 - if migrationCheck(name) { 94 - return nil 95 - } 96 - if err := fn(); err != nil { 97 - return fmt.Errorf("migration %q failed: %w", name, err) 98 - } 99 - _, err := conn.ExecContext(ctx, `INSERT INTO migrations (name) VALUES (?)`, name) 100 - if err != nil { 101 - return fmt.Errorf("recording migration %q: %w", name, err) 102 - } 103 - return nil 104 - } 105 - 106 - if err := runMigration("add-owner-did-to-repo-keys", func() error { 107 - _, mErr := conn.ExecContext(ctx, `ALTER TABLE repo_keys ADD COLUMN owner_did TEXT`) 87 + if err := orm.RunMigration(conn, logger, "add-owner-did-to-repo-keys", func(tx *sql.Tx) error { 88 + _, mErr := tx.ExecContext(ctx, `ALTER TABLE repo_keys ADD COLUMN owner_did TEXT`) 108 89 return mErr 109 90 }); err != nil { 110 91 return nil, err 111 92 } 112 93 113 - if err := runMigration("add-repo-name-to-repo-keys", func() error { 114 - _, mErr := conn.ExecContext(ctx, `ALTER TABLE repo_keys ADD COLUMN repo_name TEXT`) 94 + if err := orm.RunMigration(conn, logger, "add-repo-name-to-repo-keys", func(tx *sql.Tx) error { 95 + _, mErr := tx.ExecContext(ctx, `ALTER TABLE repo_keys ADD COLUMN repo_name TEXT`) 115 96 return mErr 116 97 }); err != nil { 117 98 return nil, err 118 99 } 119 100 120 - if err := runMigration("add-unique-owner-repo-on-repo-keys", func() error { 121 - _, mErr := conn.ExecContext(ctx, `CREATE UNIQUE INDEX IF NOT EXISTS idx_repo_keys_owner_repo ON repo_keys(owner_did, repo_name)`) 101 + if err := orm.RunMigration(conn, logger, "add-unique-owner-repo-on-repo-keys", func(tx *sql.Tx) error { 102 + _, mErr := tx.ExecContext(ctx, `CREATE UNIQUE INDEX IF NOT EXISTS idx_repo_keys_owner_repo ON repo_keys(owner_did, repo_name)`) 122 103 return mErr 123 104 }); err != nil { 124 105 return nil, err 125 106 } 126 107 127 - if err := runMigration("add-key-type-and-nullable-signing-key", func() error { 128 - tx, txErr := conn.BeginTx(ctx, nil) 129 - if txErr != nil { 130 - return txErr 131 - } 132 - defer tx.Rollback() 133 - 108 + if err := orm.RunMigration(conn, logger, "add-key-type-and-nullable-signing-key", func(tx *sql.Tx) error { 134 109 _, mErr := tx.ExecContext(ctx, ` 135 110 create table repo_keys_new ( 136 111 repo_did text primary key, ··· 138 113 created_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 139 114 owner_did text, 140 115 repo_name text, 116 + at_uri text, 141 117 key_type text not null default 'k256' 142 118 ); 143 - insert into repo_keys_new 119 + insert into repo_keys_new (repo_did, signing_key, created_at, owner_did, repo_name, key_type) 144 120 select repo_did, signing_key, created_at, owner_did, repo_name, 'k256' 145 121 from repo_keys; 146 122 drop table repo_keys; ··· 148 124 create unique index if not exists idx_repo_keys_owner_repo 149 125 on repo_keys(owner_did, repo_name); 150 126 `) 151 - if mErr != nil { 152 - return mErr 153 - } 154 - return tx.Commit() 127 + return mErr 155 128 }); err != nil { 156 129 return nil, err 157 130 } ··· 162 135 }, nil 163 136 } 164 137 165 - func (d *DB) StoreRepoKey(repoDid string, signingKey []byte, ownerDid, repoName string) error { 138 + func (d *DB) StoreRepoKey(repoDid string, signingKey []byte, ownerDid, repoName, atUri string) error { 166 139 _, err := d.db.Exec( 167 - `INSERT INTO repo_keys (repo_did, signing_key, owner_did, repo_name, key_type) VALUES (?, ?, ?, ?, 'k256')`, 168 - repoDid, signingKey, ownerDid, repoName, 140 + `INSERT INTO repo_keys (repo_did, signing_key, owner_did, repo_name, at_uri, key_type) VALUES (?, ?, ?, ?, ?, 'k256')`, 141 + repoDid, signingKey, ownerDid, repoName, atUri, 169 142 ) 170 143 return err 171 144 } 172 145 173 - func (d *DB) StoreRepoDidWeb(repoDid, ownerDid, repoName string) error { 146 + func (d *DB) StoreRepoDidWeb(repoDid, ownerDid, repoName, atUri string) error { 174 147 _, err := d.db.Exec( 175 - `INSERT INTO repo_keys (repo_did, signing_key, owner_did, repo_name, key_type) VALUES (?, NULL, ?, ?, 'web')`, 176 - repoDid, ownerDid, repoName, 148 + `INSERT INTO repo_keys (repo_did, signing_key, owner_did, repo_name, at_uri, key_type) VALUES (?, NULL, ?, ?, ?, 'web')`, 149 + repoDid, ownerDid, repoName, atUri, 177 150 ) 178 151 return err 179 152 }
knotserver/repodid/repodid.go

This file has not been changed.

nix/gomod2nix.toml

This file has not been changed.

History

12 rounds 1 comment
sign up or login to add to the discussion
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
merge conflicts detected
expand
  • go.mod:34
  • go.sum:339
expand 0 comments
oyster.cafe submitted #10
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 1 comment
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments
1 commit
expand
knotserver: add repodid package, db migrations, and go-didplc dep
expand 0 comments