44 lines
1.7 KiB
MySQL
44 lines
1.7 KiB
MySQL
|
|
-- 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
|