From 944625e78711cec48228f21caca1c5556f57134f Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 14:52:25 +0100 Subject: [PATCH 01/11] drop empty tables without an entity model (12) --- .../migrations/0013-drop_unused_tables.ts | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 database/migrations/0013-drop_unused_tables.ts diff --git a/database/migrations/0013-drop_unused_tables.ts b/database/migrations/0013-drop_unused_tables.ts new file mode 100644 index 000000000..bb90db39f --- /dev/null +++ b/database/migrations/0013-drop_unused_tables.ts @@ -0,0 +1,142 @@ +/* MIGRATION TO DROP UNUSED TABLES + * + * This migration removes all tables without data and entity definition. + * Base for evaluation are the production data from 27.01.2022 which had 40 tables present + * The migration reduces the amount of tables to 28 + */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`DROP TABLE \`login_app_access_tokens\`;`) + await queryFn(`DROP TABLE \`pending_transactions\`;`) + await queryFn(`DROP TABLE \`roles\`;`) + await queryFn(`DROP TABLE \`state_created\`;`) + await queryFn(`DROP TABLE \`state_groups\`;`) + await queryFn(`DROP TABLE \`state_group_addresses\`;`) + await queryFn(`DROP TABLE \`state_group_relationships\`;`) + await queryFn(`DROP TABLE \`state_relationship_types\`;`) + await queryFn(`DROP TABLE \`state_user_roles\`;`) + await queryFn(`DROP TABLE \`transaction_group_addaddress\`;`) + await queryFn(`DROP TABLE \`transaction_group_allowtrades\`;`) + await queryFn(`DROP TABLE \`transaction_group_creates\`;`) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + 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, + \`created\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + \`updated\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (\`id\`), + UNIQUE KEY \`access_code\` (\`access_code\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + `) + await queryFn(` + CREATE TABLE \`pending_transactions\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`transactionID\` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL, + \`service\` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, + \`method\` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, + \`h_server_id\` int(11) NOT NULL, + \`timeout\` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (\`id\`), + UNIQUE KEY \`transactionID\` (\`transactionID\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`roles\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`title\` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_created\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`transaction_id\` int(10) unsigned NOT NULL, + \`month\` tinyint(3) unsigned NOT NULL, + \`year\` smallint(5) unsigned NOT NULL, + \`state_user_id\` int(10) unsigned NOT NULL, + \`created\` datetime NOT NULL, + \`short_ident_hash\` int(10) unsigned NOT NULL, + PRIMARY KEY (\`id\`), + KEY \`short_ident_hash\` (\`short_ident_hash\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_groups\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`index_id\` varbinary(64) NOT NULL, + \`name\` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + \`root_public_key\` binary(32) NOT NULL, + \`user_count\` smallint(5) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_group_addresses\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`group_id\` int(10) unsigned NOT NULL, + \`public_key\` binary(32) NOT NULL, + \`address_type_id\` int(10) unsigned NOT NULL, + PRIMARY KEY (\`id\`), + UNIQUE KEY \`public_key\` (\`public_key\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_group_relationships\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`group1_id\` int(10) unsigned NOT NULL, + \`group2_id\` int(10) unsigned NOT NULL, + \`state_relationship_id\` int(10) unsigned NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_relationship_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL, + \`text\` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`state_user_roles\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`state_user_id\` int(11) NOT NULL, + \`role_id\` int(11) NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`transaction_group_addaddress\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`transaction_id\` int(10) unsigned NOT NULL, + \`address_type_id\` int(10) unsigned NOT NULL, + \`remove_from_group\` tinyint(1) DEFAULT 0, + \`public_key\` binary(32) NOT NULL, + \`state_user_id\` int(10) unsigned NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`transaction_group_allowtrades\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`transaction_id\` int(10) unsigned NOT NULL, + \`remote_group_id\` varbinary(64) NOT NULL, + \`allow\` tinyint(4) NOT NULL DEFAULT 0, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + await queryFn(` + CREATE TABLE \`transaction_group_creates\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`transaction_id\` int(10) unsigned NOT NULL, + \`group_public_key\` binary(32) NOT NULL, + \`group_id\` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, + \`name\` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) +} From d2fa23c1a2e7b954898eb8866cd075aef10ffe49 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 16:42:38 +0100 Subject: [PATCH 02/11] remove unused tables with some static data --- .../0014-drop_unused_tables_with_data.ts | 349 ++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 database/migrations/0014-drop_unused_tables_with_data.ts diff --git a/database/migrations/0014-drop_unused_tables_with_data.ts b/database/migrations/0014-drop_unused_tables_with_data.ts new file mode 100644 index 000000000..18e7639de --- /dev/null +++ b/database/migrations/0014-drop_unused_tables_with_data.ts @@ -0,0 +1,349 @@ +/* MIGRATION TO DROP UNUSED TABLES + * + * This migration removes all tables with static or unused data and entity definition. + * Base for evaluation are the production data from 27.01.2022 which had 28 tables present + * The migration reduces the amount of tables to 16 + */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`DROP TABLE \`address_types\`;`) + await queryFn(`DROP TABLE \`admin_errors\`;`) + await queryFn(`DROP TABLE \`blockchain_types\`;`) + await queryFn(`DROP TABLE \`community_profiles\`;`) + await queryFn(`DROP TABLE \`login_email_opt_in_types\`;`) + await queryFn(`DROP TABLE \`login_groups\`;`) + await queryFn(`DROP TABLE \`login_roles\`;`) + await queryFn(`DROP TABLE \`login_user_roles\`;`) + await queryFn(`DROP TABLE \`operators\`;`) + await queryFn(`DROP TABLE \`operator_types\`;`) + await queryFn(`DROP TABLE \`state_errors\`;`) + await queryFn(`DROP TABLE \`transaction_types\`;`) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + CREATE TABLE \`address_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, + \`text\` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`address_types\` VALUES + (1,'user main','user main address'); + `) + + await queryFn(` + CREATE TABLE \`admin_errors\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`state_user_id\` int(11) NOT NULL, + \`controller\` varchar(255) NOT NULL, + \`action\` varchar(255) NOT NULL, + \`state\` varchar(255) NOT NULL, + \`msg\` varchar(255) NOT NULL, + \`details\` varchar(255) DEFAULT NULL, + \`created\` datetime NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=155 DEFAULT CHARSET=utf8mb4; + `) + // NOTE: This data is no longer generated + await queryFn(` + INSERT INTO \`admin_errors\` VALUES + (54,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-11-04 17:57:07'), + (55,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-11-04 17:57:16'), + (56,193,'StateBalancesController','overview','error','server response status code isn't 200','403','2020-11-24 12:44:31'), + (57,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-12-31 19:17:52'), + (58,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-12-31 19:18:04'), + (59,44,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-12 20:58:45'), + (60,44,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-12 21:02:02'), + (61,44,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-12 21:02:04'), + (62,44,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-12 21:02:19'), + (63,20,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-13 22:32:59'), + (64,20,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-14 23:54:19'), + (65,161,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-27 10:29:09'), + (66,161,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-27 10:29:11'), + (67,161,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-27 10:29:23'), + (68,20,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-02-03 00:27:36'), + (69,685,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-02-06 11:48:09'), + (70,685,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-02-06 11:53:14'), + (71,685,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-02-06 11:53:20'), + (72,502,'TransactionCreations','createMulti','error','json exception','System exception: cannot unlock mutex','2021-03-24 21:22:14'), + (73,502,'TransactionCreations','createMulti','error','json exception','System exception: cannot unlock mutex','2021-03-24 21:23:38'), + (74,259,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-02 15:07:07'), + (75,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 20:31:50'), + (76,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 20:31:57'), + (77,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 20:32:23'), + (78,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 20:32:57'), + (79,199,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 21:43:13'), + (80,199,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 21:43:47'), + (81,199,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 21:44:45'), + (82,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 22:57:10'), + (83,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-14 22:57:18'), + (84,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:50:53'), + (85,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:51:27'), + (86,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:51:32'), + (87,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:51:54'), + (88,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:52:29'), + (89,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:53:33'), + (90,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-21 12:53:37'), + (91,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-23 12:27:57'), + (92,1162,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-23 12:28:02'), + (93,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 18:59:08'), + (94,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 18:59:16'), + (95,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 18:59:27'), + (96,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 19:00:51'), + (97,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 19:01:18'), + (98,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 19:04:22'), + (99,900,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 19:04:39'), + (100,1087,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-27 19:43:18'), + (101,240,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-28 22:00:05'), + (102,240,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-28 22:00:35'), + (103,240,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-28 22:00:37'), + (104,240,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-28 22:00:44'), + (105,90,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-29 14:05:59'), + (106,90,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-29 14:06:07'), + (107,90,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-29 14:06:15'), + (108,90,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-04-29 14:07:13'), + (109,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-01 10:18:03'), + (110,20,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-08 00:25:20'), + (111,84,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-08 22:34:27'), + (112,84,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-08 22:35:47'), + (113,776,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-12 10:24:55'), + (114,776,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-13 13:47:07'), + (115,1339,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-07-13 08:54:30'), + (116,1339,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-07-13 08:54:30'), + (117,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:46:40'), + (118,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:05'), + (119,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:05'), + (120,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:20'), + (121,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:21'), + (122,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:21'), + (123,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:22'), + (124,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:22'), + (125,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:36'), + (126,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), + (127,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), + (128,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), + (129,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:46'), + (130,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:46'), + (131,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:48:47'), + (132,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:48:52'), + (133,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:48:52'), + (134,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:24'), + (135,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:26'), + (136,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:49:26'), + (137,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:58'), + (138,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:50:00'), + (139,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:50:00'), + (140,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:50:57'), + (141,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:51:01'), + (142,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:51:02'), + (143,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:51:10'), + (144,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:51:10'), + (145,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:52:39'), + (146,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:52:44'), + (147,82,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:54:25'), + (148,284,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:54:35'), + (149,1439,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-09-16 15:44:16'), + (150,1439,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-09-16 15:44:27'), + (151,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-09-22 11:03:10'), + (152,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-09-22 11:16:33'), + (153,82,'StateBalancesController','overview','error','server response status code isn't 200','403','2021-11-23 16:03:57'), + (154,82,'StateBalancesController','overview','error','server response status code isn't 200','403','2021-11-23 16:04:10'); + `) + + await queryFn(` + CREATE TABLE \`blockchain_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, + \`text\` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + \`symbol\` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`blockchain_types\` VALUES + (1,'mysql','use mysql db as blockchain, work only with single community-server',NULL), + (2,'hedera','use hedera for transactions','HBAR'); + `) + + await queryFn(` + CREATE TABLE \`community_profiles\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`state_user_id\` int(10) unsigned NOT NULL, + \`profile_img\` longblob DEFAULT NULL, + \`profile_desc\` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (\`id\`), + KEY \`state_user_id\` (\`state_user_id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: The data was removed due to large binary images in the database. If this data is needed please get it from the backup file. + + await queryFn(` + CREATE TABLE \`login_email_opt_in_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(255) NOT NULL, + \`description\` varchar(255) NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`login_email_opt_in_types\` VALUES + (1,'register','Email Verification Code for register from new User.'), + (2,'resetPassword','Email Verification Code for reset Password (only if passphrase is known)'); + `) + + await queryFn(` + CREATE TABLE \`login_groups\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`alias\` varchar(190) NOT NULL, + \`name\` varchar(255) NOT NULL, + \`url\` varchar(255) NOT NULL, + \`host\` varchar(255) DEFAULT '/', + \`home\` varchar(255) DEFAULT '/', + \`description\` text DEFAULT NULL, + PRIMARY KEY (\`id\`), + UNIQUE KEY \`alias\` (\`alias\`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`login_groups\` VALUES + (1,'gdd1','gdd1','gdd1.gradido.com','','/','gdd1 group'); + `) + + await queryFn(` + CREATE TABLE \`login_roles\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(255) NOT NULL, + \`description\` varchar(255) NOT NULL, + \`flags\` bigint(20) NOT NULL DEFAULT 0, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`login_roles\` VALUES + (1,'admin','darf einfach alles',0); + `) + + await queryFn(` + CREATE TABLE \`login_user_roles\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`user_id\` int(11) NOT NULL, + \`role_id\` int(11) NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4; + `) + // NOTE: This data is not used - therefore we remove it. + // This data is aligned to the `server_users` table except the entry 4, + // this one is missing in the other table + await queryFn(` + INSERT INTO \`login_user_roles\` VALUES + (1,28,1), + (2,37,1), + (3,50,1), + (4,44,1), + (5,872,1); + `) + + await queryFn(` + CREATE TABLE \`operators\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`username\` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + \`user_pubkey\` binary(32) NOT NULL, + \`data_base64\` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + \`modified\` datetime NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: This data seems not to have any use + await queryFn(` + INSERT INTO \`operators\` VALUES + (5,'einhornimmond',0x78DCFAA8341B3A39B3C5502B4D9ACDBC4B181A10CC0D94187498E0A0C74288E0,'i99a5/wWGmQN4AF8ilUXhHJVV/3At82f6CNNh3ewdVyTTAqugcdeG53DEMNUxCTFwk7KIg==','2019-09-17 13:08:22'); + `) + + await queryFn(` + CREATE TABLE \`operator_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL, + \`text\` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`operator_types\` VALUES + (1,'hedera','Hedera Keys for sign and pay hedera transactions'), + (2,'gradido-user','default gradido user keys'), + (3,'gradido-group','default gradido group root keys, other address are derived'); + `) + + await queryFn(` + CREATE TABLE \`state_errors\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`state_user_id\` int(10) unsigned NOT NULL, + \`transaction_type_id\` int(10) unsigned NOT NULL, + \`created\` datetime NOT NULL, + \`message_json\` text COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=161 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: This data is no longer generated + await queryFn(` + INSERT INTO \`state_errors\` VALUES + (9,11,1,'2020-08-07 10:40:03','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (17,528,2,'2021-02-10 08:04:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"sender 0 hasn't enough GDD"}]}'), + (115,82,1,'2021-09-01 11:14:25','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (119,82,1,'2021-09-06 18:55:55','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (138,502,1,'2021-10-31 00:00:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (139,502,1,'2021-11-02 19:50:36','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (140,502,1,'2021-11-07 13:32:11','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (141,502,1,'2021-11-16 22:04:59','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (142,502,1,'2021-11-21 23:47:14','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (143,502,1,'2021-11-22 00:14:40','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (144,502,1,'2021-11-25 21:40:15','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (145,502,1,'2021-11-25 22:45:06','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (146,502,1,'2021-11-29 12:52:12','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (147,502,1,'2021-12-04 01:56:10','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (148,502,1,'2021-12-06 13:12:08','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (149,502,1,'2021-12-06 13:18:20','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (150,502,1,'2021-12-16 21:06:34','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (151,502,1,'2021-12-20 23:11:44','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (152,502,1,'2022-01-04 13:19:31','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (153,502,1,'2022-01-04 13:54:33','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (154,502,1,'2022-01-04 13:55:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (155,502,1,'2022-01-04 14:02:35','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (156,502,1,'2022-01-04 14:50:49','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (157,502,1,'2022-01-04 14:51:41','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (158,502,1,'2022-01-19 00:32:46','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (159,502,1,'2022-01-19 00:52:42','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), + (160,502,1,'2022-01-25 08:31:57','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'); + `) + + await queryFn(` + CREATE TABLE \`transaction_types\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`name\` varchar(90) COLLATE utf8mb4_unicode_ci NOT NULL, + \`text\` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) + // NOTE: Static data might be needed as enum definitions + await queryFn(` + INSERT INTO \`transaction_types\` VALUES + (1,'creation','create new gradidos for member and also for group (in development)'), + (2,'transfer','send gradidos from one member to another, also cross group transfer'), + (3,'group create','create a new group, trigger creation of new hedera topic and new blockchain on node server'), + (4,'group add member','add user to a group or move if he was already in a group'), + (5,'group remove member','remove user from group, maybe he was moved elsewhere'), + (6,'hedera topic create','create new topic on hedera'), + (7,'hedera topic send message','send consensus message over hedera topic'), + (8,'hedera account create','create new account on hedera for holding some founds with unencrypted keys'), + (9,'decay start','signalize the starting point for decay calculation, allowed only once per chain'); + `) +} From d6a7d8ddebf487bcd11339ac7b380452bb590a0e Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 16:52:16 +0100 Subject: [PATCH 03/11] adjust required database version --- backend/src/server/createServer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 1912d0b9e..f231f6729 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -28,7 +28,7 @@ import { elopageWebhook } from '../webhook/elopage' // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; -const DB_VERSION = '0012-login_user_backups_unify_wordlist' +const DB_VERSION = '0014-drop_unused_tables_with_data' const createServer = async (context: any = serverContext): Promise => { // open mysql connection From f7d1df61610037a99fd25bf098707c0c56e676ff Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 17:44:54 +0100 Subject: [PATCH 04/11] updated comment --- database/migrations/0014-drop_unused_tables_with_data.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/database/migrations/0014-drop_unused_tables_with_data.ts b/database/migrations/0014-drop_unused_tables_with_data.ts index 18e7639de..f33b15ddc 100644 --- a/database/migrations/0014-drop_unused_tables_with_data.ts +++ b/database/migrations/0014-drop_unused_tables_with_data.ts @@ -242,6 +242,8 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom // NOTE: This data is not used - therefore we remove it. // This data is aligned to the `server_users` table except the entry 4, // this one is missing in the other table + // and after checking with administration, we figured out that + // this is a data fragement no longer needed. await queryFn(` INSERT INTO \`login_user_roles\` VALUES (1,28,1), From 84a8eff8a63b53178d2a1adbb9053bfa508695a9 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 20:17:25 +0100 Subject: [PATCH 05/11] syntax error in sql --- .../0014-drop_unused_tables_with_data.ts | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/database/migrations/0014-drop_unused_tables_with_data.ts b/database/migrations/0014-drop_unused_tables_with_data.ts index f33b15ddc..ac4cb24fe 100644 --- a/database/migrations/0014-drop_unused_tables_with_data.ts +++ b/database/migrations/0014-drop_unused_tables_with_data.ts @@ -53,7 +53,7 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom INSERT INTO \`admin_errors\` VALUES (54,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-11-04 17:57:07'), (55,272,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-11-04 17:57:16'), - (56,193,'StateBalancesController','overview','error','server response status code isn't 200','403','2020-11-24 12:44:31'), + (56,193,'StateBalancesController','overview','error','server response status code isn\\'t 200','403','2020-11-24 12:44:31'), (57,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-12-31 19:17:52'), (58,79,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2020-12-31 19:18:04'), (59,44,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-01-12 20:58:45'), @@ -114,44 +114,44 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom (114,776,'TransactionSendCoins','create','success','(Leere Message)','(Leere Details)','2021-05-13 13:47:07'), (115,1339,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-07-13 08:54:30'), (116,1339,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-07-13 08:54:30'), - (117,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:46:40'), - (118,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:05'), - (119,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:05'), - (120,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:20'), - (121,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:21'), - (122,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:21'), - (123,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:22'), - (124,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:22'), - (125,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:36'), - (126,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), - (127,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), - (128,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:43'), - (129,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:47:46'), - (130,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:47:46'), - (131,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:48:47'), - (132,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:48:52'), - (133,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:48:52'), - (134,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:24'), - (135,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:26'), - (136,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:49:26'), - (137,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:49:58'), - (138,751,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:50:00'), - (139,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:50:00'), - (140,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:50:57'), - (141,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:51:01'), - (142,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:51:02'), - (143,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-08-12 14:51:10'), - (144,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:51:10'), - (145,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:52:39'), - (146,943,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:52:44'), - (147,82,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:54:25'), - (148,284,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-08-12 14:54:35'), + (117,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:46:40'), + (118,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:05'), + (119,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:05'), + (120,751,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:20'), + (121,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:21'), + (122,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:21'), + (123,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:22'), + (124,751,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:22'), + (125,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:36'), + (126,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:43'), + (127,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:43'), + (128,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:43'), + (129,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:46'), + (130,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:47:46'), + (131,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:48:47'), + (132,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:48:52'), + (133,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:48:52'), + (134,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:49:24'), + (135,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:49:26'), + (136,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:49:26'), + (137,751,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:49:58'), + (138,751,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:50:00'), + (139,751,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:50:00'), + (140,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:50:57'), + (141,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:51:01'), + (142,943,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:51:02'), + (143,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-08-12 14:51:10'), + (144,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:51:10'), + (145,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:52:39'), + (146,943,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:52:44'), + (147,82,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:54:25'), + (148,284,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-08-12 14:54:35'), (149,1439,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-09-16 15:44:16'), (150,1439,'StateBalancesController','overview','success','(Leere Message)','(Leere Details)','2021-09-16 15:44:27'), - (151,11,'StateBalancesController','overview','error','server response status code isn't 200','500','2021-09-22 11:03:10'), - (152,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn't 200','500','2021-09-22 11:16:33'), - (153,82,'StateBalancesController','overview','error','server response status code isn't 200','403','2021-11-23 16:03:57'), - (154,82,'StateBalancesController','overview','error','server response status code isn't 200','403','2021-11-23 16:04:10'); + (151,11,'StateBalancesController','overview','error','server response status code isn\\'t 200','500','2021-09-22 11:03:10'), + (152,11,'StateBalancesController','ajaxGdtOverview','error','server response status code isn\\'t 200','500','2021-09-22 11:16:33'), + (153,82,'StateBalancesController','overview','error','server response status code isn\\'t 200','403','2021-11-23 16:03:57'), + (154,82,'StateBalancesController','overview','error','server response status code isn\\'t 200','403','2021-11-23 16:04:10'); `) await queryFn(` From 5dc7f14549088b0b492fddfe6d463ecf011e7a6a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 28 Jan 2022 21:22:18 +0100 Subject: [PATCH 06/11] another syntax fix due to escaping --- database/migrations/0014-drop_unused_tables_with_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/0014-drop_unused_tables_with_data.ts b/database/migrations/0014-drop_unused_tables_with_data.ts index ac4cb24fe..4f8c47eb7 100644 --- a/database/migrations/0014-drop_unused_tables_with_data.ts +++ b/database/migrations/0014-drop_unused_tables_with_data.ts @@ -299,7 +299,7 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom await queryFn(` INSERT INTO \`state_errors\` VALUES (9,11,1,'2020-08-07 10:40:03','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), - (17,528,2,'2021-02-10 08:04:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"sender 0 hasn't enough GDD"}]}'), + (17,528,2,'2021-02-10 08:04:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"sender 0 hasn\\'t enough GDD"}]}'), (115,82,1,'2021-09-01 11:14:25','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), (119,82,1,'2021-09-06 18:55:55','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), (138,502,1,'2021-10-31 00:00:32','{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}'), From 81351102a9cc8b48f9bb9b7f2dcc83492fd0c6a6 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 29 Jan 2022 03:53:21 +0100 Subject: [PATCH 07/11] migration to rename login_pending_tasks_admin to admin_pending_creations also remove old table login_pending_tasks --- .../AdminPendingCreation.ts | 25 +++++++++++++ database/entity/AdminPendingCreation.ts | 1 + database/entity/LoginPendingTasksAdmin.ts | 1 - database/entity/index.ts | 4 +-- .../0015-admin_pending_creations.ts | 35 +++++++++++++++++++ 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 database/entity/0015-admin_pending_creations/AdminPendingCreation.ts create mode 100644 database/entity/AdminPendingCreation.ts delete mode 100644 database/entity/LoginPendingTasksAdmin.ts create mode 100644 database/migrations/0015-admin_pending_creations.ts diff --git a/database/entity/0015-admin_pending_creations/AdminPendingCreation.ts b/database/entity/0015-admin_pending_creations/AdminPendingCreation.ts new file mode 100644 index 000000000..1c3027867 --- /dev/null +++ b/database/entity/0015-admin_pending_creations/AdminPendingCreation.ts @@ -0,0 +1,25 @@ +import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm' + +@Entity('admin_pending_creations') +export class AdminPendingCreation extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ unsigned: true, nullable: false }) + userId: number + + @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) + created: Date + + @Column({ type: 'datetime', nullable: false }) + date: Date + + @Column({ length: 256, nullable: true, default: null }) + memo: string + + @Column({ type: 'bigint', nullable: false }) + amount: BigInt + + @Column() + moderator: number +} diff --git a/database/entity/AdminPendingCreation.ts b/database/entity/AdminPendingCreation.ts new file mode 100644 index 000000000..03eeab883 --- /dev/null +++ b/database/entity/AdminPendingCreation.ts @@ -0,0 +1 @@ +export { AdminPendingCreation } from './0015-admin_pending_creations/AdminPendingCreation' diff --git a/database/entity/LoginPendingTasksAdmin.ts b/database/entity/LoginPendingTasksAdmin.ts deleted file mode 100644 index f766b74dd..000000000 --- a/database/entity/LoginPendingTasksAdmin.ts +++ /dev/null @@ -1 +0,0 @@ -export { LoginPendingTasksAdmin } from './0005-admin_tables/LoginPendingTasksAdmin' diff --git a/database/entity/index.ts b/database/entity/index.ts index 9d3b10ea7..331e797df 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -13,9 +13,10 @@ import { TransactionSendCoin } from './TransactionSendCoin' import { User } from './User' import { UserSetting } from './UserSetting' import { UserTransaction } from './UserTransaction' -import { LoginPendingTasksAdmin } from './LoginPendingTasksAdmin' +import { AdminPendingCreation } from './AdminPendingCreation' export const entities = [ + AdminPendingCreation, Balance, LoginElopageBuys, LoginEmailOptIn, @@ -31,5 +32,4 @@ export const entities = [ User, UserSetting, UserTransaction, - LoginPendingTasksAdmin, ] diff --git a/database/migrations/0015-admin_pending_creations.ts b/database/migrations/0015-admin_pending_creations.ts new file mode 100644 index 000000000..d15bd84a7 --- /dev/null +++ b/database/migrations/0015-admin_pending_creations.ts @@ -0,0 +1,35 @@ +/* MIGRATION TO PROPERLY STORE PENDING CREATIONS + * + * There were two tables for the pending tasks, + * since the login_server used some crypto to store its + * tasks there. It was easier to create a new table. + * This migration drops the old unused table and renames + * the new table to properly describe what it does + */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + // drop duplicate table, it was unused + await queryFn('DROP TABLE `login_pending_tasks`;') + + // rename the new pending creations table to a proper table name + await queryFn('RENAME TABLE `login_pending_tasks_admin` TO `admin_pending_creations`;') +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn('RENAME TABLE `admin_pending_creations` TO `login_pending_tasks_admin`;') + await queryFn(` + CREATE TABLE \`login_pending_tasks\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`user_id\` int(10) unsigned DEFAULT 0, + \`request\` varbinary(2048) NOT NULL, + \`created\` datetime NOT NULL, + \`finished\` datetime DEFAULT '2000-01-01 00:00:00', + \`result_json\` text DEFAULT NULL, + \`param_json\` text DEFAULT NULL, + \`task_type_id\` int(10) unsigned NOT NULL, + \`child_pending_task_id\` int(10) unsigned DEFAULT 0, + \`parent_pending_task_id\` int(10) unsigned DEFAULT 0, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB AUTO_INCREMENT=795 DEFAULT CHARSET=utf8mb4 + `) +} From 71551153c4f74bf5ffd8799a9df41998a4beef74 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 29 Jan 2022 03:54:33 +0100 Subject: [PATCH 08/11] backend changes to rename `login_pending_tasks_admin` table to `admin_pending_creations` --- backend/src/graphql/resolver/AdminResolver.ts | 58 +++++++++---------- .../repository/AdminPendingCreation.ts | 5 ++ .../repository/LoginPendingTasksAdmin.ts | 5 -- 3 files changed, 34 insertions(+), 34 deletions(-) create mode 100644 backend/src/typeorm/repository/AdminPendingCreation.ts delete mode 100644 backend/src/typeorm/repository/LoginPendingTasksAdmin.ts diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 45bee0d77..e4ea773c7 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -10,7 +10,7 @@ import { UpdatePendingCreation } from '../model/UpdatePendingCreation' import { RIGHTS } from '../../auth/RIGHTS' import { TransactionRepository } from '../../typeorm/repository/Transaction' import { TransactionCreationRepository } from '../../typeorm/repository/TransactionCreation' -import { LoginPendingTasksAdminRepository } from '../../typeorm/repository/LoginPendingTasksAdmin' +import { AdminPendingCreationRepository } from '../../typeorm/repository/AdminPendingCreation' import { UserRepository } from '../../typeorm/repository/User' import CreatePendingCreationArgs from '../arg/CreatePendingCreationArgs' import UpdatePendingCreationArgs from '../arg/UpdatePendingCreationArgs' @@ -23,7 +23,7 @@ import { UserTransactionRepository } from '../../typeorm/repository/UserTransact import { BalanceRepository } from '../../typeorm/repository/Balance' import { calculateDecay } from '../../util/decay' import { LoginUserRepository } from '../../typeorm/repository/LoginUser' -import { LoginPendingTasksAdmin } from '@entity/LoginPendingTasksAdmin' +import { AdminPendingCreation } from '@entity/AdminPendingCreation' @Resolver() export class AdminResolver { @@ -68,16 +68,16 @@ export class AdminResolver { const creations = await getUserCreations(user.id) const creationDateObj = new Date(creationDate) if (isCreationValid(creations, amount, creationDateObj)) { - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const loginPendingTaskAdmin = loginPendingTasksAdminRepository.create() - loginPendingTaskAdmin.userId = user.id - loginPendingTaskAdmin.amount = BigInt(amount * 10000) - loginPendingTaskAdmin.created = new Date() - loginPendingTaskAdmin.date = creationDateObj - loginPendingTaskAdmin.memo = memo - loginPendingTaskAdmin.moderator = moderator + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const adminPendingCreation = adminPendingCreationRepository.create() + adminPendingCreation.userId = user.id + adminPendingCreation.amount = BigInt(amount * 10000) + adminPendingCreation.created = new Date() + adminPendingCreation.date = creationDateObj + adminPendingCreation.memo = memo + adminPendingCreation.moderator = moderator - await loginPendingTasksAdminRepository.save(loginPendingTaskAdmin) + await adminPendingCreationRepository.save(adminPendingCreation) } return getUserCreations(user.id) } @@ -116,8 +116,8 @@ export class AdminResolver { const userRepository = getCustomRepository(UserRepository) const user = await userRepository.findByEmail(email) - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const pendingCreationToUpdate = await loginPendingTasksAdminRepository.findOneOrFail({ id }) + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const pendingCreationToUpdate = await adminPendingCreationRepository.findOneOrFail({ id }) if (pendingCreationToUpdate.userId !== user.id) { throw new Error('user of the pending creation and send user does not correspond') @@ -137,7 +137,7 @@ export class AdminResolver { pendingCreationToUpdate.date = new Date(creationDate) pendingCreationToUpdate.moderator = moderator - await loginPendingTasksAdminRepository.save(pendingCreationToUpdate) + await adminPendingCreationRepository.save(pendingCreationToUpdate) const result = new UpdatePendingCreation() result.amount = parseInt(amount.toString()) result.memo = pendingCreationToUpdate.memo @@ -151,8 +151,8 @@ export class AdminResolver { @Authorized([RIGHTS.SEARCH_PENDING_CREATION]) @Query(() => [PendingCreation]) async getPendingCreations(): Promise { - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const pendingCreations = await loginPendingTasksAdminRepository.find() + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const pendingCreations = await adminPendingCreationRepository.find() const pendingCreationsPromise = await Promise.all( pendingCreations.map(async (pendingCreation) => { @@ -179,17 +179,17 @@ export class AdminResolver { @Authorized([RIGHTS.DELETE_PENDING_CREATION]) @Mutation(() => Boolean) async deletePendingCreation(@Arg('id') id: number): Promise { - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const entity = await loginPendingTasksAdminRepository.findOneOrFail(id) - const res = await loginPendingTasksAdminRepository.delete(entity) + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const entity = await adminPendingCreationRepository.findOneOrFail(id) + const res = await adminPendingCreationRepository.delete(entity) return !!res } @Authorized([RIGHTS.CONFIRM_PENDING_CREATION]) @Mutation(() => Boolean) async confirmPendingCreation(@Arg('id') id: number, @Ctx() context: any): Promise { - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const pendingCreation = await loginPendingTasksAdminRepository.findOneOrFail(id) + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const pendingCreation = await adminPendingCreationRepository.findOneOrFail(id) const userRepository = getCustomRepository(UserRepository) const moderatorUser = await userRepository.findByPubkeyHex(context.pubKey) @@ -251,7 +251,7 @@ export class AdminResolver { userBalance.modified = receivedCallDate userBalance.recordDate = receivedCallDate await balanceRepository.save(userBalance) - await loginPendingTasksAdminRepository.delete(pendingCreation) + await adminPendingCreationRepository.delete(pendingCreation) return true } @@ -280,12 +280,12 @@ async function getUserCreations(id: number): Promise { .orderBy('target_month', 'ASC') .getRawMany() - const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) - const pendingAmountsQuery = await loginPendingTasksAdminRepository - .createQueryBuilder('login_pending_tasks_admin') - .select('MONTH(login_pending_tasks_admin.date)', 'target_month') - .addSelect('SUM(login_pending_tasks_admin.amount)', 'sum') - .where('login_pending_tasks_admin.userId = :id', { id }) + const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) + const pendingAmountsQuery = await adminPendingCreationRepository + .createQueryBuilder('admin_pending_creations') + .select('MONTH(admin_pending_creations.date)', 'target_month') + .addSelect('SUM(admin_pending_creations.amount)', 'sum') + .where('admin_pending_creations.userId = :id', { id }) .andWhere({ date: Raw((alias) => `${alias} >= :date and ${alias} < :endDate`, { date: dateBeforeLastMonth, @@ -336,7 +336,7 @@ async function getUserCreations(id: number): Promise { ] } -function updateCreations(creations: number[], pendingCreation: LoginPendingTasksAdmin): number[] { +function updateCreations(creations: number[], pendingCreation: AdminPendingCreation): number[] { const dateMonth = moment().format('YYYY-MM') const dateLastMonth = moment().subtract(1, 'month').format('YYYY-MM') const dateBeforeLastMonth = moment().subtract(2, 'month').format('YYYY-MM') diff --git a/backend/src/typeorm/repository/AdminPendingCreation.ts b/backend/src/typeorm/repository/AdminPendingCreation.ts new file mode 100644 index 000000000..fe218ac56 --- /dev/null +++ b/backend/src/typeorm/repository/AdminPendingCreation.ts @@ -0,0 +1,5 @@ +import { EntityRepository, Repository } from 'typeorm' +import { AdminPendingCreation } from '@entity/AdminPendingCreation' + +@EntityRepository(AdminPendingCreation) +export class AdminPendingCreationRepository extends Repository {} diff --git a/backend/src/typeorm/repository/LoginPendingTasksAdmin.ts b/backend/src/typeorm/repository/LoginPendingTasksAdmin.ts deleted file mode 100644 index 21c2b7a33..000000000 --- a/backend/src/typeorm/repository/LoginPendingTasksAdmin.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { EntityRepository, Repository } from '@dbTools/typeorm' -import { LoginPendingTasksAdmin } from '@entity/LoginPendingTasksAdmin' - -@EntityRepository(LoginPendingTasksAdmin) -export class LoginPendingTasksAdminRepository extends Repository {} From a1548805ac948fbc303ec7d257e838567a0f60ff Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 29 Jan 2022 03:58:01 +0100 Subject: [PATCH 09/11] adjust required database version --- backend/src/config/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index c775eac8e..6407a65f6 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -4,7 +4,7 @@ import dotenv from 'dotenv' dotenv.config() const constants = { - DB_VERSION: '0014-drop_unused_tables_with_data', + DB_VERSION: '0015-admin_pending_creations', } const server = { From 28e6522052994f3952f2fafb7475bb40fa55b611 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 2 Feb 2022 16:40:08 +0100 Subject: [PATCH 10/11] redo the remove repository change for AdminResolver and AdminPendingCreations since the Filename changed and git could not resolve this --- backend/src/graphql/resolver/AdminResolver.ts | 31 +++++++------------ .../repository/AdminPendingCreation.ts | 5 --- 2 files changed, 12 insertions(+), 24 deletions(-) delete mode 100644 backend/src/typeorm/repository/AdminPendingCreation.ts diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index e4ea773c7..e9c5c6c69 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -10,7 +10,6 @@ import { UpdatePendingCreation } from '../model/UpdatePendingCreation' import { RIGHTS } from '../../auth/RIGHTS' import { TransactionRepository } from '../../typeorm/repository/Transaction' import { TransactionCreationRepository } from '../../typeorm/repository/TransactionCreation' -import { AdminPendingCreationRepository } from '../../typeorm/repository/AdminPendingCreation' import { UserRepository } from '../../typeorm/repository/User' import CreatePendingCreationArgs from '../arg/CreatePendingCreationArgs' import UpdatePendingCreationArgs from '../arg/UpdatePendingCreationArgs' @@ -68,8 +67,7 @@ export class AdminResolver { const creations = await getUserCreations(user.id) const creationDateObj = new Date(creationDate) if (isCreationValid(creations, amount, creationDateObj)) { - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const adminPendingCreation = adminPendingCreationRepository.create() + const adminPendingCreation = AdminPendingCreation.create() adminPendingCreation.userId = user.id adminPendingCreation.amount = BigInt(amount * 10000) adminPendingCreation.created = new Date() @@ -77,7 +75,7 @@ export class AdminResolver { adminPendingCreation.memo = memo adminPendingCreation.moderator = moderator - await adminPendingCreationRepository.save(adminPendingCreation) + await AdminPendingCreation.save(adminPendingCreation) } return getUserCreations(user.id) } @@ -116,8 +114,7 @@ export class AdminResolver { const userRepository = getCustomRepository(UserRepository) const user = await userRepository.findByEmail(email) - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const pendingCreationToUpdate = await adminPendingCreationRepository.findOneOrFail({ id }) + const pendingCreationToUpdate = await AdminPendingCreation.findOneOrFail({ id }) if (pendingCreationToUpdate.userId !== user.id) { throw new Error('user of the pending creation and send user does not correspond') @@ -137,7 +134,7 @@ export class AdminResolver { pendingCreationToUpdate.date = new Date(creationDate) pendingCreationToUpdate.moderator = moderator - await adminPendingCreationRepository.save(pendingCreationToUpdate) + await AdminPendingCreation.save(pendingCreationToUpdate) const result = new UpdatePendingCreation() result.amount = parseInt(amount.toString()) result.memo = pendingCreationToUpdate.memo @@ -151,8 +148,7 @@ export class AdminResolver { @Authorized([RIGHTS.SEARCH_PENDING_CREATION]) @Query(() => [PendingCreation]) async getPendingCreations(): Promise { - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const pendingCreations = await adminPendingCreationRepository.find() + const pendingCreations = await AdminPendingCreation.find() const pendingCreationsPromise = await Promise.all( pendingCreations.map(async (pendingCreation) => { @@ -179,18 +175,15 @@ export class AdminResolver { @Authorized([RIGHTS.DELETE_PENDING_CREATION]) @Mutation(() => Boolean) async deletePendingCreation(@Arg('id') id: number): Promise { - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const entity = await adminPendingCreationRepository.findOneOrFail(id) - const res = await adminPendingCreationRepository.delete(entity) + const entity = await AdminPendingCreation.findOneOrFail(id) + const res = await AdminPendingCreation.delete(entity) return !!res } @Authorized([RIGHTS.CONFIRM_PENDING_CREATION]) @Mutation(() => Boolean) async confirmPendingCreation(@Arg('id') id: number, @Ctx() context: any): Promise { - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const pendingCreation = await adminPendingCreationRepository.findOneOrFail(id) - + const pendingCreation = await AdminPendingCreation.findOneOrFail(id) const userRepository = getCustomRepository(UserRepository) const moderatorUser = await userRepository.findByPubkeyHex(context.pubKey) if (moderatorUser.id === pendingCreation.userId) @@ -251,7 +244,7 @@ export class AdminResolver { userBalance.modified = receivedCallDate userBalance.recordDate = receivedCallDate await balanceRepository.save(userBalance) - await adminPendingCreationRepository.delete(pendingCreation) + await AdminPendingCreation.delete(pendingCreation) return true } @@ -280,9 +273,9 @@ async function getUserCreations(id: number): Promise { .orderBy('target_month', 'ASC') .getRawMany() - const adminPendingCreationRepository = getCustomRepository(AdminPendingCreationRepository) - const pendingAmountsQuery = await adminPendingCreationRepository - .createQueryBuilder('admin_pending_creations') + const pendingAmountsQuery = await AdminPendingCreation.createQueryBuilder( + 'admin_pending_creations', + ) .select('MONTH(admin_pending_creations.date)', 'target_month') .addSelect('SUM(admin_pending_creations.amount)', 'sum') .where('admin_pending_creations.userId = :id', { id }) diff --git a/backend/src/typeorm/repository/AdminPendingCreation.ts b/backend/src/typeorm/repository/AdminPendingCreation.ts deleted file mode 100644 index fe218ac56..000000000 --- a/backend/src/typeorm/repository/AdminPendingCreation.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { EntityRepository, Repository } from 'typeorm' -import { AdminPendingCreation } from '@entity/AdminPendingCreation' - -@EntityRepository(AdminPendingCreation) -export class AdminPendingCreationRepository extends Repository {} From 107d92eef6f9ac75569900c15cd35256641aed3e Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 2 Feb 2022 17:42:20 +0100 Subject: [PATCH 11/11] fix seed --- database/entity/LoginUserRoles.ts | 1 - database/entity/index.ts | 2 -- .../src/factories/login-user-roles.factory.ts | 16 ---------------- database/src/seeds/helpers/user-helpers.ts | 5 ----- 4 files changed, 24 deletions(-) delete mode 100644 database/entity/LoginUserRoles.ts delete mode 100644 database/src/factories/login-user-roles.factory.ts diff --git a/database/entity/LoginUserRoles.ts b/database/entity/LoginUserRoles.ts deleted file mode 100644 index 1efa81caf..000000000 --- a/database/entity/LoginUserRoles.ts +++ /dev/null @@ -1 +0,0 @@ -export { LoginUserRoles } from './0003-login_server_tables/LoginUserRoles' diff --git a/database/entity/index.ts b/database/entity/index.ts index 9d3b10ea7..8ecc447cc 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -2,7 +2,6 @@ import { Balance } from './Balance' import { LoginElopageBuys } from './LoginElopageBuys' import { LoginEmailOptIn } from './LoginEmailOptIn' import { LoginUser } from './LoginUser' -import { LoginUserRoles } from './LoginUserRoles' import { LoginUserBackup } from './LoginUserBackup' import { Migration } from './Migration' import { ServerUser } from './ServerUser' @@ -20,7 +19,6 @@ export const entities = [ LoginElopageBuys, LoginEmailOptIn, LoginUser, - LoginUserRoles, LoginUserBackup, Migration, ServerUser, diff --git a/database/src/factories/login-user-roles.factory.ts b/database/src/factories/login-user-roles.factory.ts deleted file mode 100644 index 5b7ba9c9d..000000000 --- a/database/src/factories/login-user-roles.factory.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Faker from 'faker' -import { define } from 'typeorm-seeding' -import { LoginUserRoles } from '../../entity/LoginUserRoles' -import { LoginUserRolesContext } from '../interface/UserContext' - -define(LoginUserRoles, (faker: typeof Faker, context?: LoginUserRolesContext) => { - if (!context) context = {} - if (!context.userId) throw new Error('LoginUserRoles: No userId present!') - if (!context.roleId) throw new Error('LoginUserRoles: No roleId present!') - - const userRoles = new LoginUserRoles() - userRoles.userId = context.userId - userRoles.roleId = context.roleId - - return userRoles -}) diff --git a/database/src/seeds/helpers/user-helpers.ts b/database/src/seeds/helpers/user-helpers.ts index e1e33a94b..85a6cd88f 100644 --- a/database/src/seeds/helpers/user-helpers.ts +++ b/database/src/seeds/helpers/user-helpers.ts @@ -17,7 +17,6 @@ import { User } from '../../../entity/User' import { LoginUser } from '../../../entity/LoginUser' import { LoginUserBackup } from '../../../entity/LoginUserBackup' import { ServerUser } from '../../../entity/ServerUser' -import { LoginUserRoles } from '../../../entity/LoginUserRoles' import { Balance } from '../../../entity/Balance' import { Transaction } from '../../../entity/Transaction' import { TransactionSignature } from '../../../entity/TransactionSignature' @@ -33,10 +32,6 @@ export const userSeeder = async (factory: Factory, userData: UserInterface): Pro if (userData.isAdmin) { await factory(ServerUser)(createServerUserContext(userData)).create() - - // This is crazy: we just need the relation to roleId but no role at all - // It works with LoginRoles empty!! - await factory(LoginUserRoles)(createLoginUserRolesContext(loginUser)).create() } if (userData.addBalance) {