Signed-off-by: Lewis lewis@tangled.org
go.mod
go.mod
This file has not been changed.
go.sum
go.sum
This file has not been changed.
+17
-44
knotserver/db/db.go
+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
knotserver/repodid/repodid.go
This file has not been changed.
nix/gomod2nix.toml
nix/gomod2nix.toml
This file has not been changed.
History
12 rounds
1 comment
oyster.cafe
submitted
#11
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
merge conflicts detected
expand
collapse
expand
collapse
- go.mod:34
- go.sum:339
expand 0 comments
oyster.cafe
submitted
#10
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#9
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 1 comment
oyster.cafe
submitted
#8
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#7
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#6
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#5
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#4
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#3
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#2
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#1
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
expand 0 comments
oyster.cafe
submitted
#0
1 commit
expand
collapse
knotserver: add repodid package, db migrations, and go-didplc dep
Signed-off-by: Lewis <lewis@tangled.org>
knotserver/db/db.go:92Can we useorm.RunMigrationhere?knotserver/db/db.go:135-142I think it would be better to store sourcesh.tangled.repoat-uri just in case.