feat(backend): migrations Postgres testées (users, devices, resources, operations, ocr_jobs) + migrate au boot

- 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é)
This commit is contained in:
m
2026-09-10 07:35:36 +02:00
parent 293c1ca9b2
commit 484498d989
18 changed files with 329 additions and 10 deletions
@@ -0,0 +1,13 @@
CREATE TABLE users (
id TEXT PRIMARY KEY CHECK (id ~ '^[0-9a-f]{32}$'),
email VARCHAR(255),
display_name VARCHAR(255),
parent_user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
storage_quota_bytes BIGINT DEFAULT 10737418240,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
deleted_at TIMESTAMPTZ
);
CREATE UNIQUE INDEX idx_users_email ON users(email) WHERE email IS NOT NULL AND deleted_at IS NULL;
CREATE INDEX idx_users_parent ON users(parent_user_id) WHERE deleted_at IS NULL;