-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.sql
More file actions
83 lines (69 loc) · 2.64 KB
/
init.sql
File metadata and controls
83 lines (69 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
email TEXT,
is_external BOOLEAN DEFAULT false
);
-- Index pour recherche rapide d'utilisateurs par username
CREATE INDEX idx_users_username ON users(username);
-- Index pour recherche d'utilisateurs par email (si utilisé dans vos requêtes)
CREATE INDEX idx_users_email ON users(email);
CREATE TABLE auth_codes (
code TEXT PRIMARY KEY,
client_id TEXT NOT NULL,
redirect_uri TEXT NOT NULL,
user_id UUID NOT NULL,
code_challenge TEXT,
code_challenge_method TEXT,
expires_at TIMESTAMP NOT NULL,
scope TEXT NOT NULL
);
-- Index pour améliorer les performances des jointures user_id sans contrainte FK
CREATE INDEX idx_auth_codes_user_id ON auth_codes(user_id);
-- Index sur client_id pour accélération des requêtes filtrées par client
CREATE INDEX idx_auth_codes_client_id ON auth_codes(client_id);
-- Index pour le nettoyage des codes expirés
CREATE INDEX idx_auth_codes_expires_at ON auth_codes(expires_at);
CREATE TABLE clients (
id TEXT PRIMARY KEY,
secret TEXT NOT NULL,
name TEXT NOT NULL,
redirect_uris TEXT[] DEFAULT '{}'
);
-- Index pour recherche de clients par nom (si utilisé)
CREATE INDEX idx_clients_name ON clients(name);
-- Exemple de client
INSERT INTO clients (id, secret, name, redirect_uris)
VALUES ('demo-client', 'demo-secret', 'Demo App', ARRAY['http://localhost:3000']);
-- Admin user
INSERT INTO users (username, password_hash, email, is_external)
value
CREATE TABLE refresh_tokens (
token TEXT PRIMARY KEY,
client_id TEXT NOT NULL,
user_id TEXT,
issued_at TIMESTAMP NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS auth_providers (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
client_id TEXT NOT NULL,
client_secret TEXT NOT NULL,
tenant_id TEXT,
enabled BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Run this SQL to add new columns to the users table
ALTER TABLE users ADD COLUMN IF NOT EXISTS external_id TEXT;
ALTER TABLE users ADD COLUMN IF NOT EXISTS auth_provider TEXT;
CREATE INDEX IF NOT EXISTS idx_users_external_id ON users(external_id);
-- Index pour recherche par client_id
CREATE INDEX idx_refresh_tokens_client_id ON refresh_tokens(client_id);
-- Index pour recherche par user_id (sans FK)
CREATE INDEX idx_refresh_tokens_user_id ON refresh_tokens(user_id);
-- Index pour expiration/nettoyage des tokens anciens
CREATE INDEX idx_refresh_tokens_issued_at ON refresh_tokens(issued_at);
-- Extensions utiles
CREATE EXTENSION IF NOT EXISTS "pgcrypto"; -- pour gen_random_uuid()