new-grid adapt2 revision

parent 05a863aa
......@@ -2,16 +2,17 @@ SET FOREIGN_KEY_CHECKS = 0;
-- Purgamos base de datos antes
DELETE FROM stu_picto WHERE id_scene NOT IN (SELECT s.id FROM scene s);
ALTER TABLE `stu_picto` DROP FOREIGN KEY `id_scene`;
-- ----------------------------------------------------------------------------
-- CAMBIOS EN EL SCHEMA DE pictodb
-- ----------------------------------------------------------------------------
SELECT "Actualizando esquema";
RENAME TABLE `scene` TO `grid`;
ALTER TABLE `student` CHANGE `id_active_scene` `id_active_grid` int(11) NULL;
ALTER TABLE `stu_picto` ADD `id_grid` int(11) NOT NULL;
ALTER TABLE `stu_picto` ADD `id_child_grid` int(11) NULL;
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 `stu_picto` ADD FOREIGN KEY(`id_grid`) REFERENCES `grid`(`id`) ON DELETE CASCADE;
......@@ -22,10 +23,15 @@ ALTER TABLE `grid` ADD `color` varchar(7) NULL;
-- ESCENAS CON CATEGORIAS
-- ----------------------------------------------------------------------------
SELECT "Creando tableros para los pictos con categorías...";
-- 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_y" > 0;
WHERE
attributes->>"$.id_cat" = 'null' AND
attributes->>"$.coord_y" > 0 AND
attributes->'$.free_category_coord_x' = 'null';
INSERT INTO grid (name, id, id_stu)
SELECT picto_exp.text, stu_picto.id_child_grid, stu_picto.id_stu
......@@ -37,6 +43,8 @@ WHERE
-- Pictos hijos: los asociamos a su escena correspondiente
SELECT "Asociando pictos a tableros...";
UPDATE stu_picto AS A
JOIN stu_picto AS B on
A.id_scene = B.id_scene AND
......@@ -48,19 +56,31 @@ SET A.id_grid = B.id_child_grid;
-- ESCENAS SIN CATEGORIAS
-- ----------------------------------------------------------------------------
-- Pasa los pictos de escenas sin categorias al nuevo sistema
SELECT "Transformando escenas sin categorías en tableros...";
UPDATE stu_picto
SET id_grid = id_scene
WHERE id_grid IS NULL;
-- Adaptamos JSON
UPDATE stu_picto
SET
`attributes` = JSON_REPLACE(`attributes`, '$.coord_x', attributes->'$.free_category_coord_x'),
`attributes` = JSON_REPLACE(`attributes`, '$.coord_y', attributes->'$.free_category_coord_y')
WHERE attributes->>"$.free_category_coord_x" != 'null' AND attributes->>"$.free_category_coord_y" != 'null';
-- ----------------------------------------------------------------------------
-- Cambios finales de esquema
-- ----------------------------------------------------------------------------
SELECT "Cambios finales en el esquema y purga del JSON de stu_picto";
ALTER TABLE `stu_picto` DROP COLUMN `id_scene`;
-- LIMPIA EL JSON DE TODOS LOS PICTOGRAMAS
UPDATE stu_picto
SET
`attributes` = JSON_REMOVE(`attributes`, '$.free_category_coord_x'),
`attributes` = JSON_REMOVE(`attributes`, '$.free_category_coord_y'),
`attributes` = JSON_REMOVE(`attributes`, '$.id_cat');
SET FOREIGN_KEY_CHECKS = 1;
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