@heronlabs/terminal-cli 2.2.5 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -10
- package/bin/src/application/cli/cli-module.d.ts +5 -0
- package/bin/src/application/cli/cli-module.d.ts.map +1 -0
- package/bin/src/application/cli/cli-module.js +1 -0
- package/bin/src/application/cli/cli-module.js.map +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.d.ts +9 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.js +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts +9 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.js +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.js.map +1 -0
- package/bin/src/application/cli/commands/version/version-command.d.ts +8 -0
- package/bin/src/application/cli/commands/version/version-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/version/version-command.js +1 -0
- package/bin/src/application/cli/commands/version/version-command.js.map +1 -0
- package/bin/src/core/core-module.d.ts +3 -0
- package/bin/src/core/core-module.d.ts.map +1 -0
- package/bin/src/core/core-module.js +1 -0
- package/bin/src/core/core-module.js.map +1 -0
- package/bin/src/core/interfaces/backup-service.d.ts +21 -0
- package/bin/src/core/interfaces/backup-service.d.ts.map +1 -0
- package/bin/src/core/interfaces/backup-service.js +1 -0
- package/bin/src/core/interfaces/backup-service.js.map +1 -0
- package/bin/src/core/interfaces/rollup-service.d.ts +18 -0
- package/bin/src/core/interfaces/rollup-service.d.ts.map +1 -0
- package/bin/src/core/interfaces/rollup-service.js +1 -0
- package/bin/src/core/interfaces/rollup-service.js.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts +22 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.js +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.js.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts +22 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.js +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.js.map +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.d.ts +24 -0
- package/bin/src/core/services/mysql/mysql-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.js +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.js.map +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.d.ts +24 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.js +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.js.map +1 -0
- package/bin/src/core/services/psql/psql-backup-service.d.ts +24 -0
- package/bin/src/core/services/psql/psql-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/psql/psql-backup-service.js +1 -0
- package/bin/src/core/services/psql/psql-backup-service.js.map +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.d.ts +24 -0
- package/bin/src/core/services/psql/psql-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.js +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.js.map +1 -0
- package/bin/src/core/services/script-loader-service.d.ts +4 -0
- package/bin/src/core/services/script-loader-service.d.ts.map +1 -0
- package/bin/src/core/services/script-loader-service.js +1 -0
- package/bin/src/core/services/script-loader-service.js.map +1 -0
- package/bin/src/infrastructure/environment/environment-module.d.ts +5 -0
- package/bin/src/infrastructure/environment/environment-module.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/environment-module.js +2 -1
- package/bin/src/infrastructure/environment/environment-module.js.map +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.d.ts +24 -0
- package/bin/src/infrastructure/environment/services/database-url-service.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.js +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.js.map +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.d.ts +26 -0
- package/bin/src/infrastructure/environment/services/environment-service.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.js +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.js.map +1 -0
- package/bin/src/infrastructure/log/log-module.d.ts +3 -0
- package/bin/src/infrastructure/log/log-module.d.ts.map +1 -0
- package/bin/src/infrastructure/log/log-module.js +1 -0
- package/bin/src/infrastructure/log/log-module.js.map +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts +24 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts.map +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.js +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.js.map +1 -0
- package/bin/src/infrastructure/storage/storage-module.d.ts +5 -0
- package/bin/src/infrastructure/storage/storage-module.d.ts.map +1 -0
- package/bin/src/infrastructure/storage/storage-module.js +1 -0
- package/bin/src/infrastructure/storage/storage-module.js.map +1 -0
- package/bin/src/main.d.ts +3 -0
- package/bin/src/main.d.ts.map +1 -0
- package/bin/src/main.js +1 -0
- package/bin/src/main.js.map +1 -0
- package/bin/tsconfig.bin.tsbuildinfo +1 -0
- package/package.json +8 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-backup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/mysql/mysql-backup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,0GAAoG;AACpG,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,8BAAa;IAsC9B;IACF;IACE;IACF;IAxCT,KAAK,CAAC,IAAI,CAAC,QAAiB;QACpC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEpD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;QAEzD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;gBACxD,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,QAAQ;oBACnB,WAAW,EAAE,cAAc;iBAC5B;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,iDAAiD,cAAc,EAAE,CAClE,CAAC;YAEF,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EAChB,kBAAsC,EACpC,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QALb,WAAM,GAAN,MAAM,CAAQ;QAChB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AA7CY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAuCkB,eAAM;QACI,wCAAkB;QAClB,qCAAgB;QACtB,2CAAmB;GAzCzC,kBAAkB,CA6C9B","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {EnvironmentService} from '../../../infrastructure/environment/services/environment-service';\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {BackupService} from '../../interfaces/backup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class MysqlBackupService extends BackupService {\n protected async dump(filename?: string) {\n const db = await this.environmentService.database();\n\n if (!db.ok) {\n return {ok: false as const, error: db.error};\n }\n\n const {host, port, name, user, password} = db.connection;\n\n const backupFileName = this.resolveBackupFileName(filename, name, 'sql.gz');\n\n try {\n execSync(this.scriptLoader.load('mysql', 'mysql-backup'), {\n env: {\n ...process.env,\n DB_USER: user,\n DB_HOST: host,\n DB_PORT: port,\n DB_NAME: name,\n MYSQL_PWD: password,\n BACKUP_FILE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n this.logger.log(\n `Backup MySQL database successfully! Filename: ${backupFileName}`,\n );\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('mariadb-dump failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n private readonly environmentService: EnvironmentService,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Logger } from '@nestjs/common';
|
|
2
|
+
import { EnvironmentService } from '../../../infrastructure/environment/services/environment-service';
|
|
3
|
+
import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
|
|
4
|
+
import { RollupService } from '../../interfaces/rollup-service';
|
|
5
|
+
import { ScriptLoaderService } from '../script-loader-service';
|
|
6
|
+
export declare class MysqlRollupService extends RollupService {
|
|
7
|
+
protected readonly logger: Logger;
|
|
8
|
+
private readonly environmentService;
|
|
9
|
+
protected readonly s3StorageService: S3StorageService;
|
|
10
|
+
private readonly scriptLoader;
|
|
11
|
+
protected restore(backupFileName: string): Promise<{
|
|
12
|
+
ok: false;
|
|
13
|
+
error: Error;
|
|
14
|
+
data?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
ok: true;
|
|
17
|
+
data: {
|
|
18
|
+
backupFileName: string;
|
|
19
|
+
};
|
|
20
|
+
error?: undefined;
|
|
21
|
+
}>;
|
|
22
|
+
constructor(logger: Logger, environmentService: EnvironmentService, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mysql-rollup-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-rollup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/mysql/mysql-rollup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,kBAAmB,SAAQ,aAAa;IAgCjD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cAlCf,OAAO,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;gBA+BzB,MAAM,EAAE,MAAM,EAChB,kBAAkB,EAAE,kBAAkB,EACpC,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-rollup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/mysql/mysql-rollup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,0GAAoG;AACpG,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,8BAAa;IAgC9B;IACF;IACE;IACF;IAlCT,KAAK,CAAC,OAAO,CAAC,cAAsB;QAC5C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEpD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;QAEzD,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;gBACxD,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,QAAQ;oBACnB,WAAW,EAAE,cAAc;iBAC5B;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EAChB,kBAAsC,EACpC,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QALb,WAAM,GAAN,MAAM,CAAQ;QAChB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AAvCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAiCkB,eAAM;QACI,wCAAkB;QAClB,qCAAgB;QACtB,2CAAmB;GAnCzC,kBAAkB,CAuC9B","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {EnvironmentService} from '../../../infrastructure/environment/services/environment-service';\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {RollupService} from '../../interfaces/rollup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class MysqlRollupService extends RollupService {\n protected async restore(backupFileName: string) {\n const db = await this.environmentService.database();\n\n if (!db.ok) {\n return {ok: false as const, error: db.error};\n }\n\n const {host, port, name, user, password} = db.connection;\n\n try {\n execSync(this.scriptLoader.load('mysql', 'mysql-rollup'), {\n env: {\n ...process.env,\n DB_USER: user,\n DB_HOST: host,\n DB_PORT: port,\n DB_NAME: name,\n MYSQL_PWD: password,\n BACKUP_FILE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('mariadb restore failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n private readonly environmentService: EnvironmentService,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Logger } from '@nestjs/common';
|
|
2
|
+
import { EnvironmentService } from '../../../infrastructure/environment/services/environment-service';
|
|
3
|
+
import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
|
|
4
|
+
import { BackupService } from '../../interfaces/backup-service';
|
|
5
|
+
import { ScriptLoaderService } from '../script-loader-service';
|
|
6
|
+
export declare class PsqlBackupService extends BackupService {
|
|
7
|
+
protected readonly logger: Logger;
|
|
8
|
+
private readonly environmentService;
|
|
9
|
+
protected readonly s3StorageService: S3StorageService;
|
|
10
|
+
private readonly scriptLoader;
|
|
11
|
+
protected dump(filename?: string): Promise<{
|
|
12
|
+
ok: false;
|
|
13
|
+
error: Error;
|
|
14
|
+
data?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
ok: true;
|
|
17
|
+
data: {
|
|
18
|
+
backupFileName: string;
|
|
19
|
+
};
|
|
20
|
+
error?: undefined;
|
|
21
|
+
}>;
|
|
22
|
+
constructor(logger: Logger, environmentService: EnvironmentService, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=psql-backup-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psql-backup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/psql/psql-backup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,iBAAkB,SAAQ,aAAa;IAsChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cAxCf,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;;;;;;;;gBAqCjB,MAAM,EAAE,MAAM,EAChB,kBAAkB,EAAE,kBAAkB,EACpC,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psql-backup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/psql/psql-backup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,0GAAoG;AACpG,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,8BAAa;IAsC7B;IACF;IACE;IACF;IAxCT,KAAK,CAAC,IAAI,CAAC,QAAiB;QACpC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEpD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;QAEzD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;gBACtD,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,QAAQ;oBACpB,WAAW,EAAE,cAAc;iBAC5B;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,sDAAsD,cAAc,EAAE,CACvE,CAAC;YAEF,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EAChB,kBAAsC,EACpC,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QALb,WAAM,GAAN,MAAM,CAAQ;QAChB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AA7CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAuCkB,eAAM;QACI,wCAAkB;QAClB,qCAAgB;QACtB,2CAAmB;GAzCzC,iBAAiB,CA6C7B","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {EnvironmentService} from '../../../infrastructure/environment/services/environment-service';\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {BackupService} from '../../interfaces/backup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class PsqlBackupService extends BackupService {\n protected async dump(filename?: string) {\n const db = await this.environmentService.database();\n\n if (!db.ok) {\n return {ok: false as const, error: db.error};\n }\n\n const {host, port, name, user, password} = db.connection;\n\n const backupFileName = this.resolveBackupFileName(filename, name, 'sql.gz');\n\n try {\n execSync(this.scriptLoader.load('psql', 'psql-backup'), {\n env: {\n ...process.env,\n PGHOST: host,\n PGPORT: port,\n PGDATABASE: name,\n PGUSER: user,\n PGPASSWORD: password,\n BACKUP_FILE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n this.logger.log(\n `Backup PostgreSQL database successfully! Filename: ${backupFileName}`,\n );\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('pg_dump failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n private readonly environmentService: EnvironmentService,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Logger } from '@nestjs/common';
|
|
2
|
+
import { EnvironmentService } from '../../../infrastructure/environment/services/environment-service';
|
|
3
|
+
import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
|
|
4
|
+
import { RollupService } from '../../interfaces/rollup-service';
|
|
5
|
+
import { ScriptLoaderService } from '../script-loader-service';
|
|
6
|
+
export declare class PsqlRollupService extends RollupService {
|
|
7
|
+
protected readonly logger: Logger;
|
|
8
|
+
private readonly environmentService;
|
|
9
|
+
protected readonly s3StorageService: S3StorageService;
|
|
10
|
+
private readonly scriptLoader;
|
|
11
|
+
protected restore(backupFileName: string): Promise<{
|
|
12
|
+
ok: false;
|
|
13
|
+
error: Error;
|
|
14
|
+
data?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
ok: true;
|
|
17
|
+
data: {
|
|
18
|
+
backupFileName: string;
|
|
19
|
+
};
|
|
20
|
+
error?: undefined;
|
|
21
|
+
}>;
|
|
22
|
+
constructor(logger: Logger, environmentService: EnvironmentService, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=psql-rollup-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psql-rollup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/psql/psql-rollup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,iBAAkB,SAAQ,aAAa;IAgChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cAlCf,OAAO,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;gBA+BzB,MAAM,EAAE,MAAM,EAChB,kBAAkB,EAAE,kBAAkB,EACpC,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psql-rollup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/psql/psql-rollup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,0GAAoG;AACpG,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,8BAAa;IAgC7B;IACF;IACE;IACF;IAlCT,KAAK,CAAC,OAAO,CAAC,cAAsB;QAC5C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEpD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;QAEzD,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;gBACtD,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,QAAQ;oBACpB,WAAW,EAAE,cAAc;iBAC5B;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EAChB,kBAAsC,EACpC,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QALb,WAAM,GAAN,MAAM,CAAQ;QAChB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AAvCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAiCkB,eAAM;QACI,wCAAkB;QAClB,qCAAgB;QACtB,2CAAmB;GAnCzC,iBAAiB,CAuC7B","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {EnvironmentService} from '../../../infrastructure/environment/services/environment-service';\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {RollupService} from '../../interfaces/rollup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class PsqlRollupService extends RollupService {\n protected async restore(backupFileName: string) {\n const db = await this.environmentService.database();\n\n if (!db.ok) {\n return {ok: false as const, error: db.error};\n }\n\n const {host, port, name, user, password} = db.connection;\n\n try {\n execSync(this.scriptLoader.load('psql', 'psql-rollup'), {\n env: {\n ...process.env,\n PGHOST: host,\n PGPORT: port,\n PGDATABASE: name,\n PGUSER: user,\n PGPASSWORD: password,\n BACKUP_FILE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('psql restore failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n private readonly environmentService: EnvironmentService,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-loader-service.d.ts","sourceRoot":"","sources":["../../../../src/core/services/script-loader-service.ts"],"names":[],"mappings":"AAIA,qBACa,mBAAmB;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;CAG/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-loader-service.js","sourceRoot":"","sources":["../../../../src/core/services/script-loader-service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA0C;AAC1C,2BAAgC;AAChC,+BAA0B;AAGnB,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACvB,IAAI,CAAC,GAAW,EAAE,IAAY;QACnC,OAAO,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;CACF,CAAA;AAJY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CAI/B","sourcesContent":["import {Injectable} from '@nestjs/common';\nimport {readFileSync} from 'fs';\nimport {join} from 'path';\n\n@Injectable()\nexport class ScriptLoaderService {\n public load(dir: string, name: string): string {\n return readFileSync(join(__dirname, dir, `${name}.sh`), 'utf8');\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-module.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/environment/environment-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAMtD,eAAO,MAAM,iBAAiB,EAAE,cAW/B,CAAC;AAEF,qBACa,iBAAiB;CAAG"}
|
|
@@ -18,7 +18,7 @@ exports.environmentModule = {
|
|
|
18
18
|
database_url_service_1.DatabaseUrlService,
|
|
19
19
|
{
|
|
20
20
|
provide: env_ssm_1.ConfigService,
|
|
21
|
-
useValue: env_ssm_1.
|
|
21
|
+
useValue: env_ssm_1.AwsFactory.make().getConfigService(),
|
|
22
22
|
},
|
|
23
23
|
],
|
|
24
24
|
exports: [environment_service_1.EnvironmentService],
|
|
@@ -30,3 +30,4 @@ exports.EnvironmentModule = EnvironmentModule;
|
|
|
30
30
|
exports.EnvironmentModule = EnvironmentModule = __decorate([
|
|
31
31
|
(0, common_1.Module)(exports.environmentModule)
|
|
32
32
|
], EnvironmentModule);
|
|
33
|
+
//# sourceMappingURL=environment-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-module.js","sourceRoot":"","sources":["../../../../src/infrastructure/environment/environment-module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gDAA6D;AAC7D,2CAAsD;AACtD,2CAA4C;AAE5C,0EAAmE;AACnE,wEAAkE;AAErD,QAAA,iBAAiB,GAAmB;IAC/C,SAAS,EAAE;QACT,wCAAkB;QAClB,yCAAkB;QAClB;YACE,OAAO,EAAE,uBAAa;YACtB,QAAQ,EAAE,oBAAU,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE;SAC/C;KACF;IACD,OAAO,EAAE,CAAC,wCAAkB,CAAC;IAC7B,OAAO,EAAE,CAAC,qBAAY,CAAC;CACxB,CAAC;AAGK,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,yBAAiB,CAAC;GACb,iBAAiB,CAAG","sourcesContent":["import {AwsFactory, ConfigService} from '@heronlabs/env-ssm';\nimport {Module, ModuleMetadata} from '@nestjs/common';\nimport {ConfigModule} from '@nestjs/config';\n\nimport {DatabaseUrlService} from './services/database-url-service';\nimport {EnvironmentService} from './services/environment-service';\n\nexport const environmentModule: ModuleMetadata = {\n providers: [\n EnvironmentService,\n DatabaseUrlService,\n {\n provide: ConfigService,\n useValue: AwsFactory.make().getConfigService(),\n },\n ],\n exports: [EnvironmentService],\n imports: [ConfigModule],\n};\n\n@Module(environmentModule)\nexport class EnvironmentModule {}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConfigService } from '@heronlabs/env-ssm';
|
|
2
|
+
export declare class DatabaseUrlService {
|
|
3
|
+
private readonly ssmConfigService;
|
|
4
|
+
constructor(ssmConfigService: ConfigService);
|
|
5
|
+
private splitFirst;
|
|
6
|
+
private splitLast;
|
|
7
|
+
private stripNameSuffix;
|
|
8
|
+
parse(): Promise<{
|
|
9
|
+
ok: false;
|
|
10
|
+
error: Error;
|
|
11
|
+
connection?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
ok: true;
|
|
14
|
+
connection: {
|
|
15
|
+
host: string;
|
|
16
|
+
port: string;
|
|
17
|
+
name: string;
|
|
18
|
+
user: string;
|
|
19
|
+
password: string;
|
|
20
|
+
};
|
|
21
|
+
error?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=database-url-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-url-service.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/environment/services/database-url-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGjD,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,aAAa;IAE5D,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,eAAe;IAOjB,KAAK;;;;;;;;;;;;;;;CAkCZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-url-service.js","sourceRoot":"","sources":["../../../../../src/infrastructure/environment/services/database-url-service.ts"],"names":[],"mappings":"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","sourcesContent":["import {ConfigService} from '@heronlabs/env-ssm';\nimport {Injectable} from '@nestjs/common';\n\n@Injectable()\nexport class DatabaseUrlService {\n constructor(private readonly ssmConfigService: ConfigService) {}\n\n private splitFirst(\n value: string,\n delimiter: string,\n ): [string, string | undefined] {\n const index = value.indexOf(delimiter);\n\n if (index === -1) {\n return [value, undefined];\n }\n\n const head = value.slice(0, index);\n const tail = value.slice(index + delimiter.length);\n\n return [head, tail];\n }\n\n private splitLast(value: string, delimiter: string): [string, string] {\n const index = value.lastIndexOf(delimiter);\n\n if (index === -1) {\n return ['', value];\n }\n\n const head = value.slice(0, index);\n const tail = value.slice(index + delimiter.length);\n\n return [head, tail];\n }\n\n private stripNameSuffix(name: string): string {\n const [withoutFragment] = this.splitFirst(name, '#');\n const [withoutQuery] = this.splitFirst(withoutFragment, '?');\n\n return withoutQuery;\n }\n\n async parse() {\n try {\n const databaseUrl = await this.ssmConfigService.getOrThrow('DB_URL');\n\n const [, rest = ''] = this.splitFirst(databaseUrl, '://');\n\n const [userinfo, remainder] = this.splitLast(rest, '@');\n const [hostport, rawName = ''] = this.splitFirst(remainder, '/');\n const [user, password = ''] = this.splitFirst(userinfo, ':');\n const [host, port = ''] = this.splitFirst(hostport, ':');\n\n const name = this.stripNameSuffix(rawName);\n\n const connection = {host, port, name, user, password};\n\n const missing = (['host', 'name', 'user'] as const).filter(\n field => connection[field] === '',\n );\n\n if (missing.length > 0) {\n return {\n ok: false as const,\n error: new Error(`Invalid DB_URL: missing ${missing.join(', ')}`),\n };\n }\n\n return {ok: true as const, connection};\n } catch (error) {\n return {\n ok: false as const,\n error: error instanceof Error ? error : new Error('Invalid DB_URL'),\n };\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { DatabaseUrlService } from './database-url-service';
|
|
3
|
+
export declare class EnvironmentService {
|
|
4
|
+
private readonly configService;
|
|
5
|
+
private readonly databaseUrlService;
|
|
6
|
+
database(): Promise<{
|
|
7
|
+
ok: false;
|
|
8
|
+
error: Error;
|
|
9
|
+
connection?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
ok: true;
|
|
12
|
+
connection: {
|
|
13
|
+
host: string;
|
|
14
|
+
port: string;
|
|
15
|
+
name: string;
|
|
16
|
+
user: string;
|
|
17
|
+
password: string;
|
|
18
|
+
};
|
|
19
|
+
error?: undefined;
|
|
20
|
+
}>;
|
|
21
|
+
get storage(): {
|
|
22
|
+
bucketName: string;
|
|
23
|
+
};
|
|
24
|
+
constructor(configService: ConfigService, databaseUrlService: DatabaseUrlService);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=environment-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-service.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/environment/services/environment-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAE1D,qBACa,kBAAkB;IAY3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAZrC,QAAQ;;;;;;;;;;;;;;;IAIR,IAAI,OAAO;;MAIV;gBAGkB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB;CAE1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-service.js","sourceRoot":"","sources":["../../../../../src/infrastructure/environment/services/environment-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA0C;AAC1C,2CAA6C;AAE7C,iEAA0D;AAGnD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAYV;IACA;IAZnB,QAAQ;QACN,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,OAAO;QACT,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAS,oBAAoB,CAAC;SACxE,CAAC;IACJ,CAAC;IAED,YACmB,aAA4B,EAC5B,kBAAsC;QADtC,kBAAa,GAAb,aAAa,CAAe;QAC5B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;CACL,CAAA;AAfY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAauB,sBAAa;QACR,yCAAkB;GAb9C,kBAAkB,CAe9B","sourcesContent":["import {Injectable} from '@nestjs/common';\nimport {ConfigService} from '@nestjs/config';\n\nimport {DatabaseUrlService} from './database-url-service';\n\n@Injectable()\nexport class EnvironmentService {\n database() {\n return this.databaseUrlService.parse();\n }\n\n get storage() {\n return {\n bucketName: this.configService.getOrThrow<string>('AWS_S3_BUCKET_NAME'),\n };\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly databaseUrlService: DatabaseUrlService,\n ) {}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-module.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/log/log-module.ts"],"names":[],"mappings":"AAOA,qBAEa,SAAS;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-module.js","sourceRoot":"","sources":["../../../../src/infrastructure/log/log-module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8D;AAC9D,6CAAuD;AAEvD,MAAM,SAAS,GAAmB;IAChC,OAAO,EAAE,CAAC,0BAAU,CAAC,OAAO,EAAE,CAAC;CAChC,CAAC;AAIK,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAFrB,IAAA,eAAM,EAAC,SAAS,CAAC;IACjB,IAAA,eAAM,GAAE;GACI,SAAS,CAAG","sourcesContent":["import {Global, Module, ModuleMetadata} from '@nestjs/common';\nimport {LoggerModule as PinoModule} from 'nestjs-pino';\n\nconst logModule: ModuleMetadata = {\n imports: [PinoModule.forRoot()],\n};\n\n@Module(logModule)\n@Global()\nexport class LogModule {}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
import { Logger } from '@nestjs/common';
|
|
3
|
+
import { EnvironmentService } from '../../environment/services/environment-service';
|
|
4
|
+
export declare class S3StorageService {
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private readonly environmentService;
|
|
7
|
+
private readonly s3;
|
|
8
|
+
upload(filePath: string, key?: string): Promise<{
|
|
9
|
+
ok: boolean;
|
|
10
|
+
error?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
error: Error;
|
|
14
|
+
}>;
|
|
15
|
+
download(key: string): Promise<{
|
|
16
|
+
ok: boolean;
|
|
17
|
+
error?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
ok: boolean;
|
|
20
|
+
error: Error;
|
|
21
|
+
}>;
|
|
22
|
+
constructor(logger: Logger, environmentService: EnvironmentService, s3: S3Client);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=s3-storage-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-storage-service.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/services/s3-storage-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gDAAgD,CAAC;AAElF,qBACa,gBAAgB;IAmDzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE;IApDR,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;;;;;;;IAyBrC,QAAQ,CAAC,GAAG,EAAE,MAAM;;;;;;;gBAyBd,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,EAAE,EAAE,QAAQ;CAEhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-storage-service.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/services/s3-storage-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAgF;AAChF,2CAAkD;AAClD,2BAA+C;AAE/C,wFAAkF;AAG3E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAmDR;IACA;IACA;IApDZ,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,GAAY;QAChD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,QAAQ,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU;gBAClD,GAAG,EAAE,GAAG,IAAI,QAAQ;gBACpB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,0BAA0B;aACxC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAEvC,OAAO,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YAC5B,CAAC;YAED,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,4BAA4B,CAAC,EAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU;gBAClD,GAAG,EAAE,GAAG;aACT,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAK,CAAC,oBAAoB,EAAE,CAAC;YAE1D,IAAA,kBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAE1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAE3C,OAAO,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YAC5B,CAAC;YAED,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,YACmB,MAAc,EACd,kBAAsC,EACtC,EAAY;QAFZ,WAAM,GAAN,MAAM,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,OAAE,GAAF,EAAE,CAAU;IAC5B,CAAC;CACL,CAAA;AAvDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAoDgB,eAAM;QACM,wCAAkB;QAClC,oBAAQ;GArDpB,gBAAgB,CAuD5B","sourcesContent":["import {GetObjectCommand, PutObjectCommand, S3Client} from '@aws-sdk/client-s3';\nimport {Injectable, Logger} from '@nestjs/common';\nimport {readFileSync, writeFileSync} from 'fs';\n\nimport {EnvironmentService} from '../../environment/services/environment-service';\n\n@Injectable()\nexport class S3StorageService {\n public async upload(filePath: string, key?: string) {\n try {\n const body = readFileSync(filePath);\n\n const command = new PutObjectCommand({\n Bucket: this.environmentService.storage.bucketName,\n Key: key ?? filePath,\n Body: body,\n ContentType: 'application/octet-stream',\n });\n\n await this.s3.send(command);\n\n this.logger.log('Uploaded file to S3');\n\n return {ok: true};\n } catch (error) {\n if (error instanceof Error) {\n return {ok: false, error};\n }\n\n return {ok: false, error: new Error('Error uploading file to S3')};\n }\n }\n\n public async download(key: string) {\n try {\n const command = new GetObjectCommand({\n Bucket: this.environmentService.storage.bucketName,\n Key: key,\n });\n\n const response = await this.s3.send(command);\n const bytes = await response.Body!.transformToByteArray();\n\n writeFileSync(key, bytes);\n\n this.logger.log('Downloaded file from S3');\n\n return {ok: true};\n } catch (error) {\n if (error instanceof Error) {\n return {ok: false, error};\n }\n\n return {ok: false, error: new Error('Error downloading file from S3')};\n }\n }\n\n constructor(\n private readonly logger: Logger,\n private readonly environmentService: EnvironmentService,\n private readonly s3: S3Client,\n ) {}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-module.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/storage-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAK9D,eAAO,MAAM,aAAa,EAAE,cAW3B,CAAC;AAEF,qBACa,aAAa;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-module.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/storage-module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAA4C;AAC5C,2CAA8D;AAE9D,0EAAoE;AACpE,sEAA+D;AAElD,QAAA,aAAa,GAAmB;IAC3C,OAAO,EAAE,CAAC,sCAAiB,CAAC;IAC5B,SAAS,EAAE;QACT,eAAM;QACN,qCAAgB;QAChB;YACE,OAAO,EAAE,oBAAQ;YACjB,QAAQ,EAAE,IAAI,oBAAQ,CAAC,EAAE,CAAC;SAC3B;KACF;IACD,OAAO,EAAE,CAAC,qCAAgB,CAAC;CAC5B,CAAC;AAGK,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,qBAAa,CAAC;GACT,aAAa,CAAG","sourcesContent":["import {S3Client} from '@aws-sdk/client-s3';\nimport {Logger, Module, ModuleMetadata} from '@nestjs/common';\n\nimport {EnvironmentModule} from '../environment/environment-module';\nimport {S3StorageService} from './services/s3-storage-service';\n\nexport const storageModule: ModuleMetadata = {\n imports: [EnvironmentModule],\n providers: [\n Logger,\n S3StorageService,\n {\n provide: S3Client,\n useValue: new S3Client({}),\n },\n ],\n exports: [S3StorageService],\n};\n\n@Module(storageModule)\nexport class StorageModule {}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,OAAO,kBAAkB,CAAC"}
|
package/bin/src/main.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;AACA,4BAA0B;AAE1B,mDAA8C;AAC9C,6CAAiD;AAEjD,6DAAuD;AAEvD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAC3B,MAAM,GAAG,GAAG,MAAM,+BAAc,CAAC,oBAAoB,CAAC,sBAAS,CAAC,CAAC;IAEjE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAU,CAAC,CAAC,CAAC;IAEnC,MAAM,+BAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,KAAK,SAAS,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\nimport 'reflect-metadata';\n\nimport {CommandFactory} from 'nest-commander';\nimport {Logger as PinoLogger} from 'nestjs-pino';\n\nimport {CliModule} from './application/cli/cli-module';\n\nconst bootstrap = async () => {\n const app = await CommandFactory.createWithoutRunning(CliModule);\n\n app.useLogger(app.get(PinoLogger));\n\n await CommandFactory.runApplication(app);\n};\n\nvoid bootstrap();\n"]}
|