From 1cb8b185ac8786f4386305af61d756eb6a8e4427 Mon Sep 17 00:00:00 2001 From: elweyn Date: Thu, 18 Nov 2021 09:14:02 +0100 Subject: [PATCH 1/2] Create tables on an already exsting table breaks the script, so fix with a create table if not exists. Insert statement breaks if their is a duplicate key that is imported change so that it does not break. --- database/migrations/0002-add_settings.ts | 2 +- .../migrations/0003-login_server_tables.ts | 20 +++++++++---------- database/migrations/0004-login_server_data.ts | 20 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/database/migrations/0002-add_settings.ts b/database/migrations/0002-add_settings.ts index d26a2b4cc..4c5300e49 100644 --- a/database/migrations/0002-add_settings.ts +++ b/database/migrations/0002-add_settings.ts @@ -11,7 +11,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { await queryFn(` - CREATE TABLE \`user_setting\` ( + CREATE TABLE IF NOT EXISTS \`user_setting\` ( \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, \`userId\` int(11) NOT NULL, \`key\` varchar(255) NOT NULL, diff --git a/database/migrations/0003-login_server_tables.ts b/database/migrations/0003-login_server_tables.ts index dacc211ac..ee8a4cfe2 100644 --- a/database/migrations/0003-login_server_tables.ts +++ b/database/migrations/0003-login_server_tables.ts @@ -11,7 +11,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { await queryFn(` - CREATE TABLE \`login_app_access_tokens\` ( + CREATE TABLE IF NOT EXISTS \`login_app_access_tokens\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`user_id\` int NOT NULL, \`access_code\` bigint unsigned NOT NULL, @@ -22,7 +22,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_elopage_buys\` ( + CREATE TABLE IF NOT EXISTS \`login_elopage_buys\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`elopage_user_id\` int DEFAULT NULL, \`affiliate_program_id\` int NOT NULL, @@ -39,7 +39,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_email_opt_in_types\` ( + CREATE TABLE IF NOT EXISTS \`login_email_opt_in_types\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`name\` varchar(255) NOT NULL, \`description\` varchar(255) NOT NULL, @@ -47,7 +47,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_email_opt_in\` ( + CREATE TABLE IF NOT EXISTS \`login_email_opt_in\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`user_id\` int NOT NULL, \`verification_code\` bigint unsigned NOT NULL, @@ -60,7 +60,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_groups\` ( + CREATE TABLE IF NOT EXISTS \`login_groups\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`alias\` varchar(190) NOT NULL, \`name\` varchar(255) NOT NULL, @@ -73,7 +73,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_pending_tasks\` ( + CREATE TABLE IF NOT EXISTS \`login_pending_tasks\` ( \`id\` int UNSIGNED NOT NULL AUTO_INCREMENT, \`user_id\` int UNSIGNED DEFAULT 0, \`request\` varbinary(2048) NOT NULL, @@ -88,7 +88,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_roles\` ( + CREATE TABLE IF NOT EXISTS \`login_roles\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`name\` varchar(255) NOT NULL, \`description\` varchar(255) NOT NULL, @@ -97,7 +97,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_user_backups\` ( + CREATE TABLE IF NOT EXISTS \`login_user_backups\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`user_id\` int NOT NULL, \`passphrase\` text NOT NULL, @@ -106,7 +106,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_user_roles\` ( + CREATE TABLE IF NOT EXISTS \`login_user_roles\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`user_id\` int NOT NULL, \`role_id\` int NOT NULL, @@ -114,7 +114,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; `) await queryFn(` - CREATE TABLE \`login_users\` ( + CREATE TABLE IF NOT EXISTS \`login_users\` ( \`id\` int unsigned NOT NULL AUTO_INCREMENT, \`email\` varchar(191) NOT NULL, \`first_name\` varchar(150) NOT NULL, diff --git a/database/migrations/0004-login_server_data.ts b/database/migrations/0004-login_server_data.ts index dad7d1e34..bd4cf2d18 100644 --- a/database/migrations/0004-login_server_data.ts +++ b/database/migrations/0004-login_server_data.ts @@ -22,34 +22,34 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis } await queryFn(` - INSERT INTO \`login_app_access_tokens\` SELECT * FROM ${LOGIN_SERVER_DB}.\`app_access_tokens\`; + INSERT IGNORE INTO \`login_app_access_tokens\` SELECT * FROM ${LOGIN_SERVER_DB}.\`app_access_tokens\`; `) await queryFn(` - INSERT INTO \`login_elopage_buys\` SELECT * FROM ${LOGIN_SERVER_DB}.\`elopage_buys\`; + INSERT IGNORE INTO \`login_elopage_buys\` SELECT * FROM ${LOGIN_SERVER_DB}.\`elopage_buys\`; `) await queryFn(` - INSERT INTO \`login_email_opt_in_types\` SELECT * FROM ${LOGIN_SERVER_DB}.\`email_opt_in_types\`; + INSERT IGNORE INTO \`login_email_opt_in_types\` SELECT * FROM ${LOGIN_SERVER_DB}.\`email_opt_in_types\`; `) await queryFn(` - INSERT INTO \`login_email_opt_in\` SELECT * FROM ${LOGIN_SERVER_DB}.\`email_opt_in\`; + INSERT IGNORE INTO \`login_email_opt_in\` SELECT * FROM ${LOGIN_SERVER_DB}.\`email_opt_in\`; `) await queryFn(` - INSERT INTO \`login_groups\` SELECT * FROM ${LOGIN_SERVER_DB}.\`groups\`; + INSERT IGNORE INTO \`login_groups\` SELECT * FROM ${LOGIN_SERVER_DB}.\`groups\`; `) await queryFn(` - INSERT INTO \`login_pending_tasks\` SELECT * FROM ${LOGIN_SERVER_DB}.\`pending_tasks\`; + INSERT IGNORE INTO \`login_pending_tasks\` SELECT * FROM ${LOGIN_SERVER_DB}.\`pending_tasks\`; `) await queryFn(` - INSERT INTO \`login_roles\` SELECT * FROM ${LOGIN_SERVER_DB}.\`roles\`; + INSERT IGNORE INTO \`login_roles\` SELECT * FROM ${LOGIN_SERVER_DB}.\`roles\`; `) await queryFn(` - INSERT INTO \`login_user_backups\` SELECT * FROM ${LOGIN_SERVER_DB}.\`user_backups\`; + INSERT IGNORE INTO \`login_user_backups\` SELECT * FROM ${LOGIN_SERVER_DB}.\`user_backups\`; `) await queryFn(` - INSERT INTO \`login_user_roles\` SELECT * FROM ${LOGIN_SERVER_DB}.\`user_roles\`; + INSERT IGNORE INTO \`login_user_roles\` SELECT * FROM ${LOGIN_SERVER_DB}.\`user_roles\`; `) await queryFn(` - INSERT INTO \`login_users\` SELECT * FROM ${LOGIN_SERVER_DB}.\`users\`; + INSERT IGNORE INTO \`login_users\` SELECT * FROM ${LOGIN_SERVER_DB}.\`users\`; `) // TODO clarify if we need this on non docker environment? From 393b198a46b4fc06788d99a65b9613ac38cc49ea Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 4 Dec 2021 11:43:00 +0100 Subject: [PATCH 2/2] Change the logic so we can delete and create table if they exists or not. --- database/migrations/0002-add_settings.ts | 2 +- .../migrations/0003-login_server_tables.ts | 20 +++++++++---------- database/migrations/0004-login_server_data.ts | 14 +------------ 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/database/migrations/0002-add_settings.ts b/database/migrations/0002-add_settings.ts index d33daf601..5c1b4fbe7 100644 --- a/database/migrations/0002-add_settings.ts +++ b/database/migrations/0002-add_settings.ts @@ -25,5 +25,5 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { // write downgrade logic as parameter of queryFn - await queryFn(`DROP TABLE \`user_setting\`;`) + await queryFn(`DROP TABLE IF EXISTS \`user_setting\`;`) } diff --git a/database/migrations/0003-login_server_tables.ts b/database/migrations/0003-login_server_tables.ts index fed2bc88a..d3d720c97 100644 --- a/database/migrations/0003-login_server_tables.ts +++ b/database/migrations/0003-login_server_tables.ts @@ -143,14 +143,14 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { // write downgrade logic as parameter of queryFn - await queryFn(`DROP TABLE \`login_app_access_tokens\`;`) - await queryFn(`DROP TABLE \`login_elopage_buys\`;`) - await queryFn(`DROP TABLE \`login_email_opt_in_types\`;`) - await queryFn(`DROP TABLE \`login_email_opt_in\`;`) - await queryFn(`DROP TABLE \`login_groups\`;`) - await queryFn(`DROP TABLE \`login_pending_tasks\`;`) - await queryFn(`DROP TABLE \`login_roles\`;`) - await queryFn(`DROP TABLE \`login_user_backups\`;`) - await queryFn(`DROP TABLE \`login_user_roles\`;`) - await queryFn(`DROP TABLE \`login_users\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_app_access_tokens\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_elopage_buys\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_email_opt_in_types\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_email_opt_in\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_groups\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_pending_tasks\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_roles\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_user_backups\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_user_roles\`;`) + await queryFn(`DROP TABLE IF EXISTS \`login_users\`;`) } diff --git a/database/migrations/0004-login_server_data.ts b/database/migrations/0004-login_server_data.ts index ada5f96ea..8afd743a8 100644 --- a/database/migrations/0004-login_server_data.ts +++ b/database/migrations/0004-login_server_data.ts @@ -62,16 +62,4 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis `) } -export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { - // write downgrade logic as parameter of queryFn - await queryFn(`DELETE FROM \`login_app_access_tokens\`;`) - await queryFn(`DELETE FROM \`login_elopage_buys\`;`) - await queryFn(`DELETE FROM \`login_email_opt_in_types\`;`) - await queryFn(`DELETE FROM \`login_email_opt_in\`;`) - await queryFn(`DELETE FROM \`login_groups\`;`) - await queryFn(`DELETE FROM \`login_pending_tasks\`;`) - await queryFn(`DELETE FROM \`login_roles\`;`) - await queryFn(`DELETE FROM \`login_user_backups\`;`) - await queryFn(`DELETE FROM \`login_user_roles\`;`) - await queryFn(`DELETE FROM \`login_users\`;`) -} +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) {}