new-grid adapt2 revision

parent ade32dfd
--- ---------------------------------------------------------------------------
---
--- Adaptación de la base de datos al nuevo esquema
---
--- ---------------------------------------------------------------------------
-- Rename columns
RENAME TABLE `scene` TO `grid`;
ALTER TABLE `stu_picto` CHANGE `id_scene` `id_grid` int(11) NOT NULL;
......@@ -15,6 +21,12 @@ ALTER TABLE `grid` ADD `color` varchar(7) NULL;
-- Foreign key stu_picto(id_child_grid) <- grid(id)
ALTER TABLE stu_picto ADD FOREIGN KEY(id_child_grid) REFERENCES grid(id) ON DELETE SET NULL;
--- ---------------------------------------------------------------------------
---
--- Migración de los datos al nuevo esquema
---
--- ---------------------------------------------------------------------------
DELIMITER $$
DROP PROCEDURE IF EXISTS new_grid_system $$
......@@ -64,7 +76,6 @@ BEGIN
SELECT _attributes->>"$.free_category_coord_y" INTO _free_category_coord_y;
END IF;
-- Esto hay que hacerlo porque el null procediente del JSON para id_cat lo reconoce como un literal
IF _attributes->>"$.id_cat" = 'null' THEN
SET _id_cat = NULL;
ELSE
......@@ -75,7 +86,8 @@ BEGIN
UPDATE stu_picto
SET
`attributes` = JSON_REMOVE(`attributes`, '$.free_category_coord_x'),
`attributes` = JSON_REMOVE(`attributes`, '$.free_category_coord_y')
`attributes` = JSON_REMOVE(`attributes`, '$.free_category_coord_y'),
`attributes` = JSON_REMOVE(`attributes`, '$.id_cat')
WHERE id = _id_stu_picto;
-- Pictogramas que estan en escenas sin categorias
......@@ -86,7 +98,7 @@ BEGIN
SET
`attributes` = JSON_REPLACE(`attributes`, '$.coord_x', _free_category_coord_x),
`attributes` = JSON_REPLACE(`attributes`, '$.coord_y', _free_category_coord_y),
`attributes` = JSON_REMOVE(`attributes`, '$.id_cat')
WHERE id = _id_stu_picto;
-- Pictogramas que estan en escenas con categorias
......
......@@ -7,30 +7,35 @@ SET FOREIGN_KEY_CHECKS = 1;
-- CAMBIOS EN EL SCHEMA DE pictodb
-- Renombrado de tabla y columnas
RENAME TABLE `scene` TO `grid`;
ALTER TABLE `stu_picto` CHANGE `id_scene` `id_grid` int(11) NOT NULL;
ALTER TABLE `student` CHANGE `id_active_scene` `id_active_grid` int(11) NULL;
-- Nueva columna 'id_child_grid'
ALTER TABLE `stu_picto` ADD `id_grid` int(11) NOT NULL;
ALTER TABLE `stu_picto` ADD `id_child_grid` int(11) NULL;
-- Elimina columna categorias 'categories'
ALTER TABLE `stu_picto` DROP COLUMN `id_scene`;
ALTER TABLE `stu_picto` ADD FOREIGN KEY(id_child_grid) REFERENCES grid(id) ON DELETE SET NULL;
ALTER TABLE `grid` DROP COLUMN `categories`;
-- Color del grid pasa a ser una columna
ALTER TABLE `grid` ADD `color` varchar(7) NULL;
-- Foreign key stu_picto(id_child_grid) <- grid(id)
ALTER TABLE stu_picto ADD FOREIGN KEY(id_child_grid) REFERENCES grid(id) ON DELETE SET NULL;
-- ESCENAS CON CATEGORIAS
-- Pictos principales: creamos escenas para cada uno de ellos, evitando los de la primera columna
UPDATE stu_picto
SET id_child_grid = id
WHERE attributes->>"$.id_cat" = 'null' AND attributes->>"$.coord_x" > 0;
WHERE attributes->>"$.id_cat" = 'null' AND attributes->>"$.coord_y" > 0;
INSERT INTO grid(SELECT ¿NAME?, id_child_grid FROM stu_picto WHERE id_child_grid IS NOT NULL);
INSERT INTO grid (name, id, id_stu)
SELECT picto_exp.text, stu_picto.id_child_grid, stu_picto.id_stu
FROM stu_picto, picto_exp
WHERE
stu_picto.id_child_grid IS NOT NULL AND
stu_picto.id_pic = picto_exp.id_pic AND
picto_exp.lang = 'es-es';
UPDATE stu_picto AS A
JOIN stu_picto AS B on
A.id_scene = B.id_scene AND
A.id_stu = B.id_stu AND
A.id_cat = B.id_pic
A.attributes->>"$.id_cat" = B.id_pic
SET A.id_grid = B.id_child_grid;
-- Pictos hijos: los asociamos a su escena correspondiente
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment