From 5d35e619372cb9de0246d22dbb38fe3034513098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Mon, 23 Sep 2024 20:54:09 +0200 Subject: [PATCH] export to a temporary directory instead --- packages/cli/package.json | 1 + packages/cli/src/commands/export/all.ts | 13 +++++++++---- pnpm-lock.yaml | 13 ++++--------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 9d108c30d5..bf2d983749 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -167,6 +167,7 @@ "sshpk": "1.17.0", "swagger-ui-express": "5.0.0", "syslog-client": "1.1.1", + "tmp-promise": "3.0.3", "typedi": "catalog:", "uuid": "catalog:", "validator": "13.7.0", diff --git a/packages/cli/src/commands/export/all.ts b/packages/cli/src/commands/export/all.ts index 69b06fb040..f7aeed6d16 100644 --- a/packages/cli/src/commands/export/all.ts +++ b/packages/cli/src/commands/export/all.ts @@ -3,6 +3,7 @@ import * as assert from 'assert/strict'; import fs from 'fs'; import { join } from 'path'; import Container from 'typedi'; +import { dir as tmpDir } from 'tmp-promise'; import { jsonColumnType } from '@/databases/entities/abstract-entity'; import { BaseCommand } from '../base-command'; @@ -34,8 +35,8 @@ export class ExportAllCommand extends BaseCommand { columns: v.columns, })); - const backupPath = '/tmp/backup'; - await fs.promises.mkdir(backupPath, { recursive: true }); + const { path: tempBackupDir } = await tmpDir({}); + await fs.promises.mkdir(tempBackupDir, { recursive: true }); for (const { name: tableName, columns } of tables) { const totalRowsCount = await connection @@ -43,7 +44,7 @@ export class ExportAllCommand extends BaseCommand { .then((rows: Array<{ count: number }>) => rows[0].count); if (totalRowsCount === 0) continue; - const stream = fs.createWriteStream(join(backupPath, `${tableName}.jsonl`)); + const stream = fs.createWriteStream(join(tempBackupDir, `${tableName}.jsonl`)); let cursor = 0; const batchSize = 10; @@ -87,10 +88,14 @@ export class ExportAllCommand extends BaseCommand { assert.ok(lastExecutedMigration, 'should have been run by db.ts'); await fs.promises.writeFile( - join(backupPath, 'lastMigration'), + join(tempBackupDir, 'lastMigration'), lastExecutedMigration.name, 'utf8', ); + + console.log(`data exported to ${tempBackupDir}`); + + // TODO: clean up temp dir } async catch(error: Error) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c1a5be995..35c503c308 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -929,6 +929,9 @@ importers: syslog-client: specifier: 1.1.1 version: 1.1.1 + tmp-promise: + specifier: 3.0.3 + version: 3.0.3 typedi: specifier: 'catalog:' version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) @@ -11600,10 +11603,6 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} - tmp@0.2.3: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} @@ -25348,16 +25347,12 @@ snapshots: tmp-promise@3.0.3: dependencies: - tmp: 0.2.1 + tmp: 0.2.3 tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.1: - dependencies: - rimraf: 3.0.2 - tmp@0.2.3: {} tmpl@1.0.5: {}