pagination curseur, layout 3 colonnes article, sidebar fixe
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
-- Migration 001 : Système de rôles et notes d'articles
|
||||
-- À exécuter une seule fois sur le serveur PostgreSQL
|
||||
|
||||
-- Rôles disponibles
|
||||
CREATE TABLE IF NOT EXISTS roles (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(50) UNIQUE NOT NULL,
|
||||
label TEXT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO roles (name, label) VALUES
|
||||
('admin', 'Administrateur'),
|
||||
('editor', 'Rédacteur'),
|
||||
('reader', 'Lecteur')
|
||||
ON CONFLICT (name) DO NOTHING;
|
||||
|
||||
-- Association utilisateur ↔ rôle (clé : email, pour compatibilité OIDC sans FK)
|
||||
CREATE TABLE IF NOT EXISTS user_roles (
|
||||
user_email TEXT NOT NULL,
|
||||
role_id INTEGER NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
|
||||
granted_at TIMESTAMP DEFAULT NOW(),
|
||||
granted_by TEXT,
|
||||
PRIMARY KEY (user_email, role_id)
|
||||
);
|
||||
|
||||
-- Seed : cedric@abonnel.fr → admin
|
||||
INSERT INTO user_roles (user_email, role_id, granted_by)
|
||||
SELECT 'cedric@abonnel.fr', id, 'migration'
|
||||
FROM roles WHERE name = 'admin'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Notes d'articles (1-5 étoiles, une note par utilisateur par article)
|
||||
CREATE TABLE IF NOT EXISTS article_ratings (
|
||||
article_uuid VARCHAR(36) NOT NULL,
|
||||
user_email TEXT NOT NULL,
|
||||
rating SMALLINT NOT NULL CHECK (rating BETWEEN 1 AND 5),
|
||||
rated_at TIMESTAMP DEFAULT NOW(),
|
||||
PRIMARY KEY (article_uuid, user_email)
|
||||
);
|
||||
Reference in New Issue
Block a user