Skip to content

Commit 333ee09

Browse files
committed
refactor: address review comments
1 parent 9496992 commit 333ee09

6 files changed

Lines changed: 41 additions & 31 deletions

File tree

pkg/migrations/sql/00001_init.sql

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,42 @@
33
CREATE TABLE provider (
44
id TEXT PRIMARY KEY, -- DID
55
region TEXT UNIQUE,
6-
created_at TIMESTAMPTZ NOT NULL,
6+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
77
updated_at TIMESTAMPTZ
88
);
99

1010
CREATE TABLE tenant (
1111
id TEXT PRIMARY KEY, -- DID
12-
provider_id TEXT, -- DID
13-
name TEXT,
14-
status TEXT NOT NULL, -- active, write-locked, disabled
15-
created_at TIMESTAMPTZ NOT NULL,
12+
external_id TEXT UNIQUE, -- external Tenant API id ({tenantId})
13+
provider_id TEXT NOT NULL REFERENCES provider(id) ON DELETE RESTRICT, -- DID
14+
status TEXT NOT NULL CONSTRAINT tenant_status_valid CHECK (status IN ('active', 'write-locked', 'disabled')), -- active, write-locked, disabled
15+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
1616
updated_at TIMESTAMPTZ
1717
);
1818

1919
CREATE TABLE bucket (
2020
id TEXT PRIMARY KEY, -- DID
21-
tenant_id TEXT, -- DID
22-
name TEXT UNIQUE,
23-
created_at TIMESTAMPTZ NOT NULL
21+
tenant_id TEXT NOT NULL REFERENCES tenant(id) ON DELETE RESTRICT, -- DID
22+
name TEXT UNIQUE CONSTRAINT bucket_name_valid CHECK (char_length(name) BETWEEN 3 AND 63 AND name ~ '^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$'),
23+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
2424
);
2525

2626
CREATE TABLE access_key (
2727
id TEXT PRIMARY KEY, -- DID
28-
tenant_id TEXT, -- DID
29-
name TEXT,
30-
buckets TEXT[],
28+
tenant_id TEXT NOT NULL REFERENCES tenant(id) ON DELETE RESTRICT, -- DID
29+
name TEXT NOT NULL,
30+
buckets TEXT[], -- bucket DIDs; NULL/empty = all buckets (powerline)
3131
permissions TEXT[] NOT NULL,
32-
created_at TIMESTAMPTZ NOT NULL
32+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
3333
);
3434

3535
CREATE TABLE delegation (
36-
id TEXT PRIMARY KEY, -- CID of delegation
37-
issuer TEXT NOT NULL, -- DID
38-
audience TEXT NOT NULL, -- DID
39-
subject TEXT, -- DID, NULL for powerline
40-
command TEXT,
41-
data BYTEA NOT NULL,
36+
id TEXT PRIMARY KEY, -- CID of delegation
37+
issuer TEXT NOT NULL, -- DID
38+
audience TEXT NOT NULL, -- DID
39+
subject TEXT, -- DID, NULL for powerline
40+
command TEXT NOT NULL,
41+
data BYTEA NOT NULL,
4242
expires_at TIMESTAMPTZ
4343
);
4444

