diff --git a/backend/sql/schema.sql b/backend/sql/schema.sql index 50c3523..3779938 100644 --- a/backend/sql/schema.sql +++ b/backend/sql/schema.sql @@ -1,5 +1,8 @@ -- Mysql schema +-- Enter the mysql container +-- sudo docker exec -it eegsac mysql -u root --password=123456789 educa7ls_plataforma + -- docker run --name eegsac -e MYSQL_ROOT_PASSWORD=123456789 -p 3306:3306 -d mysql:8.0-debian CREATE TABLE person ( @@ -23,166 +26,38 @@ CREATE TABLE register ( register_code INTEGER NOT NULL, register_creation_date DATETIME NOT NULL, register_display_date DATETIME NOT NULL, - register_custom_label VARCHAR(100) NOT NULL, + register_custom_label INTEGER NOT NULL, register_is_preview BOOLEAN NOT NULL, register_person_id INTEGER NOT NULL, register_course_id INTEGER NOT NULL, FOREIGN KEY (register_person_id) REFERENCES person (person_id), - FOREIGN KEY (register_course_id) REFERENCES course (course_id) + FOREIGN KEY (register_course_id) REFERENCES course (course_id), + + CONSTRAINT fk_register_custom_label + FOREIGN KEY (register_custom_label) + REFERENCES custom_label(custom_label_id) +); + +CREATE TABLE custom_label ( + custom_label_id INTEGER PRIMARY KEY AUTO_INCREMENT, + custom_label_value VARCHAR(50) NOT NULL ); --- Course list -INSERT INTO course (course_name, course_display_name, course_days_amount, course_has_custom_label) VALUES - -- - -- Comunes - -- - ('Manejo Def.', 'Manejo Defensivo', 1, 0), - ('Mec. Basica', 'Mecánica Básica', 1, 0), - ('4x4', 'Manejo en 4x4 Road Danger', 1, 0), - ('Matpel 1', 'Matpel I - Advertencia', 1, 0), - ('Matpel 2', 'Matpel II - Operaciones', 1, 0), - ('Matpel 3', 'Matpel III - Técnico', 3, 0), - ('Sup. Escolta', 'Supervisor Escolta Matpel', 7, 0), - ('1ros auxilios', 'Primeros Auxilios', 1, 0), - ('Lucha contra incendios', 'Lucha contra Incendios', 1, 0), - ('Extintores', 'Uso y Manejo de Extintores', 1, 0), - ('IPERC', 'IDENTIFICACIÓN DE PELIGROS, EVALUACIÓN DE RIESGOS Y CONTROLES (IPERC)', 1, 0), +-- Migration - -- - -- Maquinarias - -- - ('Cargador frontal', 'Operador profesional de Cargador Frontal', 5, 1), - ('Excavadora', 'Operador profesional de Excavadora', 5, 1), - ('Retroexcavadora', 'Operador profesional de Retroexcavadora', 5, 1), - ('Volquete', 'Operador profesional de Volquete', 5, 1), - ('Minicargador', 'Operador profesional de Minicargador', 5, 1), - ('Montacarga', 'Operador profesional de Montacarga', 5, 1), - ('Rodillo', 'Operador profesional de Rodillo', 5, 1), - ('Telehandler', 'Operador profesional de Telehandler', 5, 1), - ('Camion grua', 'Operador Profesional de Grua', 5, 1), - ('Tractor Oruga', 'Operador profesional de Tractor Oruga', 5, 1), - -- 90 hours - ('SCOOPTRAMS', 'Operador profesional de SCOOPTRAMS', 8, 1), - -- 2 months - ('Jumbo', 'Operador profesional de Jumbo', 60, 1), - ('Motoniveladora', 'Operador profesional de Motoniveladora', 5, 1), +-- Empty label +INSERT INTO custom_label (custom_label_value) VALUES (''); +ALTER TABLE register MODIFY COLUMN register_custom_label INTEGER NOT NULL DEFAULT 1; - -- - -- Seguridad de maquinarias - -- - ('Seg. de Montacarga', 'Operación segura de Montacargas', 1, 0), - ('Seg. Op. Maquinaria Pesada', 'Seguridad en la Operacion de Maquinaria Pesada', 3, 0), - ('Seg. de Jumbo', 'SEGURIDAD EN LA OPERACIÓN DE JUMBO PERFORADOR', 30, 0), +-- Set all registers by default to empty label +UPDATE register SET register_custom_label = 1; - -- Otros - ('Matpel 4', 'Matpel IV', 3, 0), - ('Herr. de Gestion', 'Herramientas de Gestión', 1, 0), - ('Seguridad minera', 'Seguridad Minera', 1, 0), - ('SBComportamiento', 'Seguridad Basada en el Comportamiento', 1, 0), - ('Primer respondedor', 'Primer Respondedor', 1, 0), - ('Operador multiple', 'Operador múltiple', 1, 0), - ('RITRA', 'RITRA', 1, 0), - ('Fatiga y somnolencia', 'Fatiga y Somnolencia', 1, 0), - ('Bioseguridad y la Salud Ocupacional', 'Bioseguridad y la Salud Ocupacional', 1, 0), - ('Seguridad y Salud en Mineria', 'Seguridad y Salud en Mineria', 1, 0), - ('Espacios Confinados', 'Espacios Confinados', 1, 0), - ('Manipulación de productos químicos', 'Manipulación de productos químicos', 1, 0), - ('Interpretación del Reglamento Interno de Transito', 'Interpretación del Reglamento Interno de Transito', 1, 0), - ('DERRAMES DE HIDROCARBUROS', 'DERRAMES DE HIDROCARBUROS', 1, 0), - ('PREVENCIÓN Y CONTROL DE COVID-19', 'PREVENCIÓN Y CONTROL DE COVID-19', 1, 0), - ('BIOSEGURIDAD EN EL TRABAJO', 'BIOSEGURIDAD EN EL TRABAJO', 1, 0), - ('Seguridad en la Operación', 'Seguridad en la Operación', 1, 0), - ('IMPLEMENTACIÓN DE PLAN DE VIGILANCIA ', 'IMPLEMENTACIÓN DE PLAN DE VIGILANCIA ', 1, 0), - ('ESPECIALIZACION PERFORACION Y VOLADURA', 'ESPECIALIZACION PERFORACION Y VOLADURA', 1, 0), - ('SEGURIDAD Y SALUD EN EL TRABAJO frente al COVID-19', 'SEGURIDAD Y SALUD EN EL TRABAJO frente al COVID-19', 1, 0), - - ('Supervisor de trabajos en alto riesgo', 'Supervisor de trabajos en alto riesgo', 1, 0), - ('Técnicas preventivas en la operación de maquinaria', 'Técnicas preventivas en la operación de maquinaria', 1, 0), - ('Prevención y protección contra incendios', 'Prevención y protección contra incendios', 1, 0), - ('Salud ocupacional y primeros auxilios', 'Salud ocupacional y primeros auxilios', 1, 0), +-- Add constraint after all values are set to empty label +ALTER TABLE register CONSTRAINT fk_register_custom_label + FOREIGN KEY (register_custom_label) + REFERENCES custom_label(custom_label_id); - -- Merge with next cert, the same - ('Manejo defensivo y transporte personal', 'Manejo defensivo y transporte personal', 1, 0), - ('Seguridad con materiales peligrosos', 'Seguridad con materiales peligrosos', 1, 0), - ('Operador CAT', 'Operador CAT', 1, 0), - ('Brigada de emergencia', 'Brigada de emergencia', 1, 0), - ('Seguridad en trabajos de alto riesgo', 'Seguridad en trabajos de alto riesgo', 1, 0), - ('Supervisor de seguridad minera e industrial', 'Supervisor de seguridad minera e industrial', 1, 0), - ('Logística, transporte, almacenaje y manutención', 'Logística, transporte, almacenaje y manutención', 1, 0), - - ('PRIMEROS AUXILIOS (BIOSEGURIDAD) frente al COVID -', 'PRIMEROS AUXILIOS (BIOSEGURIDAD) frente al COVID -', 1, 0), - ('SEGURIDAD Y SALUD EN EL TRABAJO, bajo normativas a', 'SEGURIDAD Y SALUD EN EL TRABAJO, bajo normativas a', 1, 0), - - ('Especialización operador de puente grúa', 'Especialización operador de puente grúa', 1, 0), - ('Caja Fuller', 'Caja Fuller', 1, 0), - -- ? Merge? - ('Especialización Cargador Frontal', 'Especialización Cargador Frontal', 1, 0), - - - - ('Rescatista Industrial', 'Rescatista Industrial', 1, 0), - ('Camión Minero 797F CAT', 'Camión Minero 797F CAT', 1, 0), - ('Investigación de accidentes e incidentes', 'Investigación de accidentes e incidentes', 1, 0), - - - - ('Sistema de Comando de Incidentes SCI', 'Sistema de Comando de Incidentes SCI', 1, 0), - ('Seguridad en la Operación de Camión Minero de Alto', 'Seguridad en la Operación de Camión Minero de Alto', 1, 0), - ('Seguridad Minera frente al Covid-19', 'Seguridad Minera frente al Covid-19', 1, 0), - ('Operador de Camión Lubricador', 'Operador de Camión Lubricador', 1, 0), - ('RIGGER', 'RIGGER o Auxiliar de Operador Grua', 1, 0), - - - ('Operador de Elevador de Tijera', 'Operador de Elevador de Tijera', 1, 0), - ('Trabajos en Caliente', 'Trabajos en Caliente', 1, 0), - ('Operador Grua Articulada ANSI/ASME', 'Operador Grua Articulada ANSI/ASME', 1, 0), - ('Operador Calificado KOMATSU', 'Operador Calificado KOMATSU', 1, 0), - ('Cuidado del Medio AMbiente', 'Cuidado del Medio AMbiente', 1, 0), - ('Campaña \"No al exceso de velocidad\"', 'Campaña \"No al exceso de velocidad\"', 1, 0), - ('INCENDIO EN VEHÍCULOS', 'INCENDIO EN VEHÍCULOS', 1, 0), - ('Sensibilización Primeros Auxilios', 'Sensibilización Primeros Auxilios', 1, 0), - ('Inspecciones de Seguridad', 'Inspecciones de Seguridad', 1, 0), - ('Transporte de Personal Industrial', 'Transporte de Personal Industrial', 1, 0), - ('BIOSEGURIDAD EN INDUSTRIA Y MINERIA EN COVID-19', 'BIOSEGURIDAD EN INDUSTRIA Y MINERIA EN COVID-19', 1, 0), - ('CAMPAÑA DE NO ALCOHOL', 'CAMPAÑA DE NO ALCOHOL', 1, 0), - ('OPERACIÓN, LOGÍSTICA Y ALMACENES', 'OPERACIÓN, LOGÍSTICA Y ALMACENES', 1, 0), - ('Trabajos en Altura ', 'Trabajos en Altura ', 1, 0), - ('PERFORACIÓN Y VOLADURA', 'PERFORACIÓN Y VOLADURA', 1, 0), - ('SEGURIDAD Y SALUD EN EL TRABAJO', 'SEGURIDAD Y SALUD EN EL TRABAJO', 1, 0), - ('PREVENCIÓN DE RIESGOS LABORALES', 'PREVENCIÓN DE RIESGOS LABORALES', 1, 0), - - -- ?? Merge? - ('MANEJO DEFENSIVO 4X4', 'MANEJO DEFENSIVO 4X4', 1, 0), - -- Merge - ('MANEJO DEFENSIVO Y TRANSPORTE PERSONAL', 'MANEJO DEFENSIVO Y TRANSPORTE PERSONAL', 1, 0), - ('CONDUCCIÓN SEGURA', 'CONDUCCIÓN SEGURA', 1, 0), - ('MANEJO Y MANTENIMIENTO OPERADOR DE SEMITRAILER', 'MANEJO Y MANTENIMIENTO OPERADOR DE SEMITRAILER', 1, 0), - ('OPERADOR CAMION CISTERNA', 'OPERADOR CAMION CISTERNA', 1, 0), - ('SEMITRAILER INTERNATIONAL', 'SEMITRAILER INTERNATIONAL', 1, 0), - ('Procedimientos de carga y descarga de combustibles', 'Procedimientos de carga y descarga de combustibles', 1, 0), - ('Transporte seguro de materiales y residuos peligro', 'Transporte seguro de materiales y residuos peligro', 1, 0), - ('GESTIÓN DE ALMACENES EN GENERAL', 'GESTIÓN DE ALMACENES EN GENERAL', 1, 0), - ('Operación Segura para Transporte de Hidrocarburos ', 'Operación Segura para Transporte de Hidrocarburos ', 1, 0), - ('COMO EVITAR ACTOS SUBESTANDAR DURANTE LA OPERACIÓN', 'COMO EVITAR ACTOS SUBESTANDAR DURANTE LA OPERACIÓN', 1, 0), - ('MANIOBRAS TEMERARIAS', 'MANIOBRAS TEMERARIAS', 1, 0), - ('MANIOBRAS EN PARQUEOS Y ZONAS CERCA A PERSONAL QUE', 'MANIOBRAS EN PARQUEOS Y ZONAS CERCA A PERSONAL QUE', 1, 0), - ('LÍMITES DE VELOCIDAD', 'LÍMITES DE VELOCIDAD', 1, 0), - - -- Merge - ('Cargador Frontal 950M CAT', 'Cargador Frontal 950M CAT', 1, 0), - ('CAMPAÑA DE NO ALCOHOL Y DROGAS', 'CAMPAÑA DE NO ALCOHOL Y DROGAS', 1, 0), - ('GESTIÓN DE RESIDUOS SOLIDOS', 'GESTIÓN DE RESIDUOS SOLIDOS', 1, 0), - ('Tractor de Ruedas', 'Tractor de Ruedas', 1, 0), - ('Manlift', 'Manlift', 1, 0), - ('ASPECTOS E IMPACTO AMBIENTAL', 'ASPECTOS E IMPACTO AMBIENTAL', 1, 0), - ('INVESTIGACIÓN DE ACCIDENTES', 'INVESTIGACIÓN DE ACCIDENTES', 1, 0), - ('MANEJO DE RESIDUOS', 'MANEJO DE RESIDUOS', 1, 0), - - -- Merge - ('OPERADOR DE SCOOPTRANS R1600H', 'OPERADOR DE SCOOPTRANS R1600H', 1, 0), - ('ELECTRICIDAD Y MANTENIMIENTO DE VOLQUETE', 'ELECTRICIDAD Y MANTENIMIENTO DE VOLQUETE', 1, 0), - ('CARGAS Y MERCANCÍAS', 'CARGAS Y MERCANCÍAS', 1, 0) -; +-- End migration diff --git a/backend/src/model/register.rs b/backend/src/model/register.rs index 38e41fb..267b121 100644 --- a/backend/src/model/register.rs +++ b/backend/src/model/register.rs @@ -29,9 +29,8 @@ pub struct Register { /// Date shown on the certificate, in YYYY-MM-DD format pub register_display_date: String, /// Some course's names can be extended with a label. - /// Used in machinery courses, where the course name is the type of machinery, - /// and the custom label the manufacturer and series (i.e. `320D CAT`). - pub register_custom_label: String, + /// Points to a custom_label entity + pub register_custom_label: i32, /// Whether this register is a preview of the certificate ("sin firmas") pub register_is_preview: bool, /// Foreign key to the person table @@ -62,7 +61,7 @@ impl RegisterCreate { next_register_code, current_date, self.date, - "", + 1, false, self.person_id, self.course_id diff --git a/frontend/src/types/Register.ts b/frontend/src/types/Register.ts index bf37869..f9b540e 100644 --- a/frontend/src/types/Register.ts +++ b/frontend/src/types/Register.ts @@ -19,9 +19,8 @@ export type Register = { /// Date shown on the certificate, in YYYY-MM-DD format register_display_date: string, /// Some course's names can be extended with a label. - /// Used in machinery courses, where the course name is the type of machinery, - /// and the custom label the manufacturer and series (i.e. `320D CAT`). - register_custom_label: string, + /// Points to another entity + register_custom_label: number, /// Foreign key to the person table register_person_id: number, /// Foreign key to the course table