DROP SCHEMA public CASCADE; CREATE SCHEMA public; CREATE TABLE roles_admin ( id_rol SERIAL PRIMARY KEY, nombre VARCHAR(50) UNIQUE NOT NULL ); CREATE TABLE usuarios_admin ( id_usuario SERIAL PRIMARY KEY, username VARCHAR(100) UNIQUE NOT NULL, email VARCHAR(150) UNIQUE NOT NULL, password_hash TEXT NOT NULL, nombre VARCHAR(100), activo BOOLEAN DEFAULT TRUE, ultimo_login TIMESTAMP, fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id_rol INT NOT NULL, CONSTRAINT fk_admin_rol FOREIGN KEY(id_rol) REFERENCES roles_admin(id_rol) ); CREATE TABLE sesiones_admin ( id_sesion SERIAL PRIMARY KEY, id_usuario INT NOT NULL, token TEXT NOT NULL, ip VARCHAR(100), user_agent TEXT, fecha_inicio TIMESTAMP DEFAULT CURRENT_TIMESTAMP, fecha_expiracion TIMESTAMP, CONSTRAINT fk_sesion_usuario FOREIGN KEY(id_usuario) REFERENCES usuarios_admin(id_usuario) ON DELETE CASCADE ); CREATE TABLE logs_admin ( id_log SERIAL PRIMARY KEY, id_usuario INT, accion VARCHAR(255), descripcion TEXT, fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_log_usuario FOREIGN KEY(id_usuario) REFERENCES usuarios_admin(id_usuario) ON DELETE SET NULL ); INSERT INTO roles_admin(nombre) VALUES ('superadmin'), ('admin'), ('moderador'), ('viewer');