@plutonhq/core-backend 0.1.14 → 0.1.16
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/dist/controllers/BackupController.d.ts +1 -0
- package/dist/controllers/BackupController.d.ts.map +1 -1
- package/dist/controllers/BackupController.js +1 -1
- package/dist/controllers/BackupController.js.map +1 -1
- package/dist/controllers/PlanController.d.ts +2 -0
- package/dist/controllers/PlanController.d.ts.map +1 -1
- package/dist/controllers/PlanController.js +1 -1
- package/dist/controllers/PlanController.js.map +1 -1
- package/dist/controllers/RestoreController.d.ts.map +1 -1
- package/dist/controllers/RestoreController.js +1 -1
- package/dist/controllers/RestoreController.js.map +1 -1
- package/dist/controllers/SettingsController.d.ts +2 -0
- package/dist/controllers/SettingsController.d.ts.map +1 -1
- package/dist/controllers/SettingsController.js +1 -1
- package/dist/controllers/SettingsController.js.map +1 -1
- package/dist/controllers/StorageController.d.ts.map +1 -1
- package/dist/controllers/StorageController.js +1 -1
- package/dist/controllers/StorageController.js.map +1 -1
- package/dist/controllers/UserController.d.ts +4 -0
- package/dist/controllers/UserController.d.ts.map +1 -1
- package/dist/controllers/UserController.js +1 -1
- package/dist/controllers/UserController.js.map +1 -1
- package/dist/createApp.d.ts.map +1 -1
- package/dist/createApp.js +1 -1
- package/dist/createApp.js.map +1 -1
- package/dist/db/index.d.ts +19 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/schema/backups.d.ts +77 -1
- package/dist/db/schema/backups.d.ts.map +1 -1
- package/dist/db/schema/backups.js +1 -1
- package/dist/db/schema/backups.js.map +1 -1
- package/dist/jobs/JobProcessor.d.ts.map +1 -1
- package/dist/jobs/JobProcessor.js +1 -1
- package/dist/jobs/JobProcessor.js.map +1 -1
- package/dist/jobs/tasks/ReplicationRetryTask.d.ts +10 -0
- package/dist/jobs/tasks/ReplicationRetryTask.d.ts.map +1 -0
- package/dist/jobs/tasks/ReplicationRetryTask.js +1 -0
- package/dist/jobs/tasks/ReplicationRetryTask.js.map +1 -0
- package/dist/managers/BaseBackupManager.d.ts +35 -3
- package/dist/managers/BaseBackupManager.d.ts.map +1 -1
- package/dist/managers/BaseBackupManager.js +1 -1
- package/dist/managers/BaseBackupManager.js.map +1 -1
- package/dist/managers/BaseSnapshotManager.d.ts +21 -4
- package/dist/managers/BaseSnapshotManager.d.ts.map +1 -1
- package/dist/managers/BaseSnapshotManager.js +1 -1
- package/dist/managers/BaseSnapshotManager.js.map +1 -1
- package/dist/managers/ProgressManager.d.ts +28 -0
- package/dist/managers/ProgressManager.d.ts.map +1 -1
- package/dist/managers/ProgressManager.js +1 -1
- package/dist/managers/ProgressManager.js.map +1 -1
- package/dist/managers/handlers/BackupHandler.d.ts +8 -0
- package/dist/managers/handlers/BackupHandler.d.ts.map +1 -1
- package/dist/managers/handlers/BackupHandler.js +1 -1
- package/dist/managers/handlers/BackupHandler.js.map +1 -1
- package/dist/managers/handlers/DownloadHandler.d.ts.map +1 -1
- package/dist/managers/handlers/DownloadHandler.js +1 -1
- package/dist/managers/handlers/DownloadHandler.js.map +1 -1
- package/dist/managers/handlers/ReplicationHandler.d.ts +34 -0
- package/dist/managers/handlers/ReplicationHandler.d.ts.map +1 -0
- package/dist/managers/handlers/ReplicationHandler.js +1 -0
- package/dist/managers/handlers/ReplicationHandler.js.map +1 -0
- package/dist/managers/handlers/ReplicationOrchestrator.d.ts +50 -0
- package/dist/managers/handlers/ReplicationOrchestrator.d.ts.map +1 -0
- package/dist/managers/handlers/ReplicationOrchestrator.js +1 -0
- package/dist/managers/handlers/ReplicationOrchestrator.js.map +1 -0
- package/dist/middlewares/versionMiddleware.d.ts.map +1 -1
- package/dist/middlewares/versionMiddleware.js +1 -1
- package/dist/middlewares/versionMiddleware.js.map +1 -1
- package/dist/notifications/BackupNotification.d.ts +6 -3
- package/dist/notifications/BackupNotification.d.ts.map +1 -1
- package/dist/notifications/BackupNotification.js +1 -1
- package/dist/notifications/BackupNotification.js.map +1 -1
- package/dist/notifications/channels/NotificationChannelResolver.d.ts.map +1 -1
- package/dist/notifications/channels/NotificationChannelResolver.js.map +1 -1
- package/dist/notifications/templates/email/backup/BackupFailedNotification.d.ts.map +1 -1
- package/dist/notifications/templates/email/backup/BackupFailedNotification.ejs +9 -4
- package/dist/notifications/templates/email/backup/BackupFailedNotification.js +1 -1
- package/dist/notifications/templates/email/backup/BackupFailedNotification.js.map +1 -1
- package/dist/notifications/templates/email/backup/BackupStartedNotification.d.ts.map +1 -1
- package/dist/notifications/templates/email/backup/BackupStartedNotification.ejs +9 -4
- package/dist/notifications/templates/email/backup/BackupStartedNotification.js +1 -1
- package/dist/notifications/templates/email/backup/BackupStartedNotification.js.map +1 -1
- package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts +2 -1
- package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts.map +1 -1
- package/dist/notifications/templates/email/backup/BackupSuccessNotification.ejs +52 -4
- package/dist/notifications/templates/email/backup/BackupSuccessNotification.js +1 -1
- package/dist/notifications/templates/email/backup/BackupSuccessNotification.js.map +1 -1
- package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts +24 -0
- package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts.map +1 -0
- package/dist/notifications/templates/email/backup/ReplicationFailedNotification.ejs +105 -0
- package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js +1 -0
- package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js.map +1 -0
- package/dist/routes/backups.d.ts.map +1 -1
- package/dist/routes/backups.js +1 -1
- package/dist/routes/backups.js.map +1 -1
- package/dist/routes/plans.d.ts.map +1 -1
- package/dist/routes/plans.js +1 -1
- package/dist/routes/plans.js.map +1 -1
- package/dist/routes/settings.d.ts.map +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/users.d.ts.map +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/users.js.map +1 -1
- package/dist/services/BackupServices.d.ts +14 -5
- package/dist/services/BackupServices.d.ts.map +1 -1
- package/dist/services/BackupServices.js +1 -1
- package/dist/services/BackupServices.js.map +1 -1
- package/dist/services/DeviceService.d.ts +6 -0
- package/dist/services/DeviceService.d.ts.map +1 -1
- package/dist/services/DeviceService.js +1 -1
- package/dist/services/DeviceService.js.map +1 -1
- package/dist/services/PlanService.d.ts +20 -0
- package/dist/services/PlanService.d.ts.map +1 -1
- package/dist/services/PlanService.js +1 -1
- package/dist/services/PlanService.js.map +1 -1
- package/dist/services/RestoreService.d.ts +2 -2
- package/dist/services/RestoreService.d.ts.map +1 -1
- package/dist/services/RestoreService.js +1 -1
- package/dist/services/RestoreService.js.map +1 -1
- package/dist/services/SettingsService.d.ts +8 -0
- package/dist/services/SettingsService.d.ts.map +1 -1
- package/dist/services/SettingsService.js +1 -1
- package/dist/services/SettingsService.js.map +1 -1
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js +1 -1
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/events/BackupEventService.d.ts +22 -0
- package/dist/services/events/BackupEventService.d.ts.map +1 -1
- package/dist/services/events/BackupEventService.js +1 -1
- package/dist/services/events/BackupEventService.js.map +1 -1
- package/dist/services/events/ReplicationEventService.d.ts +33 -0
- package/dist/services/events/ReplicationEventService.d.ts.map +1 -0
- package/dist/services/events/ReplicationEventService.js +1 -0
- package/dist/services/events/ReplicationEventService.js.map +1 -0
- package/dist/services/listeners/BackupEventListener.d.ts +14 -10
- package/dist/services/listeners/BackupEventListener.d.ts.map +1 -1
- package/dist/services/listeners/BackupEventListener.js +1 -1
- package/dist/services/listeners/BackupEventListener.js.map +1 -1
- package/dist/services/listeners/ReplicationEventListener.d.ts +30 -0
- package/dist/services/listeners/ReplicationEventListener.d.ts.map +1 -0
- package/dist/services/listeners/ReplicationEventListener.js +1 -0
- package/dist/services/listeners/ReplicationEventListener.js.map +1 -0
- package/dist/stores/BackupStore.d.ts +8 -0
- package/dist/stores/BackupStore.d.ts.map +1 -1
- package/dist/stores/BackupStore.js +1 -1
- package/dist/stores/BackupStore.js.map +1 -1
- package/dist/stores/DeviceStore.d.ts +6 -0
- package/dist/stores/DeviceStore.d.ts.map +1 -1
- package/dist/stores/DeviceStore.js +1 -1
- package/dist/stores/DeviceStore.js.map +1 -1
- package/dist/stores/PlanStore.d.ts +3 -1
- package/dist/stores/PlanStore.d.ts.map +1 -1
- package/dist/stores/PlanStore.js +1 -1
- package/dist/stores/PlanStore.js.map +1 -1
- package/dist/stores/StorageStore.d.ts +10 -0
- package/dist/stores/StorageStore.d.ts.map +1 -1
- package/dist/stores/StorageStore.js +1 -1
- package/dist/stores/StorageStore.js.map +1 -1
- package/dist/strategies/backup/BackupStrategy.d.ts +24 -2
- package/dist/strategies/backup/BackupStrategy.d.ts.map +1 -1
- package/dist/strategies/backup/LocalStrategy.d.ts +24 -2
- package/dist/strategies/backup/LocalStrategy.d.ts.map +1 -1
- package/dist/strategies/backup/LocalStrategy.js +1 -1
- package/dist/strategies/backup/LocalStrategy.js.map +1 -1
- package/dist/strategies/backup/RemoteStrategy.d.ts +13 -2
- package/dist/strategies/backup/RemoteStrategy.d.ts.map +1 -1
- package/dist/strategies/backup/RemoteStrategy.js +1 -1
- package/dist/strategies/backup/RemoteStrategy.js.map +1 -1
- package/dist/strategies/snapshot/LocalStrategy.d.ts +20 -4
- package/dist/strategies/snapshot/LocalStrategy.d.ts.map +1 -1
- package/dist/strategies/snapshot/LocalStrategy.js +1 -1
- package/dist/strategies/snapshot/LocalStrategy.js.map +1 -1
- package/dist/strategies/snapshot/RemoteStrategy.d.ts +4 -1
- package/dist/strategies/snapshot/RemoteStrategy.d.ts.map +1 -1
- package/dist/strategies/snapshot/RemoteStrategy.js +1 -1
- package/dist/strategies/snapshot/RemoteStrategy.js.map +1 -1
- package/dist/strategies/snapshot/SnapshotStrategy.d.ts +20 -4
- package/dist/strategies/snapshot/SnapshotStrategy.d.ts.map +1 -1
- package/dist/types/backups.d.ts +24 -0
- package/dist/types/backups.d.ts.map +1 -1
- package/dist/types/events.d.ts +110 -0
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/plans.d.ts +23 -2
- package/dist/types/plans.d.ts.map +1 -1
- package/dist/types/restores.d.ts +2 -0
- package/dist/types/restores.d.ts.map +1 -1
- package/dist/utils/restic/restic.d.ts +5 -0
- package/dist/utils/restic/restic.d.ts.map +1 -1
- package/dist/utils/restic/restic.js +1 -1
- package/dist/utils/restic/restic.js.map +1 -1
- package/dist/utils/sanitizeStoragePath.d.ts +5 -1
- package/dist/utils/sanitizeStoragePath.d.ts.map +1 -1
- package/dist/utils/sanitizeStoragePath.js +1 -1
- package/dist/utils/sanitizeStoragePath.js.map +1 -1
- package/package.json +6 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BackupCompletionStats, BackupDownload, BackupProgressStats, BackupTaskStats } from '../../types/backups';
|
|
1
|
+
import { BackupCompletionStats, BackupDownload, BackupMirror, BackupProgressStats, BackupTaskStats } from '../../types/backups';
|
|
2
2
|
import { PlanSource } from '../../types/plans';
|
|
3
3
|
import { SourceTypes } from '../../types/source';
|
|
4
4
|
export declare const backups: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
@@ -463,6 +463,25 @@ export declare const backups: import("drizzle-orm/sqlite-core").SQLiteTableWithC
|
|
|
463
463
|
}, {}, {
|
|
464
464
|
$type: BackupCompletionStats;
|
|
465
465
|
}>;
|
|
466
|
+
mirrors: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
467
|
+
name: "mirrors";
|
|
468
|
+
tableName: "backups";
|
|
469
|
+
dataType: "json";
|
|
470
|
+
columnType: "SQLiteTextJson";
|
|
471
|
+
data: BackupMirror[];
|
|
472
|
+
driverParam: string;
|
|
473
|
+
notNull: false;
|
|
474
|
+
hasDefault: false;
|
|
475
|
+
isPrimaryKey: false;
|
|
476
|
+
isAutoincrement: false;
|
|
477
|
+
hasRuntimeDefault: false;
|
|
478
|
+
enumValues: undefined;
|
|
479
|
+
baseColumn: never;
|
|
480
|
+
identity: undefined;
|
|
481
|
+
generated: undefined;
|
|
482
|
+
}, {}, {
|
|
483
|
+
$type: BackupMirror[];
|
|
484
|
+
}>;
|
|
466
485
|
};
|
|
467
486
|
dialect: "sqlite";
|
|
468
487
|
}>;
|
|
@@ -927,6 +946,25 @@ export declare const backupInsertSchema: import("drizzle-zod").BuildSchema<"inse
|
|
|
927
946
|
}, {}, {
|
|
928
947
|
$type: BackupCompletionStats;
|
|
929
948
|
}>;
|
|
949
|
+
mirrors: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
950
|
+
name: "mirrors";
|
|
951
|
+
tableName: "backups";
|
|
952
|
+
dataType: "json";
|
|
953
|
+
columnType: "SQLiteTextJson";
|
|
954
|
+
data: BackupMirror[];
|
|
955
|
+
driverParam: string;
|
|
956
|
+
notNull: false;
|
|
957
|
+
hasDefault: false;
|
|
958
|
+
isPrimaryKey: false;
|
|
959
|
+
isAutoincrement: false;
|
|
960
|
+
hasRuntimeDefault: false;
|
|
961
|
+
enumValues: undefined;
|
|
962
|
+
baseColumn: never;
|
|
963
|
+
identity: undefined;
|
|
964
|
+
generated: undefined;
|
|
965
|
+
}, {}, {
|
|
966
|
+
$type: BackupMirror[];
|
|
967
|
+
}>;
|
|
930
968
|
}, undefined, undefined>;
|
|
931
969
|
export declare const backupUpdateSchema: import("drizzle-zod").BuildSchema<"update", {
|
|
932
970
|
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
@@ -1387,6 +1425,25 @@ export declare const backupUpdateSchema: import("drizzle-zod").BuildSchema<"upda
|
|
|
1387
1425
|
}, {}, {
|
|
1388
1426
|
$type: BackupCompletionStats;
|
|
1389
1427
|
}>;
|
|
1428
|
+
mirrors: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1429
|
+
name: "mirrors";
|
|
1430
|
+
tableName: "backups";
|
|
1431
|
+
dataType: "json";
|
|
1432
|
+
columnType: "SQLiteTextJson";
|
|
1433
|
+
data: BackupMirror[];
|
|
1434
|
+
driverParam: string;
|
|
1435
|
+
notNull: false;
|
|
1436
|
+
hasDefault: false;
|
|
1437
|
+
isPrimaryKey: false;
|
|
1438
|
+
isAutoincrement: false;
|
|
1439
|
+
hasRuntimeDefault: false;
|
|
1440
|
+
enumValues: undefined;
|
|
1441
|
+
baseColumn: never;
|
|
1442
|
+
identity: undefined;
|
|
1443
|
+
generated: undefined;
|
|
1444
|
+
}, {}, {
|
|
1445
|
+
$type: BackupMirror[];
|
|
1446
|
+
}>;
|
|
1390
1447
|
}, undefined, undefined>;
|
|
1391
1448
|
export declare const backupSelectSchema: import("drizzle-zod").BuildSchema<"select", {
|
|
1392
1449
|
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
@@ -1847,6 +1904,25 @@ export declare const backupSelectSchema: import("drizzle-zod").BuildSchema<"sele
|
|
|
1847
1904
|
}, {}, {
|
|
1848
1905
|
$type: BackupCompletionStats;
|
|
1849
1906
|
}>;
|
|
1907
|
+
mirrors: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1908
|
+
name: "mirrors";
|
|
1909
|
+
tableName: "backups";
|
|
1910
|
+
dataType: "json";
|
|
1911
|
+
columnType: "SQLiteTextJson";
|
|
1912
|
+
data: BackupMirror[];
|
|
1913
|
+
driverParam: string;
|
|
1914
|
+
notNull: false;
|
|
1915
|
+
hasDefault: false;
|
|
1916
|
+
isPrimaryKey: false;
|
|
1917
|
+
isAutoincrement: false;
|
|
1918
|
+
hasRuntimeDefault: false;
|
|
1919
|
+
enumValues: undefined;
|
|
1920
|
+
baseColumn: never;
|
|
1921
|
+
identity: undefined;
|
|
1922
|
+
generated: undefined;
|
|
1923
|
+
}, {}, {
|
|
1924
|
+
$type: BackupMirror[];
|
|
1925
|
+
}>;
|
|
1850
1926
|
}, undefined, undefined>;
|
|
1851
1927
|
export declare const backupRelations: import("drizzle-orm").Relations<"backups", {
|
|
1852
1928
|
plan: import("drizzle-orm").One<"plans", false>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../../src/db/schema/backups.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../../src/db/schema/backups.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BlB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AACjD,MAAM,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AACpD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAA8B,CAAC;AAC9D,eAAO,MAAM,eAAe;;EAKzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{sql}from"drizzle-orm/sql";import{sqliteTable,text,integer}from"drizzle-orm/sqlite-core";import{createInsertSchema,createSelectSchema,createUpdateSchema}from"drizzle-zod";import{storages}from"./storages";import{plans}from"./plans";import{relations}from"drizzle-orm";export const backups=sqliteTable("backups",{id:text("id").notNull().primaryKey(),title:text("title"),description:text("description"),createdAt:integer("created_at",{mode:"timestamp"}).notNull().default(sql`(unixepoch())`),updatedAt:integer("updated_at",{mode:"timestamp"}),started:integer("started_at",{mode:"timestamp"}),ended:integer("ended_at",{mode:"timestamp"}),inProgress:integer("in_progress",{mode:"boolean"}),success:integer("success",{mode:"boolean"}),active:integer("active",{mode:"boolean"}).default(!0),status:text("status"),errorMsg:text("error_msg"),planId:text("plan_id").references(()=>plans.id),storageId:text("storage_id").references(()=>storages.id),storagePath:text("storage_path"),sourceId:text("source_id").notNull(),method:text("method").notNull(),sourceType:text("source_type").$type().notNull().default("device"),sourceConfig:text("source_config",{mode:"json"}).$type(),encryption:integer("encryption",{mode:"boolean"}).default(!0),compression:integer("compression",{mode:"boolean"}).default(!1),download:text("download",{mode:"json"}).$type(),taskStats:text("task_stats",{mode:"json"}).$type(),progressStats:text("progress_stats",{mode:"json"}).$type(),completionStats:text("completion_stats",{mode:"json"}).$type()});export const backupInsertSchema=createInsertSchema(backups);export const backupUpdateSchema=createUpdateSchema(backups);export const backupSelectSchema=createSelectSchema(backups);export const backupRelations=relations(backups,({one:one})=>({plan:one(plans,{fields:[backups.planId],references:[plans.id]})}));
|
|
1
|
+
import{sql}from"drizzle-orm/sql";import{sqliteTable,text,integer}from"drizzle-orm/sqlite-core";import{createInsertSchema,createSelectSchema,createUpdateSchema}from"drizzle-zod";import{storages}from"./storages";import{plans}from"./plans";import{relations}from"drizzle-orm";export const backups=sqliteTable("backups",{id:text("id").notNull().primaryKey(),title:text("title"),description:text("description"),createdAt:integer("created_at",{mode:"timestamp"}).notNull().default(sql`(unixepoch())`),updatedAt:integer("updated_at",{mode:"timestamp"}),started:integer("started_at",{mode:"timestamp"}),ended:integer("ended_at",{mode:"timestamp"}),inProgress:integer("in_progress",{mode:"boolean"}),success:integer("success",{mode:"boolean"}),active:integer("active",{mode:"boolean"}).default(!0),status:text("status"),errorMsg:text("error_msg"),planId:text("plan_id").references(()=>plans.id),storageId:text("storage_id").references(()=>storages.id),storagePath:text("storage_path"),sourceId:text("source_id").notNull(),method:text("method").notNull(),sourceType:text("source_type").$type().notNull().default("device"),sourceConfig:text("source_config",{mode:"json"}).$type(),encryption:integer("encryption",{mode:"boolean"}).default(!0),compression:integer("compression",{mode:"boolean"}).default(!1),download:text("download",{mode:"json"}).$type(),taskStats:text("task_stats",{mode:"json"}).$type(),progressStats:text("progress_stats",{mode:"json"}).$type(),completionStats:text("completion_stats",{mode:"json"}).$type(),mirrors:text("mirrors",{mode:"json"}).$type()});export const backupInsertSchema=createInsertSchema(backups);export const backupUpdateSchema=createUpdateSchema(backups);export const backupSelectSchema=createSelectSchema(backups);export const backupRelations=relations(backups,({one:one})=>({plan:one(plans,{fields:[backups.planId],references:[plans.id]})}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backups.js","sourceRoot":"","sources":["../../../src/db/schema/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAmB,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"backups.js","sourceRoot":"","sources":["../../../src/db/schema/backups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobProcessor.d.ts","sourceRoot":"","sources":["../../src/jobs/JobProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,UAAU,gBAAgB;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAM,YAAa,SAAQ,YAAY;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,KAAK,CAAgC;IAG7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO;WAIO,WAAW,IAAI,YAAY;IAOzC;;;;OAIG;IACI,aAAa,CAAC,YAAY,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"JobProcessor.d.ts","sourceRoot":"","sources":["../../src/jobs/JobProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,UAAU,gBAAgB;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAM,YAAa,SAAQ,YAAY;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,KAAK,CAAgC;IAG7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO;WAIO,WAAW,IAAI,YAAY;IAOzC;;;;OAIG;IACI,aAAa,CAAC,YAAY,EAAE,gBAAgB;IAkBnD;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAUhC;;;OAGG;IACI,KAAK,CAAC,QAAQ,SAAO,GAAG,IAAI;IAanC;;OAEG;IACI,IAAI,IAAI,IAAI;IAQnB;;;OAGG;YACW,YAAY;CAiG1B;AAED,eAAO,MAAM,YAAY,cAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EventEmitter}from"events";import{jobQueue}from"./JobQueue";import{logger}from"../utils/logger";import{CleanDownloadsTask}from"./tasks/CleanDownloadsTask";import{BackupTask}from"./tasks/BackupTask";import{configService}from"../services/ConfigService";import{RestoreTask}from"./tasks/RestoreTask";class JobProcessor extends EventEmitter{static instance;isRunning=!1;intervalId=null;tasks=new Map;activeBackupJobs=0;constructor(){super()}static getInstance(){return JobProcessor.instance||(JobProcessor.instance=new JobProcessor),JobProcessor.instance}registerTasks(dependencies){const tasksToRegister=[new CleanDownloadsTask];dependencies.backupManager&&tasksToRegister.push(new BackupTask(dependencies.backupManager)),dependencies.restoreManager&&tasksToRegister.push(new RestoreTask(dependencies.restoreManager));for(const task of tasksToRegister)this.tasks.set(task.name,task)}addTask(task){this.tasks.has(task.name)&&logger.warn({module:"JobProcessor",task:task.name},"A task with this name is already registered. It will be overwritten."),this.tasks.set(task.name,task)}start(interval=5e3){this.intervalId?logger.warn({module:"JobProcessor"},"Job processor is already running."):0!==this.tasks.size?(logger.info({module:"JobProcessor"},"Starting job processor."),this.intervalId=setInterval(()=>this.processQueue(),interval)):logger.warn({module:"JobProcessor"},"No tasks registered. Job processor will not start.")}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null,logger.info({module:"JobProcessor"},"Stopped job processor."))}async processQueue(){if(this.isRunning)return;const job=jobQueue.getNext();if(!job)return;if("Backup"===job.name&&this.activeBackupJobs>=configService.config.MAX_CONCURRENT_BACKUPS)return void jobQueue.requeueAtFront(job);const now=Date.now();if(job.lastAttempt&&now-job.lastAttempt<job.retryDelay){const timeLeft=Math.round((job.retryDelay-(now-job.lastAttempt))/1e3);return logger.info({module:"JobProcessor"},`Delaying retry for job '${job.name}'. Next attempt in ~${timeLeft}s.`),void jobQueue.reQueue(job)}this.isRunning=!0,"Backup"===job.name&&this.activeBackupJobs++,logger.info({module:"JobProcessor"},`Processing job: ${job.name}. Active backups: ${this.activeBackupJobs}`);const task=this.tasks.get(job.name);if(!task)return logger.error({module:"JobProcessor"},`No task registered for job name: ${job.name}`),jobQueue.failJob(job),this.isRunning=!1,void("Backup"===job.name&&this.activeBackupJobs--);try{await task.run(job),jobQueue.completeJob()}catch(error){const errorMessage=error instanceof Error?error.message:String(error);if(errorMessage.startsWith("BACKUP_CANCELLED:")||errorMessage.startsWith("RESTORE_CANCELLED:"))return logger.info({module:"JobProcessor",job:job.name},"Job was cancelled by user"),void jobQueue.completeJob();logger.error({module:"JobProcessor",job:job.name,error:error.message},`Job failed during execution. Attempt ${job.attempts+1} of ${job.maxAttempts}.`);jobQueue.failJob(job)&&(logger.error({module:"JobProcessor",job:job.name},`Job has permanently failed after ${job.maxAttempts} attempts.`),this.emit(`${job.name.toLowerCase()}_failed`,{...job.payload,error:error.message||"Unknown error after multiple retries."}))}finally{this.isRunning=!1,"Backup"===job.name&&this.activeBackupJobs--}}}export const jobProcessor=JobProcessor.getInstance();
|
|
1
|
+
import{EventEmitter}from"events";import{jobQueue}from"./JobQueue";import{logger}from"../utils/logger";import{CleanDownloadsTask}from"./tasks/CleanDownloadsTask";import{BackupTask}from"./tasks/BackupTask";import{configService}from"../services/ConfigService";import{RestoreTask}from"./tasks/RestoreTask";import{ReplicationRetryTask}from"./tasks/ReplicationRetryTask";class JobProcessor extends EventEmitter{static instance;isRunning=!1;intervalId=null;tasks=new Map;activeBackupJobs=0;constructor(){super()}static getInstance(){return JobProcessor.instance||(JobProcessor.instance=new JobProcessor),JobProcessor.instance}registerTasks(dependencies){const tasksToRegister=[new CleanDownloadsTask];dependencies.backupManager&&(tasksToRegister.push(new BackupTask(dependencies.backupManager)),tasksToRegister.push(new ReplicationRetryTask(dependencies.backupManager))),dependencies.restoreManager&&tasksToRegister.push(new RestoreTask(dependencies.restoreManager));for(const task of tasksToRegister)this.tasks.set(task.name,task)}addTask(task){this.tasks.has(task.name)&&logger.warn({module:"JobProcessor",task:task.name},"A task with this name is already registered. It will be overwritten."),this.tasks.set(task.name,task)}start(interval=5e3){this.intervalId?logger.warn({module:"JobProcessor"},"Job processor is already running."):0!==this.tasks.size?(logger.info({module:"JobProcessor"},"Starting job processor."),this.intervalId=setInterval(()=>this.processQueue(),interval)):logger.warn({module:"JobProcessor"},"No tasks registered. Job processor will not start.")}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null,logger.info({module:"JobProcessor"},"Stopped job processor."))}async processQueue(){if(this.isRunning)return;const job=jobQueue.getNext();if(!job)return;if("Backup"===job.name&&this.activeBackupJobs>=configService.config.MAX_CONCURRENT_BACKUPS)return void jobQueue.requeueAtFront(job);const now=Date.now();if(job.lastAttempt&&now-job.lastAttempt<job.retryDelay){const timeLeft=Math.round((job.retryDelay-(now-job.lastAttempt))/1e3);return logger.info({module:"JobProcessor"},`Delaying retry for job '${job.name}'. Next attempt in ~${timeLeft}s.`),void jobQueue.reQueue(job)}this.isRunning=!0,"Backup"===job.name&&this.activeBackupJobs++,logger.info({module:"JobProcessor"},`Processing job: ${job.name}. Active backups: ${this.activeBackupJobs}`);const task=this.tasks.get(job.name);if(!task)return logger.error({module:"JobProcessor"},`No task registered for job name: ${job.name}`),jobQueue.failJob(job),this.isRunning=!1,void("Backup"===job.name&&this.activeBackupJobs--);try{await task.run(job),jobQueue.completeJob()}catch(error){const errorMessage=error instanceof Error?error.message:String(error);if(errorMessage.startsWith("BACKUP_CANCELLED:")||errorMessage.startsWith("RESTORE_CANCELLED:"))return logger.info({module:"JobProcessor",job:job.name},"Job was cancelled by user"),void jobQueue.completeJob();logger.error({module:"JobProcessor",job:job.name,error:error.message},`Job failed during execution. Attempt ${job.attempts+1} of ${job.maxAttempts}.`);jobQueue.failJob(job)&&(logger.error({module:"JobProcessor",job:job.name},`Job has permanently failed after ${job.maxAttempts} attempts.`),this.emit(`${job.name.toLowerCase()}_failed`,{...job.payload,error:error.message||"Unknown error after multiple retries."}))}finally{this.isRunning=!1,"Backup"===job.name&&this.activeBackupJobs--}}}export const jobProcessor=JobProcessor.getInstance();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobProcessor.js","sourceRoot":"","sources":["../../src/jobs/JobProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAO,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"JobProcessor.js","sourceRoot":"","sources":["../../src/jobs/JobProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Task } from './AbstractTask';
|
|
2
|
+
import { BaseBackupManager } from '../../managers/BaseBackupManager';
|
|
3
|
+
import { Job } from '../JobQueue';
|
|
4
|
+
export declare class ReplicationRetryTask extends Task {
|
|
5
|
+
private backupManager;
|
|
6
|
+
name: string;
|
|
7
|
+
constructor(backupManager: BaseBackupManager);
|
|
8
|
+
run(job: Job): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ReplicationRetryTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplicationRetryTask.d.ts","sourceRoot":"","sources":["../../../src/jobs/tasks/ReplicationRetryTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,qBAAa,oBAAqB,SAAQ,IAAI;IAGjC,OAAO,CAAC,aAAa;IAFjC,IAAI,SAAsB;gBAEN,aAAa,EAAE,iBAAiB;IAI9C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Task}from"./AbstractTask";import{logger,planLogger}from"../../utils/logger";export class ReplicationRetryTask extends Task{backupManager;name="ReplicationRetry";constructor(backupManager){super(),this.backupManager=backupManager}async run(job){if(!job.payload||!job.payload?.planId||!job.payload?.backupId)throw logger.error("ReplicationRetryTask failed: planId or backupId is missing from the payload."),new Error("Missing planId or backupId in job payload");const{planId:planId,backupId:backupId,failedReplicationIds:failedReplicationIds}=job.payload;logger.info(`Starting replication retry job for plan: ${planId}, backup: ${backupId}`);try{await this.backupManager.retryFailedReplications(planId,backupId,failedReplicationIds),planLogger("replication",planId,backupId).info(`Replication retry job for plan ${planId} completed successfully.`)}catch(error){throw planLogger("replication",planId,backupId).error(`Replication retry job for plan ${planId} failed. Error: ${error.message}`),error}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplicationRetryTask.js","sourceRoot":"","sources":["../../../src/jobs/tasks/ReplicationRetryTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,OAAO,oBAAqB,SAAQ,IAAI;IAGzB;IAFpB,IAAI,GAAG,kBAAkB,CAAC;IAE1B,YAAoB,aAAgC;QACnD,KAAK,EAAE,CAAC;QADW,kBAAa,GAAb,aAAa,CAAmB;IAEpD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAQ;QACjB,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACpE,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,4CAA4C,MAAM,aAAa,QAAQ,EAAE,CAAC,CAAC;QAEvF,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAEzF,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC/C,kCAAkC,MAAM,0BAA0B,CAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAChD,kCAAkC,MAAM,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAC1E,CAAC;YACF,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;CACD"}
|
|
@@ -38,6 +38,10 @@ export declare class BaseBackupManager extends EventEmitter {
|
|
|
38
38
|
storagePath: string;
|
|
39
39
|
removeRemoteData: boolean;
|
|
40
40
|
encryption: boolean;
|
|
41
|
+
replicationStorages?: {
|
|
42
|
+
storageName: string;
|
|
43
|
+
storagePath: string;
|
|
44
|
+
}[];
|
|
41
45
|
}): Promise<{
|
|
42
46
|
success: boolean;
|
|
43
47
|
result: string;
|
|
@@ -61,6 +65,25 @@ export declare class BaseBackupManager extends EventEmitter {
|
|
|
61
65
|
success: boolean;
|
|
62
66
|
result: string;
|
|
63
67
|
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Retries failed replication operations for a specific backup.
|
|
70
|
+
* Directly calls BackupHandler to run replications synchronously (awaited).
|
|
71
|
+
*/
|
|
72
|
+
retryFailedReplications(planId: string, backupId: string, failedReplicationIds: string[]): Promise<{
|
|
73
|
+
success: boolean;
|
|
74
|
+
result: string;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Removes a single replication storage's data from the remote storage via rclone purge.
|
|
78
|
+
*/
|
|
79
|
+
removeReplicationStorage(planId: string, options: {
|
|
80
|
+
storageName: string;
|
|
81
|
+
storagePath: string;
|
|
82
|
+
removeData: boolean;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
success: boolean;
|
|
85
|
+
result: string;
|
|
86
|
+
}>;
|
|
64
87
|
pauseBackup(planId: string): Promise<{
|
|
65
88
|
success: boolean;
|
|
66
89
|
result: string;
|
|
@@ -69,7 +92,10 @@ export declare class BaseBackupManager extends EventEmitter {
|
|
|
69
92
|
success: boolean;
|
|
70
93
|
result: string;
|
|
71
94
|
}>;
|
|
72
|
-
pruneBackups(planId: string
|
|
95
|
+
pruneBackups(planId: string, replicationStorages?: {
|
|
96
|
+
storageName: string;
|
|
97
|
+
storagePath: string;
|
|
98
|
+
}[]): Promise<{
|
|
73
99
|
success: boolean;
|
|
74
100
|
result: string;
|
|
75
101
|
}>;
|
|
@@ -78,7 +104,10 @@ export declare class BaseBackupManager extends EventEmitter {
|
|
|
78
104
|
* @param planId - The ID of the plan for which to unlock the repository.
|
|
79
105
|
* @returns A promise that resolves to an object indicating success and the result message.
|
|
80
106
|
*/
|
|
81
|
-
unlockRepo(planId: string
|
|
107
|
+
unlockRepo(planId: string, replicationStorages?: {
|
|
108
|
+
storageName: string;
|
|
109
|
+
storagePath: string;
|
|
110
|
+
}[]): Promise<{
|
|
82
111
|
success: boolean;
|
|
83
112
|
result: string;
|
|
84
113
|
}>;
|
|
@@ -87,7 +116,10 @@ export declare class BaseBackupManager extends EventEmitter {
|
|
|
87
116
|
success: boolean;
|
|
88
117
|
result: string;
|
|
89
118
|
}>;
|
|
90
|
-
|
|
119
|
+
checkIntegrity(planId: string): Promise<{
|
|
120
|
+
success: boolean;
|
|
121
|
+
result: Record<string, string | null>;
|
|
122
|
+
}>;
|
|
91
123
|
}
|
|
92
124
|
export {};
|
|
93
125
|
//# sourceMappingURL=BaseBackupManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseBackupManager.d.ts","sourceRoot":"","sources":["../../src/managers/BaseBackupManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,KAAK,eAAe,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,WAAW,CAAC,eAAe,GAAG,wBAAwB,CAAC,CAAC;IACtE,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;gBAE7B,UAAU,CAAC,EAAE,MAAM;IAW/B,IAAI,WAAW,IAAI,WAAW,CAAC,eAAe,GAAG,wBAAwB,CAAC,CAEzE;IAED,IAAI,aAAa,IAAI,aAAa,CAKjC;IAEK,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiD1C,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC;IAYvC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAUvE,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,UAAU,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseBackupManager.d.ts","sourceRoot":"","sources":["../../src/managers/BaseBackupManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EventEmitter}from"events";import{runResticCommand}from"../utils/restic/restic";import{generateResticRepoPath}from"../utils/restic/helpers";import{runRcloneCommand}from"../utils/rclone/rclone";import{CronManager}from"./CronManager";import{BackupHandler}from"./handlers/BackupHandler";import{PruneHandler}from"./handlers/PruneHandler";import{jobQueue}from"../jobs/JobQueue";import{generateUID}from"../utils/helpers";import{configService}from"../services/ConfigService";export class BaseBackupManager extends EventEmitter{_scheduleFilePath;_cronManager;_backupHandler;constructor(configPath){super(),this._scheduleFilePath=configPath,this._cronManager=CronManager.getInstance({backup:this.queueBackup.bind(this)},this._scheduleFilePath)}get cronManager(){return this._cronManager}get backupHandler(){return this._backupHandler||(this._backupHandler=new BackupHandler(this)),this._backupHandler}async createBackup(planId,options){const{storagePath:storagePath,storage:storage}=options,{encryption:encryption}=options.settings,encKey=configService.config.ENCRYPTION_KEY;if(encryption&&(!encKey||""===encKey.trim()))return{success:!1,result:"Encryption is enabled but ENCRYPTION_KEY is not set in environment variables."};const repoPassword=encryption?encKey:"";try{const repoCommand=["-r",generateResticRepoPath(storage.name,storagePath||""),"init","--verbose"];encryption||repoCommand.push("--insecure-no-password");await runResticCommand(repoCommand,{RESTIC_PASSWORD:repoPassword,RCLONE_CONFIG_PASS:repoPassword},data=>{})}catch(error){return{success:!1,result:"Could Not Create Restic Repo. Details: "+error.message}}try{await this.createOrUpdateSchedules(planId,options,"create");const initScheduleRes=await this.performBackup(planId);return{success:!0,result:initScheduleRes.success?"Backup Schedule Created. Initial Backup Started.":"Could not Start the Initial Backup. Please run the Backup Manually."}}catch(error){return{success:!1,result:error.message}}}async updateBackup(planId,options){try{return await this.createOrUpdateSchedules(planId,options,"update"),{success:!0,result:"Backup Schedule Updated. initBackupStatus"}}catch(error){return{success:!1,result:error.message}}}async queueBackup(planId,options){if(options&&!options.isActive)return;const backupId=generateUID(),{retries:retries=5,retryDelay:retryDelay=300}=options?.settings||{};jobQueue.add("Backup",{planId:planId,backupId:backupId},retries,1e3*retryDelay)}async removeBackup(planId,options){try{await this.cronManager.removeSchedule(planId);let removeResult="Successfully Removed";if(options.storagePath&&options.removeRemoteData){removeResult+=await runRcloneCommand(["purge",`${options.storageName}:${options.storagePath}`])}return{success:!0,result:removeResult}}catch(error){return{success:!1,result:error.message}}}async performBackup(planId){const backupId=generateUID(),schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type),options=backupSchedule?.options,{retries:retries=5,retryDelay:retryDelay=60}=options?.settings||{};return backupSchedule&&backupSchedule.options?(jobQueue.addPriorityJob("Backup",{planId:planId,backupId:backupId},retries,1e3*retryDelay),{success:!0,result:"Backup job has been added to the queue."}):{success:!1,result:"No backup schedule found for this plan."}}async performBackupExecution(planId,backupId,retryInfo){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(!backupSchedule||!backupSchedule.options)throw new Error(`No backup schedule options found for plan ${planId}.`);const options=backupSchedule.options;return await this.backupHandler.execute(planId,backupId,options,retryInfo)}async cancelBackup(planId,backupId){const cancelled=await this.backupHandler.cancel(planId,backupId);return{success:cancelled,result:cancelled?"Cancelled Backup":"Failed to cancel Backup"}}async pauseBackup(planId){const paused=await this.cronManager.pauseSchedule(planId);return{success:paused,result:paused?"Paused Backup":"Failed to Pause Backup"}}async resumeBackup(planId){const resumed=await this.cronManager.resumeSchedule(planId);return{success:resumed,result:resumed?"Resumed Backup":"Failed to Resume Backup"}}async pruneBackups(planId){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(backupSchedule){const pruneHandler=new PruneHandler(this);return await pruneHandler.prune(planId,backupSchedule.options,!0)}return{success:!1,result:"Backup Task Not Found"}}async unlockRepo(planId){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type),encKey=configService.config.ENCRYPTION_KEY;if(!backupSchedule||!backupSchedule.options)return{success:!1,result:`No backup schedule configuration found for plan ${planId}.`};const options=backupSchedule.options;if(!options.storage||!options.storage.name)return{success:!1,result:"Storage configuration is missing for this plan."};try{const repoPath=generateResticRepoPath(options.storage.name,options.storagePath||""),repoPassword=options.settings.encryption?encKey:"",resticArgs=["unlock","-r",repoPath,"--json"],output=await runResticCommand(resticArgs,{RESTIC_PASSWORD:repoPassword});return{success:!0,result:output.trim()||"Successfully removed all stale locks from the repository."}}catch(error){return{success:!1,result:error.message||"An unknown error occurred during the unlock process."}}}async createOrUpdateSchedules(planId,options,action="create"){const{cronExpression:cronExpression,settings:settings,storageId:storageId,storage:storage,storagePath:storagePath,isActive:isActive,id:id,title:title,sourceConfig:sourceConfig,sourceId:sourceId}=options,backupExecOpts={id:id,title:title,isActive:isActive,cronExpression:cronExpression,sourceConfig:sourceConfig,sourceId:sourceId,storageId:storageId,storage:storage,storagePath:storagePath,settings:settings},backupOptions={...backupExecOpts,isActive:backupExecOpts.isActive||!1,taskCallback:(id,opts)=>{this.queueBackup(id,opts)}};if("create"===action)await this.cronManager.scheduleTask(planId,cronExpression,backupOptions,"backup");else{const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);backupSchedule?await this.cronManager.updateSchedule(planId,cronExpression,backupOptions,"backup"):await this.cronManager.scheduleTask(planId,cronExpression,backupOptions,"backup")}}async updatePlanStorageName(storageId,newStorageName){try{const schedules=await this.cronManager.getSchedules();if(schedules)for(const[planId,scheduleEntries]of Object.entries(schedules)){const backupSchedule=scheduleEntries.find(s=>"backup"===s.type);if(backupSchedule?.options.storageId===storageId){const updatedOptions={...backupSchedule.options,storageName:newStorageName};await this.cronManager.updateSchedule(planId,updatedOptions.cronExpression,{...updatedOptions},"backup")}}return{success:!0,result:"Relevant schedules were updated with new storage name."}}catch(error){return{success:!1,result:"Failed to updated Schedules with new storage name. "+error?.message||""}}}testFunc(){}}
|
|
1
|
+
import{EventEmitter}from"events";import{runResticCommand}from"../utils/restic/restic";import{generateResticRepoPath}from"../utils/restic/helpers";import{runRcloneCommand}from"../utils/rclone/rclone";import{CronManager}from"./CronManager";import{BackupHandler}from"./handlers/BackupHandler";import{PruneHandler}from"./handlers/PruneHandler";import{jobQueue}from"../jobs/JobQueue";import{generateUID}from"../utils/helpers";import{configService}from"../services/ConfigService";export class BaseBackupManager extends EventEmitter{_scheduleFilePath;_cronManager;_backupHandler;constructor(configPath){super(),this._scheduleFilePath=configPath,this._cronManager=CronManager.getInstance({backup:this.queueBackup.bind(this)},this._scheduleFilePath)}get cronManager(){return this._cronManager}get backupHandler(){return this._backupHandler||(this._backupHandler=new BackupHandler(this)),this._backupHandler}async createBackup(planId,options){const{storagePath:storagePath,storage:storage}=options,{encryption:encryption}=options.settings,encKey=configService.config.ENCRYPTION_KEY;if(encryption&&(!encKey||""===encKey.trim()))return{success:!1,result:"Encryption is enabled but ENCRYPTION_KEY is not set in environment variables."};const repoPassword=encryption?encKey:"";try{const repoCommand=["-r",generateResticRepoPath(storage.name,storagePath||""),"init","--verbose"];encryption||repoCommand.push("--insecure-no-password");await runResticCommand(repoCommand,{RESTIC_PASSWORD:repoPassword,RCLONE_CONFIG_PASS:repoPassword},data=>{})}catch(error){return{success:!1,result:"Could Not Create Restic Repo. Details: "+error.message}}try{await this.createOrUpdateSchedules(planId,options,"create");const initScheduleRes=await this.performBackup(planId);return{success:!0,result:initScheduleRes.success?"Backup Schedule Created. Initial Backup Started.":"Could not Start the Initial Backup. Please run the Backup Manually."}}catch(error){return{success:!1,result:error.message}}}async updateBackup(planId,options){try{return await this.createOrUpdateSchedules(planId,options,"update"),{success:!0,result:"Backup Schedule Updated. initBackupStatus"}}catch(error){return{success:!1,result:error.message}}}async queueBackup(planId,options){if(options&&!options.isActive)return;const backupId=generateUID(),{retries:retries=5,retryDelay:retryDelay=300}=options?.settings||{};jobQueue.add("Backup",{planId:planId,backupId:backupId},retries,1e3*retryDelay)}async removeBackup(planId,options){try{await this.cronManager.removeSchedule(planId);let removeResult="Successfully Removed";if(options.storagePath&&options.removeRemoteData){removeResult+=await runRcloneCommand(["purge",`${options.storageName}:${options.storagePath}`])}if(options.removeRemoteData&&options.replicationStorages?.length)for(const replica of options.replicationStorages)try{const output=await runRcloneCommand(["purge",`${replica.storageName}:${replica.storagePath}`]);removeResult+=` | Replication ${replica.storageName}: ${output}`}catch(error){removeResult+=` | Replication ${replica.storageName} purge failed: ${error.message}`}return{success:!0,result:removeResult}}catch(error){return{success:!1,result:error.message}}}async performBackup(planId){const backupId=generateUID(),schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type),options=backupSchedule?.options,{retries:retries=5,retryDelay:retryDelay=60}=options?.settings||{};return backupSchedule&&backupSchedule.options?(jobQueue.addPriorityJob("Backup",{planId:planId,backupId:backupId},retries,1e3*retryDelay),{success:!0,result:"Backup job has been added to the queue."}):{success:!1,result:"No backup schedule found for this plan."}}async performBackupExecution(planId,backupId,retryInfo){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(!backupSchedule||!backupSchedule.options)throw new Error(`No backup schedule options found for plan ${planId}.`);const options=backupSchedule.options;return await this.backupHandler.execute(planId,backupId,options,retryInfo)}async cancelBackup(planId,backupId){const cancelled=await this.backupHandler.cancel(planId,backupId);return{success:cancelled,result:cancelled?"Cancelled Backup":"Failed to cancel Backup"}}async retryFailedReplications(planId,backupId,failedReplicationIds){try{const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(!backupSchedule||!backupSchedule.options)return{success:!1,result:`No backup schedule options found for plan ${planId}.`};const options=backupSchedule.options,replication=options.settings?.replication;if(!replication?.enabled||!replication.storages?.length)return{success:!1,result:"Replication is not enabled for this plan."};if(0===replication.storages.filter(s=>failedReplicationIds.includes(s.replicationId)).length)return{success:!1,result:"No matching replication storages found."};const results=await this.backupHandler.retryFailedReplications(planId,backupId,options,failedReplicationIds),allSucceeded=results.every(m=>"completed"===m.status);return{success:allSucceeded,result:allSucceeded?"All replications succeeded.":`${results.filter(m=>"failed"===m.status).length} replication(s) still failed.`}}catch(error){return{success:!1,result:error.message||"Failed to retry replications."}}}async removeReplicationStorage(planId,options){try{let result="Replication storage removed from plan.";if(options.removeData&&options.storagePath){result+=` Data purged: ${await runRcloneCommand(["purge",`${options.storageName}:${options.storagePath}`])}`}return{success:!0,result:result}}catch(error){return{success:!1,result:error.message||"Failed to remove replication storage data."}}}async pauseBackup(planId){const paused=await this.cronManager.pauseSchedule(planId);return{success:paused,result:paused?"Paused Backup":"Failed to Pause Backup"}}async resumeBackup(planId){const resumed=await this.cronManager.resumeSchedule(planId);return{success:resumed,result:resumed?"Resumed Backup":"Failed to Resume Backup"}}async pruneBackups(planId,replicationStorages){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(backupSchedule){const pruneHandler=new PruneHandler(this),pruneResult=await pruneHandler.prune(planId,backupSchedule.options,!0);if(replicationStorages?.length){const options=backupSchedule.options;for(const replica of replicationStorages)try{const replicaOptions={...backupSchedule.options,storage:{...options.storage,name:replica.storageName},storagePath:replica.storagePath};await pruneHandler.prune(planId,replicaOptions,!1)}catch(error){}}return pruneResult}return{success:!1,result:"Backup Task Not Found"}}async unlockRepo(planId,replicationStorages){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type),encKey=configService.config.ENCRYPTION_KEY;if(!backupSchedule||!backupSchedule.options)return{success:!1,result:`No backup schedule configuration found for plan ${planId}.`};const options=backupSchedule.options;if(!options.storage||!options.storage.name)return{success:!1,result:"Storage configuration is missing for this plan."};try{const repoPath=generateResticRepoPath(options.storage.name,options.storagePath||""),repoPassword=options.settings.encryption?encKey:"",resticArgs=["unlock","-r",repoPath,"--json"];let resultMessage=(await runResticCommand(resticArgs,{RESTIC_PASSWORD:repoPassword})).trim()||"Successfully removed all stale locks from the repository.";if(replicationStorages?.length)for(const replica of replicationStorages)try{const replicaRepoPath=generateResticRepoPath(replica.storageName,replica.storagePath||"");await runResticCommand(["unlock","-r",replicaRepoPath,"--json"],{RESTIC_PASSWORD:repoPassword}),resultMessage+=` | ${replica.storageName}: unlocked`}catch(error){resultMessage+=` | ${replica.storageName}: unlock failed - ${error.message}`}return{success:!0,result:resultMessage}}catch(error){return{success:!1,result:error.message||"An unknown error occurred during the unlock process."}}}async createOrUpdateSchedules(planId,options,action="create"){const{cronExpression:cronExpression,settings:settings,storageId:storageId,storage:storage,storagePath:storagePath,isActive:isActive,id:id,title:title,sourceConfig:sourceConfig,sourceId:sourceId}=options,backupExecOpts={id:id,title:title,isActive:isActive,cronExpression:cronExpression,sourceConfig:sourceConfig,sourceId:sourceId,storageId:storageId,storage:storage,storagePath:storagePath,settings:settings},backupOptions={...backupExecOpts,isActive:backupExecOpts.isActive||!1,taskCallback:(id,opts)=>{this.queueBackup(id,opts)}};if("create"===action)await this.cronManager.scheduleTask(planId,cronExpression,backupOptions,"backup");else{const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);backupSchedule?await this.cronManager.updateSchedule(planId,cronExpression,backupOptions,"backup"):await this.cronManager.scheduleTask(planId,cronExpression,backupOptions,"backup")}}async updatePlanStorageName(storageId,newStorageName){try{const schedules=await this.cronManager.getSchedules();if(schedules)for(const[planId,scheduleEntries]of Object.entries(schedules)){const backupSchedule=scheduleEntries.find(s=>"backup"===s.type);if(backupSchedule?.options.storageId===storageId){const updatedOptions={...backupSchedule.options,storageName:newStorageName};await this.cronManager.updateSchedule(planId,updatedOptions.cronExpression,{...updatedOptions},"backup")}}return{success:!0,result:"Relevant schedules were updated with new storage name."}}catch(error){return{success:!1,result:"Failed to updated Schedules with new storage name. "+error?.message||""}}}async checkIntegrity(planId){const schedules=await this.cronManager.getSchedule(planId),backupSchedule=schedules?.find(s=>"backup"===s.type);if(backupSchedule){this.emit("integrity_start",{planId:planId});const{storage:storage,storagePath:storagePath,settings:settings}=backupSchedule?.options,repSettings=settings?.replication,replicationStorages=repSettings?.enabled&&repSettings.storages&&repSettings.storages.length>0?repSettings.storages:[],allStorages=replicationStorages.length>0?[{storageName:storage.name,storagePath:storagePath,storageId:storage.id},...replicationStorages]:[{storageName:storage.name,storagePath:storagePath,storageId:storage.id}],errorMsg={primary:null},resultObj={primary:null};for(const theStorage of allStorages){const index=theStorage.storageId===storage.id?"primary":"mirror_"+theStorage.storageId;errorMsg[index]=null,resultObj[index]=null;const resticArgs=["check"],repoPassword=settings.encryption?configService.config.ENCRYPTION_KEY:"";if(!theStorage.storageName)return{success:!1,result:{[index]:"No storage name found"}};{const repoPath=generateResticRepoPath(theStorage.storageName,theStorage.storagePath||"");resticArgs.push("-r",repoPath)}const method=settings.integrity?.method||"5%";["5%","10%","25%","50%"].includes(method)&&resticArgs.push("--read-data-subset",method),"full"===method&&resticArgs.push("--read-data");try{const checkRes=await runResticCommand(resticArgs,{RESTIC_PASSWORD:repoPassword});resultObj[index]=checkRes}catch(error){const errMsg=error instanceof Error&&error.message||"Unknown Error";errorMsg[index]=errMsg,resultObj[index]=errMsg}}return this.emit("integrity_end",{planId:planId,result:resultObj}),{success:!0,result:resultObj}}return this.emit("integrity_failed",{planId:planId,result:{primary:"No backup schedule found"}}),{success:!1,result:{primary:"No Backup schedule found"}}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseBackupManager.js","sourceRoot":"","sources":["../../src/managers/BaseBackupManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseBackupManager.js","sourceRoot":"","sources":["../../src/managers/BaseBackupManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,22 +15,39 @@ export declare class BaseSnapshotManager extends EventEmitter {
|
|
|
15
15
|
storagePath: string;
|
|
16
16
|
storageName: string;
|
|
17
17
|
encryption: boolean;
|
|
18
|
-
|
|
18
|
+
mirrors?: {
|
|
19
|
+
replicationId: string;
|
|
20
|
+
storageName: string;
|
|
21
|
+
storagePath: string;
|
|
22
|
+
}[];
|
|
19
23
|
}): Promise<{
|
|
20
24
|
success: boolean;
|
|
21
25
|
result: any;
|
|
22
|
-
stats?:
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
stats?: {
|
|
27
|
+
primary: null | {
|
|
28
|
+
total_size: number;
|
|
29
|
+
snapshots: string[];
|
|
30
|
+
};
|
|
31
|
+
mirrors?: {
|
|
32
|
+
[key: string]: {
|
|
33
|
+
total_size: number;
|
|
34
|
+
snapshots: string[];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
25
37
|
};
|
|
26
38
|
}>;
|
|
27
39
|
getSnapshotFiles(backupId: string, options: {
|
|
28
40
|
storagePath: string;
|
|
29
41
|
storageName: string;
|
|
30
42
|
encryption: boolean;
|
|
43
|
+
skipCache?: boolean;
|
|
31
44
|
}): Promise<{
|
|
32
45
|
success: boolean;
|
|
33
46
|
result: SnapShotFile[] | string;
|
|
34
47
|
}>;
|
|
48
|
+
retryFailedReplication(planId: string, backupId: string, replicationIds: string[]): Promise<{
|
|
49
|
+
success: boolean;
|
|
50
|
+
result: string;
|
|
51
|
+
}>;
|
|
35
52
|
}
|
|
36
53
|
//# sourceMappingURL=BaseSnapshotManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSnapshotManager.d.ts","sourceRoot":"","sources":["../../src/managers/BaseSnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseSnapshotManager.d.ts","sourceRoot":"","sources":["../../src/managers/BaseSnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,qBAAa,mBAAoB,SAAQ,YAAY;IACpD,OAAO,CAAC,eAAe,CAAkB;;IAOnC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,GACxE,OAAO,CAAC,GAAG,CAAC;IAqBT,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAenE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAetE,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAChF,GACC,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,CAAC,EAAE;YACP,OAAO,EAAE,IAAI,GAAG;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,EAAE,CAAA;aAAE,CAAC;YAC5D,OAAO,CAAC,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,SAAS,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;aAAE,CAAC;SACzE,CAAC;KACF,CAAC;IA6DI,gBAAgB,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7F,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;KAAE,CAAC;IAiE3D,sBAAsB,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAShD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EventEmitter}from"events";import{getBackupPlanStats,getSnapshotByTag,runResticCommand}from"../utils/restic/restic";import{generateResticRepoPath,resticPathToWindows}from"../utils/restic/helpers";import{DownloadHandler}from"./handlers/DownloadHandler";import{configService}from"../services/ConfigService";import{appPaths}from"../utils/AppPaths";import{
|
|
1
|
+
import{EventEmitter}from"events";import{readFile,writeFile}from"fs/promises";import{getBackupPlanStats,getSnapshotByTag,runResticCommand}from"../utils/restic/restic";import{generateResticRepoPath,resticPathToWindows}from"../utils/restic/helpers";import{DownloadHandler}from"./handlers/DownloadHandler";import{configService}from"../services/ConfigService";import{appPaths}from"../utils/AppPaths";import{jobQueue}from"../jobs/JobQueue";export class BaseSnapshotManager extends EventEmitter{downloadHandler;constructor(){super(),this.downloadHandler=new DownloadHandler(this)}async listSnapshots(){return runResticCommand(["snapshots","--json"])}async downloadSnapshot(planId,backupId,snapShotPath,options){try{const{success:success,result:result}=await getSnapshotByTag("backup-"+backupId,options);return success&&"string"!=typeof result?(this.downloadHandler.download(planId,backupId,result.id,options),{success:!0,result:"Generating Download.."}):{success:success,result:result}}catch(error){return{success:!1,result:error?.message||""}}}async getSnapshotDownload(planId,backupId){try{return{success:!0,result:await this.downloadHandler.get(planId,backupId)}}catch(error){return{success:!1,result:error?.message||""}}}async cancelSnapshotDownload(planId,backupId){try{return{success:await this.downloadHandler.cancel(planId,backupId),result:"Download cancelled"}}catch(error){return{success:!1,result:error?.message||""}}}async removeSnapshot(planId,backupId,options){try{const{storageName:storageName,storagePath:storagePath,encryption:encryption}=options,repoPassword=encryption?configService.config.ENCRYPTION_KEY:"",reposToRemove=[{id:"primary",name:storageName,path:storagePath}],planStats={primary:null,mirrors:{}},removalOutput={};options.mirrors&&options.mirrors.forEach(mirror=>{reposToRemove.push({id:mirror.replicationId,name:mirror.storageName,path:mirror.storagePath})});for(const repo of reposToRemove){const repoPath=generateResticRepoPath(repo.name,repo.path||""),{success:success,result:result}=await getSnapshotByTag("backup-"+backupId,{storageName:repo.name,storagePath:repo.path,encryption:encryption});if(!success||"string"==typeof result)continue;const snapshotId=result.id,output=await runResticCommand(["-r",repoPath,"forget",snapshotId,"--json"],{RESTIC_PASSWORD:repoPassword});removalOutput[repo.id]=output;const repoStats=await getBackupPlanStats(planId,repo.name,repo.path,encryption);"primary"===repo.id?planStats.primary=repoStats||{total_size:0,snapshots:[]}:repoStats&&(planStats.mirrors[repo.id]=repoStats)}return{success:!0,result:removalOutput,stats:planStats}}catch(error){return{success:!1,result:error?.message||""}}}async getSnapshotFiles(backupId,options){const filename=`backup-${backupId}-snapshot.json`,snapshotFilePath=`${appPaths.getCacheDir()}/${filename}`;if(!options.skipCache)try{const snapshotCache=await readFile(snapshotFilePath,"utf8");return{success:!0,result:JSON.parse(snapshotCache)}}catch(error){}try{let snapshotId;const{success:success,result:result}=await getSnapshotByTag("backup-"+backupId,options);if(!success||"string"==typeof result)return{success:!1,result:"Snapshot not found"};snapshotId=result.id;const{storageName:storageName,storagePath:storagePath,encryption:encryption}=options,repoPassword=encryption?configService.config.ENCRYPTION_KEY:"",repoPath=generateResticRepoPath(storageName,storagePath||""),output=await runResticCommand(["ls","-r",repoPath,snapshotId,"--json","--long"],{RESTIC_PASSWORD:repoPassword}),files=output.split(/\r?\n/).filter(line=>""!==line.trim()).map(item=>JSON.parse(item)).filter(item=>void 0!==item.path).map(item=>({name:item.name,path:item.path,srcPath:"win32"===process.platform?resticPathToWindows(item.path):item.path.replace(/\\/g,"/"),type:item.type,isDirectory:"dir"===item.type,size:item.size||0,modifiedAt:item.mtime,owner:"",permissions:item.permissions,isAvailable:!0}));return options.skipCache||await writeFile(snapshotFilePath,JSON.stringify(files),"utf8"),{success:!0,result:files}}catch(error){return{success:!1,result:error?.message||"Failed to get snapshot files"}}}async retryFailedReplication(planId,backupId,replicationIds){return jobQueue.add("ReplicationRetry",{planId:planId,backupId:backupId,failedReplicationIds:replicationIds}),{success:!0,result:"Replication retry queued"}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSnapshotManager.js","sourceRoot":"","sources":["../../src/managers/BaseSnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"BaseSnapshotManager.js","sourceRoot":"","sources":["../../src/managers/BaseSnapshotManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,16 @@ export interface ProgressEvent {
|
|
|
17
17
|
error?: string;
|
|
18
18
|
completed: boolean;
|
|
19
19
|
}
|
|
20
|
+
export interface ReplicationProgress {
|
|
21
|
+
replicationId: string;
|
|
22
|
+
storageId: string;
|
|
23
|
+
storageName: string;
|
|
24
|
+
storageType: string;
|
|
25
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'retrying';
|
|
26
|
+
resticData?: ResticProgress;
|
|
27
|
+
error?: string;
|
|
28
|
+
events: ProgressEvent[];
|
|
29
|
+
}
|
|
20
30
|
export interface BackupProgressFile {
|
|
21
31
|
planId: string;
|
|
22
32
|
backupId: string;
|
|
@@ -25,6 +35,7 @@ export interface BackupProgressFile {
|
|
|
25
35
|
lastUpdate: string;
|
|
26
36
|
duration?: number;
|
|
27
37
|
events: ProgressEvent[];
|
|
38
|
+
mirrors?: Record<string, ReplicationProgress>;
|
|
28
39
|
}
|
|
29
40
|
export declare class ProgressManager {
|
|
30
41
|
private progressDir;
|
|
@@ -58,6 +69,23 @@ export declare class ProgressManager {
|
|
|
58
69
|
* Marks backup as completed
|
|
59
70
|
*/
|
|
60
71
|
markCompleted(planId: string, backupId: string, success: boolean, errorMsg?: string, finalFail?: boolean): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Initialize replication entries in the progress file
|
|
74
|
+
*/
|
|
75
|
+
initializeReplications(planId: string, backupId: string, mirrors: {
|
|
76
|
+
replicationId: string;
|
|
77
|
+
storageId: string;
|
|
78
|
+
storageName: string;
|
|
79
|
+
storageType: string;
|
|
80
|
+
}[]): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Update a specific replication's progress action
|
|
83
|
+
*/
|
|
84
|
+
updateReplicationAction(planId: string, backupId: string, replicationId: string, action: string, completed: boolean, error?: string): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Update a specific replication's restic progress data
|
|
87
|
+
*/
|
|
88
|
+
updateReplicationResticProgress(planId: string, backupId: string, replicationId: string, resticChunk: string): Promise<void>;
|
|
61
89
|
/**
|
|
62
90
|
* Reads progress data from file. Now public but safe.
|
|
63
91
|
*/
|