pkg/store/accesskey/postgres/store.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ func (s *Store) Add(ctx context.Context, id did.DID, tenant did.DID, name string
3939
permissions = []string{}
4040
}
4141
_, err := s.pool.Exec(ctx, `
42-
INSERT INTO access_key (id, tenant_id, name, buckets, permissions, created_at)
43-
VALUES ($1, $2, $3, $4, $5, $6)
44-
`, id.String(), tenant.String(), name, bucketStrs, permissions, time.Now().UTC())
42+
INSERT INTO access_key (id, tenant_id, name, buckets, permissions)
43+
VALUES ($1, $2, $3, $4, $5)
44+
`, id.String(), tenant.String(), name, bucketStrs, permissions)
4545
if err != nil {
4646
var pgErr *pgconn.PgError
4747
if errors.As(err, &pgErr) && pgErr.Code == uniqueViolation {

pkg/store/bucket/postgres/store.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func (s *Store) Initialize(ctx context.Context) error { return nil }
3232

3333
func (s *Store) Add(ctx context.Context, id did.DID, tenant did.DID, name string) error {
3434
_, err := s.pool.Exec(ctx, `
35-
INSERT INTO bucket (id, tenant_id, name, created_at)
36-
VALUES ($1, $2, $3, $4)
37-
`, id.String(), tenant.String(), name, time.Now().UTC())
35+
INSERT INTO bucket (id, tenant_id, name)
36+
VALUES ($1, $2, $3)
37+
`, id.String(), tenant.String(), name)
3838
if err != nil {
3939
var pgErr *pgconn.PgError
4040
if errors.As(err, &pgErr) && pgErr.Code == uniqueViolation {

pkg/store/delegation/postgres/store.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ func New(pool *pgxpool.Pool) *Store {
3636
func (s *Store) Initialize(ctx context.Context) error { return nil }
3737

3838
func (s *Store) PutBatch(ctx context.Context, delegations []ucan.Delegation) error {
39+
tx, err := s.pool.Begin(ctx)
40+
if err != nil {
41+
return fmt.Errorf("beginning transaction: %w", err)
42+
}
43+
defer tx.Rollback(ctx) // no-op once committed; rolls back on any early return
44+
3945
for _, d := range delegations {
4046
data, err := delegation.Encode(d)
4147
if err != nil {
@@ -54,14 +60,18 @@ func (s *Store) PutBatch(ctx context.Context, delegations []ucan.Delegation) err
5460
expiresAt = &t
5561
}
5662

57-
if _, err := s.pool.Exec(ctx, `
63+
if _, err := tx.Exec(ctx, `
5864
INSERT INTO delegation (id, issuer, audience, subject, command, data, expires_at)
5965
VALUES ($1, $2, $3, $4, $5, $6, $7)
6066
ON CONFLICT (id) DO NOTHING
6167
`, d.Link().String(), d.Issuer().String(), d.Audience().String(), subject, d.Command().String(), data, expiresAt); err != nil {
6268
return fmt.Errorf("storing delegation %s: %w", d.Link(), err)
6369
}
6470
}
71+
72+
if err := tx.Commit(ctx); err != nil {
73+
return fmt.Errorf("committing transaction: %w", err)
74+
}
6575
return nil
6676
}
6777

pkg/store/provider/postgres/store.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func (s *Store) Initialize(ctx context.Context) error { return nil }
3232

3333
func (s *Store) Add(ctx context.Context, id did.DID, region string) error {
3434
_, err := s.pool.Exec(ctx, `
35-
INSERT INTO provider (id, region, created_at)
36-
VALUES ($1, $2, $3)
37-
`, id.String(), region, time.Now().UTC())
35+
INSERT INTO provider (id, region)
36+
VALUES ($1, $2)
37+
`, id.String(), region)
3838
if err != nil {
3939
var pgErr *pgconn.PgError
4040
if errors.As(err, &pgErr) && pgErr.Code == uniqueViolation {

pkg/store/tenant/postgres/store.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func (s *Store) Initialize(ctx context.Context) error { return nil }
3232

3333
func (s *Store) Add(ctx context.Context, id did.DID, provider did.DID, name string, status tenant.Status) error {
3434
_, err := s.pool.Exec(ctx, `
35-
INSERT INTO tenant (id, provider_id, name, status, created_at)
36-
VALUES ($1, $2, $3, $4, $5)
37-
`, id.String(), provider.String(), name, string(status), time.Now().UTC())
35+
INSERT INTO tenant (id, provider_id, name, status)
36+
VALUES ($1, $2, $3, $4)
37+
`, id.String(), provider.String(), name, string(status))
3838
if err != nil {
3939
var pgErr *pgconn.PgError
4040
if errors.As(err, &pgErr) && pgErr.Code == uniqueViolation {

0 commit comments

Comments
 (0)