-- 10_user_units.sql
-- Tablas de unidades de usuario por tipo
-- Version: 1.0
-- Fecha: 2025-12-30

-- HSU: Host Service Unit (usuarios de servicio host)
CREATE TABLE IF NOT EXISTS hsu (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

-- PJU: Project Unit (usuarios de proyecto)
CREATE TABLE IF NOT EXISTS pju (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

-- SPU: Service Process Unit (usuarios de proceso de servicio)
CREATE TABLE IF NOT EXISTS spu (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

-- VSU: Version Service Unit (usuarios de servicio de version)
CREATE TABLE IF NOT EXISTS vsu (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

-- VUU: Version Update Unit (usuarios de actualizacion de version)
CREATE TABLE IF NOT EXISTS vuu (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

-- FLU: Flow Unit (usuarios de flujo)
CREATE TABLE IF NOT EXISTS flu (
    id SERIAL PRIMARY KEY,
    ref VARCHAR(10) NOT NULL UNIQUE,
    h_usuario VARCHAR(64) NOT NULL UNIQUE,
    nombre VARCHAR(255),
    user_id INTEGER NOT NULL,
    activo BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);
