- golang-migrate embarqué via embed (db/migrations/*.sql), MigrateDatabase(url) au boot
- ids TEXT 32-hex avec CHECK ~ '^[0-9a-f]{32}$' ; operations idempotentes UNIQUE(device_id, operation_id)
- harness db/migrations_test.go (up → assertions schéma → down, skip si PG indisponible)
- DB dev fraîche vaultdrop_dev (la DB vaultdrop héberge un prototype V2 abandonné)
9 lines
346 B
SQL
9 lines
346 B
SQL
CREATE TABLE devices (
|
|
device_id TEXT PRIMARY KEY CHECK (device_id ~ '^[0-9a-f]{32}$'),
|
|
user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
registered_at TIMESTAMPTZ DEFAULT NOW(),
|
|
last_seen_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX idx_devices_user ON devices(user_id) WHERE user_id IS NOT NULL; |