29 lines
949 B
MySQL
29 lines
949 B
MySQL
|
|
CREATE TABLE users (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
email TEXT NOT NULL UNIQUE,
|
||
|
|
password_hash TEXT NOT NULL,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Sessions opaques côté serveur plutôt que des JWT : révocation = une
|
||
|
|
-- ligne supprimée, pas de clé de signature à faire tourner ni à protéger.
|
||
|
|
CREATE TABLE sessions (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
expires_at TIMESTAMPTZ NOT NULL
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX sessions_user_id_idx ON sessions(user_id);
|
||
|
|
|
||
|
|
CREATE TABLE files (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
owner_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
|
|
filename TEXT NOT NULL,
|
||
|
|
content_type TEXT NOT NULL,
|
||
|
|
size_bytes BIGINT NOT NULL,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX files_owner_id_idx ON files(owner_id);
|