|
3 | 3 | CREATE TABLE provider ( |
4 | 4 | id TEXT PRIMARY KEY, -- DID |
5 | 5 | region TEXT UNIQUE, |
6 | | - created_at TIMESTAMPTZ NOT NULL, |
| 6 | + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), |
7 | 7 | updated_at TIMESTAMPTZ |
8 | 8 | ); |
9 | 9 |
|
10 | 10 | CREATE TABLE tenant ( |
11 | 11 | 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(), |
16 | 16 | updated_at TIMESTAMPTZ |
17 | 17 | ); |
18 | 18 |
|
19 | 19 | CREATE TABLE bucket ( |
20 | 20 | 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() |
24 | 24 | ); |
25 | 25 |
|
26 | 26 | CREATE TABLE access_key ( |
27 | 27 | 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) |
31 | 31 | permissions TEXT[] NOT NULL, |
32 | | - created_at TIMESTAMPTZ NOT NULL |
| 32 | + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() |
33 | 33 | ); |
34 | 34 |
|
35 | 35 | 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, |
42 | 42 | expires_at TIMESTAMPTZ |
43 | 43 | ); |
44 | 44 |
|
|
0 commit comments