Files
SIG-CM2.0/database/migrations/V001__create_usuario.sql

44 lines
1.7 KiB
MySQL
Raw Normal View History

-- V001__create_usuario.sql
-- Creates the core Usuario table for SIG-CM2
-- Run on: SIGCM2 (prod) and SIGCM2_Test (integration tests)
SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
GO
IF OBJECT_ID('dbo.Usuario', 'U') IS NULL
BEGIN
CREATE TABLE dbo.Usuario (
Id INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_Usuario PRIMARY KEY,
Username NVARCHAR(50) NOT NULL,
PasswordHash NVARCHAR(255) NOT NULL,
Nombre NVARCHAR(100) NOT NULL,
Apellido NVARCHAR(100) NOT NULL,
Email NVARCHAR(150) NULL,
Rol VARCHAR(30) NOT NULL,
PermisosJson NVARCHAR(MAX) NOT NULL CONSTRAINT DF_Usuario_Permisos DEFAULT('[]'),
Activo BIT NOT NULL CONSTRAINT DF_Usuario_Activo DEFAULT(1),
FechaCreacion DATETIME2(3) NOT NULL CONSTRAINT DF_Usuario_FechaCreacion DEFAULT(SYSUTCDATETIME()),
FechaModificacion DATETIME2(3) NULL,
UltimoLogin DATETIME2(3) NULL,
CONSTRAINT UQ_Usuario_Username UNIQUE (Username),
CONSTRAINT CK_Usuario_Rol CHECK (Rol IN ('admin','vendedor','tasador','consulta'))
);
PRINT 'Table dbo.Usuario created successfully.';
END
ELSE
BEGIN
PRINT 'Table dbo.Usuario already exists — skipping.';
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_Usuario_Username_Activo' AND object_id = OBJECT_ID('dbo.Usuario'))
BEGIN
CREATE INDEX IX_Usuario_Username_Activo
ON dbo.Usuario(Username)
WHERE Activo = 1;
PRINT 'Index IX_Usuario_Username_Activo created.';
END
GO