51 lines
1.5 KiB
SQL
51 lines
1.5 KiB
SQL
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(
|
|
(
|
|
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;
|
|
|
|
# # Check which commands are used in macros
|
|
# SELECT DISTINCT command_name
|
|
# 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
|