Preparar repositorio para despliegue: código fuente limpio
This commit is contained in:
parent
866f5c432d
commit
3eca832c1a
76 changed files with 5434 additions and 3496 deletions
41
init-db/20-usuarios.sql
Normal file
41
init-db/20-usuarios.sql
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
-- Tabla de usuarios
|
||||
-- Almacena información de autenticación y perfil de usuarios
|
||||
|
||||
CREATE TABLE IF NOT EXISTS usuarios (
|
||||
id SERIAL PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(255) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
last_login TIMESTAMP,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
CONSTRAINT username_min_length CHECK (LENGTH(username) >= 3),
|
||||
CONSTRAINT email_format CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
|
||||
);
|
||||
|
||||
-- Índices para búsquedas rápidas
|
||||
CREATE INDEX IF NOT EXISTS idx_usuarios_username ON usuarios(username);
|
||||
CREATE INDEX IF NOT EXISTS idx_usuarios_email ON usuarios(email);
|
||||
CREATE INDEX IF NOT EXISTS idx_usuarios_active ON usuarios(is_active) WHERE is_active = TRUE;
|
||||
|
||||
-- Trigger para actualizar updated_at
|
||||
CREATE OR REPLACE FUNCTION update_usuario_timestamp()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = NOW();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER trigger_update_usuario_timestamp
|
||||
BEFORE UPDATE ON usuarios
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_usuario_timestamp();
|
||||
|
||||
-- Comentarios
|
||||
COMMENT ON TABLE usuarios IS 'Usuarios registrados del sistema';
|
||||
COMMENT ON COLUMN usuarios.username IS 'Nombre de usuario único';
|
||||
COMMENT ON COLUMN usuarios.email IS 'Correo electrónico único';
|
||||
COMMENT ON COLUMN usuarios.password_hash IS 'Hash bcrypt de la contraseña';
|
||||
COMMENT ON COLUMN usuarios.is_active IS 'Indica si la cuenta está activa';
|
||||
Loading…
Add table
Add a link
Reference in a new issue