Add migration script
This commit is contained in:
parent
fa7ec8731b
commit
148eced9b9
43
migrations/20240210133900_macro_restructure.sql
Normal file
43
migrations/20240210133900_macro_restructure.sql
Normal file
@ -0,0 +1,43 @@
|
||||
CREATE TABLE command_macro (
|
||||
id INT UNSIGNED AUTO_INCREMENT,
|
||||
guild_id INT UNSIGNED NOT NULL,
|
||||
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description VARCHAR(100),
|
||||
commands JSON NOT NULL,
|
||||
|
||||
FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
# New JSON structure is {command_name: "Remind", "<option name>": "<option value>", ...}
|
||||
INSERT INTO command_macro (guild_id, description, name, commands)
|
||||
SELECT
|
||||
guild_id,
|
||||
description,
|
||||
name,
|
||||
(
|
||||
SELECT JSON_ARRAYAGG(
|
||||
JSON_MERGE_PATCH(
|
||||
'{}',
|
||||
(
|
||||
SELECT JSON_OBJECTAGG(t2.name, t2.value)
|
||||
FROM JSON_TABLE(
|
||||
JSON_ARRAY_APPEND(t1.options, '$', JSON_OBJECT('name', 'command_name', 'value', t1.command_name)),
|
||||
'$[*]' COLUMNS (
|
||||
name VARCHAR(64) PATH '$.name' ERROR ON ERROR,
|
||||
value TEXT PATH '$.value' ERROR ON ERROR
|
||||
)) AS t2
|
||||
)
|
||||
)
|
||||
)
|
||||
FROM macro m2
|
||||
JOIN JSON_TABLE(
|
||||
commands,
|
||||
'$[*]' COLUMNS (
|
||||
command_name VARCHAR(64) PATH '$.command_name' ERROR ON ERROR,
|
||||
options JSON PATH '$.options' ERROR ON ERROR
|
||||
)) AS t1
|
||||
WHERE m1.id = m2.id
|
||||
)
|
||||
FROM macro m1;
|
Loading…
Reference in New Issue
Block a user