summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc/reset-db.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/misc/reset-db.ts')
-rw-r--r--packages/backend/src/misc/reset-db.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/backend/src/misc/reset-db.ts b/packages/backend/src/misc/reset-db.ts
new file mode 100644
index 0000000000..835cd2ba28
--- /dev/null
+++ b/packages/backend/src/misc/reset-db.ts
@@ -0,0 +1,28 @@
+import type { DataSource } from 'typeorm';
+
+export async function resetDb(db: DataSource) {
+ const reset = async () => {
+ const tables = await db.query(`SELECT relname AS "table"
+ FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
+ WHERE nspname NOT IN ('pg_catalog', 'information_schema')
+ AND C.relkind = 'r'
+ AND nspname !~ '^pg_toast';`);
+ for (const table of tables) {
+ await db.query(`DELETE FROM "${table.table}" CASCADE`);
+ }
+ };
+
+ for (let i = 1; i <= 3; i++) {
+ try {
+ await reset();
+ } catch (e) {
+ if (i === 3) {
+ throw e;
+ } else {
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ continue;
+ }
+ }
+ break;
+ }
+}