codigo0/backend/database/migrations/001_create_auth_schema.sql

48 lines
1.6 KiB
MySQL
Raw Normal View History

2026-01-19 08:10:16 +00:00
-- ============================================
-- MIGRACIÓN 001: Crear Schema y Tabla de Usuarios
-- ============================================
--
-- Crea el schema emerges_content y la tabla de usuarios
-- necesaria para autenticación del admin panel
--
-- Crear schema si no existe
CREATE SCHEMA IF NOT EXISTS emerges_content;
-- Tabla de usuarios
CREATE TABLE IF NOT EXISTS emerges_content.users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email TEXT UNIQUE NOT NULL,
username TEXT NOT NULL,
password_hash TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'editor',
is_active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
last_login TIMESTAMPTZ
);
-- Índices
CREATE INDEX IF NOT EXISTS idx_users_email ON emerges_content.users(email);
CREATE INDEX IF NOT EXISTS idx_users_role ON emerges_content.users(role);
CREATE INDEX IF NOT EXISTS idx_users_is_active ON emerges_content.users(is_active);
-- Trigger para actualizar updated_at
CREATE OR REPLACE FUNCTION emerges_content.update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER update_users_updated_at
BEFORE UPDATE ON emerges_content.users
FOR EACH ROW
EXECUTE FUNCTION emerges_content.update_updated_at_column();
-- Comentarios
COMMENT ON TABLE emerges_content.users IS 'Usuarios del sistema de administración';
COMMENT ON COLUMN emerges_content.users.role IS 'Rol del usuario: super_admin, editor_clinico, editor_formativo, revisor, viewer';