@futo-org/backups-orchestrator-api 0.45.0 → 0.47.0

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.
Files changed (43) hide show
  1. package/dist/controllers/config.controller.d.ts +8 -0
  2. package/dist/controllers/config.controller.js +52 -0
  3. package/dist/controllers/config.controller.js.map +1 -0
  4. package/dist/controllers/integrations.controller.d.ts +3 -1
  5. package/dist/controllers/integrations.controller.js +19 -0
  6. package/dist/controllers/integrations.controller.js.map +1 -1
  7. package/dist/dto/config.dto.d.ts +24 -0
  8. package/dist/dto/config.dto.js +26 -0
  9. package/dist/dto/config.dto.js.map +1 -0
  10. package/dist/dto/integrations.dto.d.ts +17 -0
  11. package/dist/dto/integrations.dto.js +18 -1
  12. package/dist/dto/integrations.dto.js.map +1 -1
  13. package/dist/enum.d.ts +4 -1
  14. package/dist/enum.js +3 -0
  15. package/dist/enum.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/moduleConfig.d.ts +10 -1
  19. package/dist/moduleConfig.js.map +1 -1
  20. package/dist/orchestrationApi.module.d.ts +4 -2
  21. package/dist/orchestrationApi.module.js +4 -0
  22. package/dist/orchestrationApi.module.js.map +1 -1
  23. package/dist/proxy/resticProxy.d.ts +8 -1
  24. package/dist/proxy/resticProxy.js +13 -4
  25. package/dist/proxy/resticProxy.js.map +1 -1
  26. package/dist/proxy/resticProxyPool.d.ts +11 -3
  27. package/dist/proxy/resticProxyPool.js +35 -4
  28. package/dist/proxy/resticProxyPool.js.map +1 -1
  29. package/dist/repositories/config.repository.d.ts +6 -0
  30. package/dist/repositories/config.repository.js +26 -6
  31. package/dist/repositories/config.repository.js.map +1 -1
  32. package/dist/services/bootstrap.service.d.ts +3 -1
  33. package/dist/services/bootstrap.service.js +6 -1
  34. package/dist/services/bootstrap.service.js.map +1 -1
  35. package/dist/services/config.service.d.ts +11 -0
  36. package/dist/services/config.service.js +46 -0
  37. package/dist/services/config.service.js.map +1 -0
  38. package/dist/services/integrations.service.d.ts +6 -2
  39. package/dist/services/integrations.service.js +22 -3
  40. package/dist/services/integrations.service.js.map +1 -1
  41. package/dist/services/repository.service.js +28 -2
  42. package/dist/services/repository.service.js.map +1 -1
  43. package/package.json +2 -2
@@ -0,0 +1,8 @@
1
+ import { ConfigResponseDto, ConfigUpdateRequestDto } from '../dto/config.dto';
2
+ import { ConfigService } from '../services/config.service';
3
+ export declare class ConfigController {
4
+ private readonly service;
5
+ constructor(service: ConfigService);
6
+ getConfig(): ConfigResponseDto;
7
+ updateConfig(dto: ConfigUpdateRequestDto): Promise<ConfigResponseDto>;
8
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConfigController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const config_dto_1 = require("../dto/config.dto");
19
+ const config_service_1 = require("../services/config.service");
20
+ let ConfigController = class ConfigController {
21
+ service;
22
+ constructor(service) {
23
+ this.service = service;
24
+ }
25
+ getConfig() {
26
+ return this.service.getConfig();
27
+ }
28
+ updateConfig(dto) {
29
+ return this.service.updateConfig(dto);
30
+ }
31
+ };
32
+ exports.ConfigController = ConfigController;
33
+ __decorate([
34
+ (0, common_1.Get)(),
35
+ (0, swagger_1.ApiOkResponse)({ type: config_dto_1.ConfigResponseDto }),
36
+ __metadata("design:type", Function),
37
+ __metadata("design:paramtypes", []),
38
+ __metadata("design:returntype", config_dto_1.ConfigResponseDto)
39
+ ], ConfigController.prototype, "getConfig", null);
40
+ __decorate([
41
+ (0, common_1.Put)(),
42
+ (0, swagger_1.ApiOkResponse)({ type: config_dto_1.ConfigResponseDto }),
43
+ __param(0, (0, common_1.Body)()),
44
+ __metadata("design:type", Function),
45
+ __metadata("design:paramtypes", [config_dto_1.ConfigUpdateRequestDto]),
46
+ __metadata("design:returntype", Promise)
47
+ ], ConfigController.prototype, "updateConfig", null);
48
+ exports.ConfigController = ConfigController = __decorate([
49
+ (0, common_1.Controller)('/yucca/config'),
50
+ __metadata("design:paramtypes", [config_service_1.ConfigService])
51
+ ], ConfigController);
52
+ //# sourceMappingURL=config.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.controller.js","sourceRoot":"","sources":["../../src/controllers/config.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,6CAAgD;AAChD,kDAA8E;AAC9E,+DAA2D;AAGpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAIvD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAID,YAAY,CAAS,GAA2B;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAdY,4CAAgB;AAK3B;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,8BAAiB,EAAE,CAAC;;;oCAC9B,8BAAiB;iDAE7B;AAID;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,8BAAiB,EAAE,CAAC;IAC7B,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,mCAAsB;;oDAE/C;2BAbU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAEY,8BAAa;GADxC,gBAAgB,CAc5B"}
@@ -1,4 +1,4 @@
1
- import { ConfigureImmichIntegrationRequestDto, ConfigureImmichIntegrationResponseDto, ImmichBackupStatusDto, ImmichRollbackRequestDto, IntegrationsResponseDto } from '../dto/integrations.dto';
1
+ import { ConfigureImmichDatabaseDumpRequestDto, ConfigureImmichIntegrationRequestDto, ConfigureImmichIntegrationResponseDto, ImmichBackupStatusDto, ImmichRollbackRequestDto, IntegrationsResponseDto } from '../dto/integrations.dto';
2
2
  import { type Response } from 'express';
3
3
  import { IntegrationsService } from '../services/integrations.service';
4
4
  export declare class IntegrationsController {
@@ -7,5 +7,7 @@ export declare class IntegrationsController {
7
7
  getIntegrations(): Promise<IntegrationsResponseDto>;
8
8
  getImmichBackupStatus(): Promise<ImmichBackupStatusDto>;
9
9
  configureImmichIntegration(dto: ConfigureImmichIntegrationRequestDto): Promise<ConfigureImmichIntegrationResponseDto>;
10
+ ignoreImmichDatabaseDumpWarning(): Promise<void>;
11
+ configureImmichDatabaseDump(dto: ConfigureImmichDatabaseDumpRequestDto): Promise<void>;
10
12
  startImmichRollback(dto: ImmichRollbackRequestDto, response: Response): Promise<void>;
11
13
  }
@@ -32,6 +32,12 @@ let IntegrationsController = class IntegrationsController {
32
32
  configureImmichIntegration(dto) {
33
33
  return this.service.configureImmichIntegration(dto);
34
34
  }
35
+ ignoreImmichDatabaseDumpWarning() {
36
+ return this.service.ignoreImmichDatabaseDumpWarning();
37
+ }
38
+ configureImmichDatabaseDump(dto) {
39
+ return this.service.configureImmichDatabaseDump(dto);
40
+ }
35
41
  async startImmichRollback(dto, response) {
36
42
  const { jwt } = await this.service.enterImmichMaintenanceRollback(dto);
37
43
  response.cookie(enum_1.ImmichCookie.MaintenanceToken, jwt);
@@ -60,6 +66,19 @@ __decorate([
60
66
  __metadata("design:paramtypes", [integrations_dto_1.ConfigureImmichIntegrationRequestDto]),
61
67
  __metadata("design:returntype", Promise)
62
68
  ], IntegrationsController.prototype, "configureImmichIntegration", null);
69
+ __decorate([
70
+ (0, common_1.Post)('immich/database-dump/ignore-warning'),
71
+ __metadata("design:type", Function),
72
+ __metadata("design:paramtypes", []),
73
+ __metadata("design:returntype", Promise)
74
+ ], IntegrationsController.prototype, "ignoreImmichDatabaseDumpWarning", null);
75
+ __decorate([
76
+ (0, common_1.Post)('immich/database-dump'),
77
+ __param(0, (0, common_1.Body)()),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", [integrations_dto_1.ConfigureImmichDatabaseDumpRequestDto]),
80
+ __metadata("design:returntype", Promise)
81
+ ], IntegrationsController.prototype, "configureImmichDatabaseDump", null);
63
82
  __decorate([
64
83
  (0, common_1.Post)('immich/rollback'),
65
84
  __param(0, (0, common_1.Body)()),
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.controller.js","sourceRoot":"","sources":["../../src/controllers/integrations.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAoE;AACpE,8DAMiC;AAGjC,kCAAuC;AACvC,2EAAuE;AAGhE,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAI7D,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,qBAAqB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,0BAA0B,CAChB,GAAyC;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAS,GAA6B,EAA8B,QAAkB;QAC7G,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;QACvE,QAAQ,CAAC,MAAM,CAAC,mBAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AA5BY,wDAAsB;AAKjC;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,0CAAuB,EAAE,CAAC;;;;6DAGhD;AAID;IAFC,IAAA,YAAG,EAAC,eAAe,CAAC;IACpB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,wCAAqB,EAAE,CAAC;;;;mEAG9C;AAID;IAFC,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,4BAAkB,EAAC,EAAE,IAAI,EAAE,wDAAqC,EAAE,CAAC;IAEjE,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,uDAAoC;;wEAGlD;AAGK;IADL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACG,WAAA,IAAA,aAAI,GAAE,CAAA;IAAiC,WAAA,IAAA,YAAG,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAArD,2CAAwB;;iEAG9D;iCA3BU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,qBAAqB,CAAC;qCAEM,0CAAmB;GAD9C,sBAAsB,CA4BlC"}
1
+ {"version":3,"file":"integrations.controller.js","sourceRoot":"","sources":["../../src/controllers/integrations.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAoE;AACpE,8DAOiC;AAGjC,kCAAuC;AACvC,2EAAuE;AAGhE,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAI7D,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,qBAAqB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,0BAA0B,CAChB,GAAyC;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAGD,+BAA+B;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;IACxD,CAAC;IAGD,2BAA2B,CAAS,GAA0C;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAS,GAA6B,EAA8B,QAAkB;QAC7G,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;QACvE,QAAQ,CAAC,MAAM,CAAC,mBAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AAtCY,wDAAsB;AAKjC;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,0CAAuB,EAAE,CAAC;;;;6DAGhD;AAID;IAFC,IAAA,YAAG,EAAC,eAAe,CAAC;IACpB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,wCAAqB,EAAE,CAAC;;;;mEAG9C;AAID;IAFC,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,4BAAkB,EAAC,EAAE,IAAI,EAAE,wDAAqC,EAAE,CAAC;IAEjE,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,uDAAoC;;wEAGlD;AAGD;IADC,IAAA,aAAI,EAAC,qCAAqC,CAAC;;;;6EAG3C;AAGD;IADC,IAAA,aAAI,EAAC,sBAAsB,CAAC;IACA,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,wDAAqC;;yEAE7E;AAGK;IADL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACG,WAAA,IAAA,aAAI,GAAE,CAAA;IAAiC,WAAA,IAAA,YAAG,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAArD,2CAAwB;;iEAG9D;iCArCU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,qBAAqB,CAAC;qCAEM,0CAAmB;GAD9C,sBAAsB,CAsClC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ declare const BandwidthDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
3
+ bytesPerSec: z.ZodNumber;
4
+ quietHours: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>, false>;
6
+ export declare class BandwidthDto extends BandwidthDto_base {
7
+ }
8
+ declare const ConfigUpdateRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
9
+ bandwidth: z.ZodObject<{
10
+ bytesPerSec: z.ZodNumber;
11
+ quietHours: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>;
13
+ }, z.core.$strip>, false>;
14
+ export declare class ConfigUpdateRequestDto extends ConfigUpdateRequestDto_base {
15
+ }
16
+ declare const ConfigResponseDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
17
+ bandwidth: z.ZodObject<{
18
+ bytesPerSec: z.ZodNumber;
19
+ quietHours: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ }, z.core.$strip>, false>;
22
+ export declare class ConfigResponseDto extends ConfigResponseDto_base {
23
+ }
24
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigResponseDto = exports.ConfigUpdateRequestDto = exports.BandwidthDto = void 0;
4
+ const nestjs_zod_1 = require("nestjs-zod");
5
+ const zod_1 = require("zod");
6
+ const QuietHoursSchema = zod_1.z
7
+ .string()
8
+ .regex(/^([01]\d|2[0-3]):[0-5]\d-([01]\d|2[0-3]):[0-5]\d$/, 'Invalid quiet hours, expected HH:MM-HH:MM');
9
+ const BandwidthSchema = zod_1.z
10
+ .object({
11
+ bytesPerSec: zod_1.z.number().int().min(0),
12
+ quietHours: QuietHoursSchema.optional(),
13
+ })
14
+ .meta({ id: 'BandwidthDto' });
15
+ const ConfigUpdateRequestSchema = zod_1.z.object({ bandwidth: BandwidthSchema }).meta({ id: 'ConfigUpdateRequestDto' });
16
+ const ConfigResponseSchema = zod_1.z.object({ bandwidth: BandwidthSchema }).meta({ id: 'ConfigResponseDto' });
17
+ class BandwidthDto extends (0, nestjs_zod_1.createZodDto)(BandwidthSchema) {
18
+ }
19
+ exports.BandwidthDto = BandwidthDto;
20
+ class ConfigUpdateRequestDto extends (0, nestjs_zod_1.createZodDto)(ConfigUpdateRequestSchema) {
21
+ }
22
+ exports.ConfigUpdateRequestDto = ConfigUpdateRequestDto;
23
+ class ConfigResponseDto extends (0, nestjs_zod_1.createZodDto)(ConfigResponseSchema) {
24
+ }
25
+ exports.ConfigResponseDto = ConfigResponseDto;
26
+ //# sourceMappingURL=config.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.dto.js","sourceRoot":"","sources":["../../src/dto/config.dto.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAC1C,6BAAwB;AAExB,MAAM,gBAAgB,GAAG,OAAC;KACvB,MAAM,EAAE;KACR,KAAK,CAAC,mDAAmD,EAAE,2CAA2C,CAAC,CAAC;AAE3G,MAAM,eAAe,GAAG,OAAC;KACtB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AAEhC,MAAM,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAElH,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAExG,MAAa,YAAa,SAAQ,IAAA,yBAAY,EAAC,eAAe,CAAC;CAAG;AAAlE,oCAAkE;AAClE,MAAa,sBAAuB,SAAQ,IAAA,yBAAY,EAAC,yBAAyB,CAAC;CAAG;AAAtF,wDAAsF;AACtF,MAAa,iBAAkB,SAAQ,IAAA,yBAAY,EAAC,oBAAoB,CAAC;CAAG;AAA5E,8CAA4E"}
@@ -144,6 +144,11 @@ declare const ImmichBackupStatusDto_base: import("nestjs-zod").ZodDto<z.ZodObjec
144
144
  status: z.ZodEnum<typeof import("../enum").TaskStatus>;
145
145
  type: z.ZodEnum<typeof import("../enum").TaskType>;
146
146
  }, z.core.$strip>>;
147
+ databaseDump: z.ZodOptional<z.ZodObject<{
148
+ enabled: z.ZodBoolean;
149
+ keepLastAmount: z.ZodInt;
150
+ }, z.core.$strip>>;
151
+ databaseDumpWarningIgnored: z.ZodOptional<z.ZodBoolean>;
147
152
  }, z.core.$strip>, false>;
148
153
  export declare class ImmichBackupStatusDto extends ImmichBackupStatusDto_base {
149
154
  }
@@ -173,6 +178,18 @@ declare const ConfigureImmichIntegrationResponseDto_base: import("nestjs-zod").Z
173
178
  }, z.core.$strip>, false>;
174
179
  export declare class ConfigureImmichIntegrationResponseDto extends ConfigureImmichIntegrationResponseDto_base {
175
180
  }
181
+ declare const ImmichDatabaseDumpConfigDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
182
+ enabled: z.ZodBoolean;
183
+ keepLastAmount: z.ZodInt;
184
+ }, z.core.$strip>, false>;
185
+ export declare class ImmichDatabaseDumpConfigDto extends ImmichDatabaseDumpConfigDto_base {
186
+ }
187
+ declare const ConfigureImmichDatabaseDumpRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
188
+ enabled: z.ZodOptional<z.ZodBoolean>;
189
+ keepLastAmount: z.ZodOptional<z.ZodInt>;
190
+ }, z.core.$strip>, false>;
191
+ export declare class ConfigureImmichDatabaseDumpRequestDto extends ConfigureImmichDatabaseDumpRequestDto_base {
192
+ }
176
193
  declare const ImmichRollbackRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
177
194
  repositoryId: z.ZodString;
178
195
  snapshotId: z.ZodString;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ImmichRollbackRequestDto = exports.ConfigureImmichIntegrationResponseDto = exports.ConfigureImmichIntegrationRequestDto = exports.ImmichBackupStatusDto = exports.IntegrationsResponseDto = exports.ImmichIntegrationDto = exports.ImmichIntegrationConfigurationDto = exports.ImmichStateDto = exports.ImmichLibraryDto = void 0;
3
+ exports.ImmichRollbackRequestDto = exports.ConfigureImmichDatabaseDumpRequestDto = exports.ImmichDatabaseDumpConfigDto = exports.ConfigureImmichIntegrationResponseDto = exports.ConfigureImmichIntegrationRequestDto = exports.ImmichBackupStatusDto = exports.IntegrationsResponseDto = exports.ImmichIntegrationDto = exports.ImmichIntegrationConfigurationDto = exports.ImmichStateDto = exports.ImmichLibraryDto = void 0;
4
4
  const nestjs_zod_1 = require("nestjs-zod");
5
5
  const zod_1 = require("zod");
6
6
  const backend_dto_1 = require("./backend.dto");
@@ -42,6 +42,12 @@ const IntegrationsResponseSchema = zod_1.z
42
42
  immichIntegration: ImmichIntegrationSchema.optional(),
43
43
  })
44
44
  .meta({ id: 'IntegrationsResponseDto' });
45
+ const ImmichDatabaseDumpConfigSchema = zod_1.z
46
+ .object({
47
+ enabled: zod_1.z.boolean(),
48
+ keepLastAmount: zod_1.z.int().min(1),
49
+ })
50
+ .meta({ id: 'ImmichDatabaseDumpConfigDto' });
45
51
  const ImmichBackupStatusSchema = zod_1.z
46
52
  .object({
47
53
  integration: ImmichIntegrationSchema.optional(),
@@ -49,6 +55,8 @@ const ImmichBackupStatusSchema = zod_1.z
49
55
  backend: backend_dto_1.BackendSchema.optional(),
50
56
  schedule: schedule_dto_1.ScheduleSchema.optional(),
51
57
  latestBackupRun: repository_dto_1.RunSchema.optional(),
58
+ databaseDump: ImmichDatabaseDumpConfigSchema.optional(),
59
+ databaseDumpWarningIgnored: zod_1.z.boolean().optional(),
52
60
  })
53
61
  .meta({ id: 'ImmichBackupStatusDto' });
54
62
  const ConfigureImmichIntegrationRequestSchema = zod_1.z
@@ -69,6 +77,9 @@ const ConfigureImmichIntegrationResponseSchema = zod_1.z
69
77
  repositoryId: zod_1.z.string(),
70
78
  })
71
79
  .meta({ id: 'ConfigureImmichIntegrationResponseDto' });
80
+ const ConfigureImmichDatabaseDumpRequestSchema = ImmichDatabaseDumpConfigSchema.partial().meta({
81
+ id: 'ConfigureImmichDatabaseDumpRequestDto',
82
+ });
72
83
  const ImmichRollbackRequestSchema = zod_1.z
73
84
  .object({
74
85
  repositoryId: zod_1.z.string(),
@@ -100,6 +111,12 @@ exports.ConfigureImmichIntegrationRequestDto = ConfigureImmichIntegrationRequest
100
111
  class ConfigureImmichIntegrationResponseDto extends (0, nestjs_zod_1.createZodDto)(ConfigureImmichIntegrationResponseSchema) {
101
112
  }
102
113
  exports.ConfigureImmichIntegrationResponseDto = ConfigureImmichIntegrationResponseDto;
114
+ class ImmichDatabaseDumpConfigDto extends (0, nestjs_zod_1.createZodDto)(ImmichDatabaseDumpConfigSchema) {
115
+ }
116
+ exports.ImmichDatabaseDumpConfigDto = ImmichDatabaseDumpConfigDto;
117
+ class ConfigureImmichDatabaseDumpRequestDto extends (0, nestjs_zod_1.createZodDto)(ConfigureImmichDatabaseDumpRequestSchema) {
118
+ }
119
+ exports.ConfigureImmichDatabaseDumpRequestDto = ConfigureImmichDatabaseDumpRequestDto;
103
120
  class ImmichRollbackRequestDto extends (0, nestjs_zod_1.createZodDto)(ImmichRollbackRequestSchema) {
104
121
  }
105
122
  exports.ImmichRollbackRequestDto = ImmichRollbackRequestDto;
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.dto.js","sourceRoot":"","sources":["../../src/dto/integrations.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrations.dto.js","sourceRoot":"","sources":["../../src/dto/integrations.dto.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAC1C,6BAAwB;AACxB,+CAA8C;AAC9C,qDAA2F;AAC3F,iDAAgD;AAEhD,MAAM,eAAe,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,OAAC;KAC1B,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;CACvC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEpC,MAAM,iBAAiB,GAAG,OAAC;KACxB,MAAM,CAAC;IACN,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACxC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAElC,MAAM,oCAAoC,GAAG,OAAC;KAC3C,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,eAAe;CAC3B,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,mCAAmC,EAAE,CAAC,CAAC;AAErD,MAAM,uBAAuB,GAAG,OAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,oCAAoC;CACpD,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAExC,MAAM,0BAA0B,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACzC,iBAAiB,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CACtD,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAE3C,MAAM,8BAA8B,GAAG,OAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;IACpB,cAAc,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,6BAA6B,EAAE,CAAC,CAAC;AAE/C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,WAAW,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,sCAAqB,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,2BAAa,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,6BAAc,CAAC,QAAQ,EAAE;IACnC,eAAe,EAAE,0BAAS,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,8BAA8B,CAAC,QAAQ,EAAE;IACvD,0BAA0B,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAEzC,MAAM,uCAAuC,GAAG,OAAC;KAC9C,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE;IACjB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,eAAe;IAC1B,eAAe,EAAE,sCAAqB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5D,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,sCAAsC,EAAE,CAAC,CAAC;AAExD,MAAM,wCAAwC,GAAG,OAAC;KAC/C,MAAM,CAAC;IACN,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CACzB,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,uCAAuC,EAAE,CAAC,CAAC;AAEzD,MAAM,wCAAwC,GAAG,8BAA8B,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;IAC7F,EAAE,EAAE,uCAAuC;CAC5C,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAE5C,MAAa,gBAAiB,SAAQ,IAAA,yBAAY,EAAC,mBAAmB,CAAC;CAAG;AAA1E,4CAA0E;AAC1E,MAAa,cAAe,SAAQ,IAAA,yBAAY,EAAC,iBAAiB,CAAC;CAAG;AAAtE,wCAAsE;AACtE,MAAa,iCAAkC,SAAQ,IAAA,yBAAY,EAAC,oCAAoC,CAAC;CAAG;AAA5G,8EAA4G;AAC5G,MAAa,oBAAqB,SAAQ,IAAA,yBAAY,EAAC,uBAAuB,CAAC;CAAG;AAAlF,oDAAkF;AAClF,MAAa,uBAAwB,SAAQ,IAAA,yBAAY,EAAC,0BAA0B,CAAC;CAAG;AAAxF,0DAAwF;AACxF,MAAa,qBAAsB,SAAQ,IAAA,yBAAY,EAAC,wBAAwB,CAAC;CAAG;AAApF,sDAAoF;AACpF,MAAa,oCAAqC,SAAQ,IAAA,yBAAY,EAAC,uCAAuC,CAAC;CAAG;AAAlH,oFAAkH;AAClH,MAAa,qCAAsC,SAAQ,IAAA,yBAAY,EAAC,wCAAwC,CAAC;CAAG;AAApH,sFAAoH;AACpH,MAAa,2BAA4B,SAAQ,IAAA,yBAAY,EAAC,8BAA8B,CAAC;CAAG;AAAhG,kEAAgG;AAChG,MAAa,qCAAsC,SAAQ,IAAA,yBAAY,EAAC,wCAAwC,CAAC;CAAG;AAApH,sFAAoH;AACpH,MAAa,wBAAyB,SAAQ,IAAA,yBAAY,EAAC,2BAA2B,CAAC;CAAG;AAA1F,4DAA0F"}
package/dist/enum.d.ts CHANGED
@@ -19,9 +19,12 @@ export declare enum ConfigurationKey {
19
19
  OnboardedKey = "onboarded-key",
20
20
  Telemetry = "telemetry",
21
21
  SkippedOnboardingExtraConfig = "skipped-onboarding-extra-config",
22
+ IgnoredImmichDatabaseDumpWarning = "ignored-immich-database-dump-warning",
22
23
  ResticOptionRestConnections = "restic-o-rest-connections",
23
24
  SessionSecret = "session-secret",
24
- StatePath = "state-path"
25
+ StatePath = "state-path",
26
+ ThrottleBytesPerSec = "throttle-bytes-per-sec",
27
+ ThrottleQuietHours = "throttle-quiet-hours"
25
28
  }
26
29
  export declare enum MetadataKey {
27
30
  PublicRoute = "public-route"
package/dist/enum.js CHANGED
@@ -26,9 +26,12 @@ var ConfigurationKey;
26
26
  ConfigurationKey["OnboardedKey"] = "onboarded-key";
27
27
  ConfigurationKey["Telemetry"] = "telemetry";
28
28
  ConfigurationKey["SkippedOnboardingExtraConfig"] = "skipped-onboarding-extra-config";
29
+ ConfigurationKey["IgnoredImmichDatabaseDumpWarning"] = "ignored-immich-database-dump-warning";
29
30
  ConfigurationKey["ResticOptionRestConnections"] = "restic-o-rest-connections";
30
31
  ConfigurationKey["SessionSecret"] = "session-secret";
31
32
  ConfigurationKey["StatePath"] = "state-path";
33
+ ConfigurationKey["ThrottleBytesPerSec"] = "throttle-bytes-per-sec";
34
+ ConfigurationKey["ThrottleQuietHours"] = "throttle-quiet-hours";
32
35
  })(ConfigurationKey || (exports.ConfigurationKey = ConfigurationKey = {}));
33
36
  var MetadataKey;
34
37
  (function (MetadataKey) {
package/dist/enum.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;IAC5B,yDAA2C,CAAA;IAC3C,0CAA4B,CAAA;IAC5B,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,gEAAkD,CAAA;AACpD,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,6DAA6C,CAAA;AAC/C,CAAC,EAFW,YAAY,4BAAZ,YAAY,QAEvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,sDAAsC,CAAA;IACtC,uDAAuC,CAAA;AACzC,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,oDAAgC,CAAA;IAChC,kDAA8B,CAAA;IAC9B,2CAAuB,CAAA;IACvB,oFAAgE,CAAA;IAChE,6EAAyD,CAAA;IACzD,oDAAgC,CAAA;IAChC,4CAAwB,CAAA;AAC1B,CAAC,EARW,gBAAgB,gCAAhB,gBAAgB,QAQ3B;AAED,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,2CAA4B,CAAA;AAC9B,CAAC,EAFW,WAAW,2BAAX,WAAW,QAEtB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,wBAAS,CAAA;AACX,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IACrB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;AACnB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AAED,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,mEAAkD,CAAA;AACpD,CAAC,EAFW,aAAa,6BAAb,aAAa,QAExB;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,yDAA8B,CAAA;IAC9B,kEAAuC,CAAA;IACvC,yDAA8B,CAAA;IAC9B,8CAAmB,CAAA;AACrB,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,kCAAe,CAAA;IACf,kCAAe,CAAA;AACjB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,yEAAsD,CAAA;AACxD,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B"}
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;IAC5B,yDAA2C,CAAA;IAC3C,0CAA4B,CAAA;IAC5B,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,gEAAkD,CAAA;AACpD,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,6DAA6C,CAAA;AAC/C,CAAC,EAFW,YAAY,4BAAZ,YAAY,QAEvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,sDAAsC,CAAA;IACtC,uDAAuC,CAAA;AACzC,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,gBAWX;AAXD,WAAY,gBAAgB;IAC1B,oDAAgC,CAAA;IAChC,kDAA8B,CAAA;IAC9B,2CAAuB,CAAA;IACvB,oFAAgE,CAAA;IAChE,6FAAyE,CAAA;IACzE,6EAAyD,CAAA;IACzD,oDAAgC,CAAA;IAChC,4CAAwB,CAAA;IACxB,kEAA8C,CAAA;IAC9C,+DAA2C,CAAA;AAC7C,CAAC,EAXW,gBAAgB,gCAAhB,gBAAgB,QAW3B;AAED,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,2CAA4B,CAAA;AAC9B,CAAC,EAFW,WAAW,2BAAX,WAAW,QAEtB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,wBAAS,CAAA;AACX,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IACrB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;AACnB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AAED,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,mEAAkD,CAAA;AACpD,CAAC,EAFW,aAAa,6BAAb,aAAa,QAExB;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,yDAA8B,CAAA;IAC9B,kEAAuC,CAAA;IACvC,yDAA8B,CAAA;IAC9B,8CAAmB,CAAA;AACrB,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,kCAAe,CAAA;IACf,kCAAe,CAAA;AACjB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,yEAAsD,CAAA;AACxD,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './const';
2
2
  export { EventsGateway, type GatewayEvent } from './events/events.gateway';
3
+ export type { ImmichDatabaseDumpConfig } from './moduleConfig';
3
4
  export * from './orchestrationApi.module';
4
5
  export { LoggingRepository } from './repositories/logging.repository';
5
6
  export { ModuleConfigRepository } from './repositories/moduleConfig.repository';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAA2E;AAAlE,+GAAA,aAAa,OAAA;AACtB,4DAA0C;AAC1C,wEAAsE;AAA7D,uHAAA,iBAAiB,OAAA;AAC1B,kFAAgF;AAAvE,iIAAA,sBAAsB,OAAA;AAC/B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,yCAAwF;AAA/E,2GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAA2E;AAAlE,+GAAA,aAAa,OAAA;AAEtB,4DAA0C;AAC1C,wEAAsE;AAA7D,uHAAA,iBAAiB,OAAA;AAC1B,kFAAgF;AAAvE,iIAAA,sBAAsB,OAAA;AAC/B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,yCAAwF;AAA/E,2GAAA,cAAc,OAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { Socket } from 'socket.io';
2
2
  import { GatewayEvent } from './events/events.gateway';
3
+ import type { ResticProxyThrottle } from './proxy/resticProxy';
3
4
  export declare const ModuleConfigProvider: unique symbol;
4
5
  export type AuthenticatedUser = {
5
6
  user: {
@@ -7,6 +8,10 @@ export type AuthenticatedUser = {
7
8
  };
8
9
  };
9
10
  export type AuthenticateFn = (client: Socket) => Promise<AuthenticatedUser>;
11
+ export type ImmichDatabaseDumpConfig = {
12
+ enabled: boolean;
13
+ keepLastAmount: number;
14
+ };
10
15
  export type ImmichIntegration = {
11
16
  dataPath: string;
12
17
  dataFolders: string[];
@@ -17,7 +22,10 @@ export type ImmichIntegration = {
17
22
  exclusionPatterns: string[];
18
23
  }[];
19
24
  hooks: {
20
- createDatabaseBackup(): Promise<string>;
25
+ createDatabaseBackup(signal: AbortSignal): Promise<string>;
26
+ cleanupDatabaseBackups(): Promise<void>;
27
+ getImmichDatabaseDumpConfig(): Promise<ImmichDatabaseDumpConfig>;
28
+ configureImmichDatabaseDump(config: Partial<ImmichDatabaseDumpConfig>): Promise<void>;
21
29
  enterMaintenanceRollback(repositoryId: string, snapshotId: string, backupFileName?: string): Promise<{
22
30
  jwt: string;
23
31
  }>;
@@ -32,6 +40,7 @@ export type ModuleConfig = {
32
40
  requireSession?: boolean;
33
41
  requireLock?: boolean;
34
42
  developmentMode?: boolean;
43
+ throttle?: ResticProxyThrottle;
35
44
  authenticate?: AuthenticateFn;
36
45
  onInternalEvent?: (event: GatewayEvent) => void;
37
46
  immichIntegration?: ImmichIntegration;
@@ -1 +1 @@
1
- {"version":3,"file":"moduleConfig.js","sourceRoot":"","sources":["../src/moduleConfig.ts"],"names":[],"mappings":";;;AAGa,QAAA,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"moduleConfig.js","sourceRoot":"","sources":["../src/moduleConfig.ts"],"names":[],"mappings":";;;AAIa,QAAA,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import { DynamicModule, FactoryProvider, ModuleMetadata } from '@nestjs/common';
2
2
  import { type SqliteDatabase } from 'kysely';
3
3
  import { AuthController } from './controllers/auth.controller';
4
4
  import { BackendController } from './controllers/backend.controller';
5
+ import { ConfigController } from './controllers/config.controller';
5
6
  import { DevelopmentController } from './controllers/development.controller';
6
7
  import { FilesystemController } from './controllers/filesystem.controller';
7
8
  import { IntegrationsController } from './controllers/integrations.controller';
@@ -30,6 +31,7 @@ import { StorageRepository } from './repositories/storage.repository';
30
31
  import { AuthService } from './services/auth.service';
31
32
  import { BackendService } from './services/backend.service';
32
33
  import { BootstrapService } from './services/bootstrap.service';
34
+ import { ConfigService } from './services/config.service';
33
35
  import { DevelopmentService } from './services/development.service';
34
36
  import { FilesystemService } from './services/filesystem.service';
35
37
  import { IntegrationsService } from './services/integrations.service';
@@ -41,9 +43,9 @@ import { ScheduleService } from './services/schedule.service';
41
43
  import { SessionService } from './services/session.service';
42
44
  import { TelemetryService } from './services/telemetry.service';
43
45
  import { YuccaService } from './services/yucca.service';
44
- export declare const controllers: (typeof AuthController | typeof BackendController | typeof DevelopmentController | typeof FilesystemController | typeof IntegrationsController | typeof OnboardingController | typeof RepositoryController | typeof RunHistoryController | typeof RunningTasksController | typeof ScheduleController)[];
46
+ export declare const controllers: (typeof AuthController | typeof BackendController | typeof ConfigController | typeof DevelopmentController | typeof FilesystemController | typeof IntegrationsController | typeof OnboardingController | typeof RepositoryController | typeof RunHistoryController | typeof RunningTasksController | typeof ScheduleController)[];
45
47
  export declare const repositories: (typeof ModuleConfigRepository | typeof LoggingRepository | typeof BackendRepository | typeof ConfigRepository | typeof RepositoryRepository | typeof BootstrapRepository | typeof StorageRepository | typeof DatabaseRepository | typeof RunHistoryRepository | typeof RepositoryIntegrationImmichRepository | typeof RunningTasksRepository | typeof ScheduleRepository | typeof RepositoryLocalMetricsRepository | typeof RepositoryPathRepository | typeof ResticRepository | typeof LockRepository)[];
46
- export declare const services: (typeof SessionService | typeof TelemetryService | typeof AuthService | typeof BackendService | typeof RunHistoryService | typeof RepositoryService | typeof BootstrapService | typeof ScheduleService | typeof DevelopmentService | typeof FilesystemService | typeof IntegrationsService | typeof OnboardingService | typeof RunningTasksService | typeof YuccaService)[];
48
+ export declare const services: (typeof SessionService | typeof TelemetryService | typeof AuthService | typeof BackendService | typeof ConfigService | typeof RunHistoryService | typeof RepositoryService | typeof BootstrapService | typeof ScheduleService | typeof DevelopmentService | typeof FilesystemService | typeof IntegrationsService | typeof OnboardingService | typeof RunningTasksService | typeof YuccaService)[];
47
49
  export declare function openStateDatabase(config: Pick<ModuleConfig, 'statePath'>, logger?: LoggingRepository): SqliteDatabase;
48
50
  export interface OrchestrationApiModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
49
51
  inject?: FactoryProvider['inject'];
@@ -25,6 +25,7 @@ const node_os_1 = require("node:os");
25
25
  const node_path_1 = require("node:path");
26
26
  const auth_controller_1 = require("./controllers/auth.controller");
27
27
  const backend_controller_1 = require("./controllers/backend.controller");
28
+ const config_controller_1 = require("./controllers/config.controller");
28
29
  const development_controller_1 = require("./controllers/development.controller");
29
30
  const filesystem_controller_1 = require("./controllers/filesystem.controller");
30
31
  const integrations_controller_1 = require("./controllers/integrations.controller");
@@ -57,6 +58,7 @@ const storage_repository_1 = require("./repositories/storage.repository");
57
58
  const auth_service_1 = require("./services/auth.service");
58
59
  const backend_service_1 = require("./services/backend.service");
59
60
  const bootstrap_service_1 = require("./services/bootstrap.service");
61
+ const config_service_1 = require("./services/config.service");
60
62
  const development_service_1 = require("./services/development.service");
61
63
  const filesystem_service_1 = require("./services/filesystem.service");
62
64
  const integrations_service_1 = require("./services/integrations.service");
@@ -72,6 +74,7 @@ const wellKnown_1 = require("./wellKnown");
72
74
  exports.controllers = [
73
75
  auth_controller_1.AuthController,
74
76
  backend_controller_1.BackendController,
77
+ config_controller_1.ConfigController,
75
78
  development_controller_1.DevelopmentController,
76
79
  filesystem_controller_1.FilesystemController,
77
80
  integrations_controller_1.IntegrationsController,
@@ -103,6 +106,7 @@ exports.services = [
103
106
  auth_service_1.AuthService,
104
107
  backend_service_1.BackendService,
105
108
  bootstrap_service_1.BootstrapService,
109
+ config_service_1.ConfigService,
106
110
  development_service_1.DevelopmentService,
107
111
  filesystem_service_1.FilesystemService,
108
112
  integrations_service_1.IntegrationsService,
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrationApi.module.js","sourceRoot":"","sources":["../src/orchestrationApi.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrationApi.module.js","sourceRoot":"","sources":["../src/orchestrationApi.module.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,18 @@
1
1
  import { ChildProcess } from 'node:child_process';
2
+ export type ResticProxyThrottle = {
3
+ bytesPerSec: number;
4
+ quietHours?: string;
5
+ };
6
+ export declare const UNTHROTTLED: ResticProxyThrottle;
2
7
  export declare class ResticProxy {
3
8
  readonly address: string;
4
9
  readonly port: number;
5
10
  readonly process: ChildProcess;
11
+ private readonly control;
6
12
  private constructor();
7
13
  static isAvailable(): Promise<boolean>;
8
- static create(apiUrl: string): Promise<ResticProxy>;
14
+ static create(apiUrl: string, throttle: ResticProxyThrottle): Promise<ResticProxy>;
9
15
  createUrl(repositoryId: string, accessToken: string): string;
16
+ throttle({ bytesPerSec, quietHours }: ResticProxyThrottle): void;
10
17
  stop(): Promise<void>;
11
18
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResticProxy = void 0;
3
+ exports.ResticProxy = exports.UNTHROTTLED = void 0;
4
4
  const node_child_process_1 = require("node:child_process");
5
5
  const node_events_1 = require("node:events");
6
6
  const promises_1 = require("node:fs/promises");
@@ -9,14 +9,17 @@ const node_readline_1 = require("node:readline");
9
9
  const RESTIC_PROXY_BIN = 'restic-proxy';
10
10
  const RESTIC_PROXY_READY_FD = 3;
11
11
  const RESTIC_PROXY_READY_TIMEOUT_MS = 10_000;
12
+ exports.UNTHROTTLED = { bytesPerSec: 0 };
12
13
  class ResticProxy {
13
14
  address;
14
15
  port;
15
16
  process;
16
- constructor(address, port, process) {
17
+ control;
18
+ constructor(address, port, process, control) {
17
19
  this.address = address;
18
20
  this.port = port;
19
21
  this.process = process;
22
+ this.control = control;
20
23
  }
21
24
  static async isAvailable() {
22
25
  for (const directory of (process.env.PATH ?? '').split(node_path_1.delimiter)) {
@@ -30,19 +33,21 @@ class ResticProxy {
30
33
  }
31
34
  return false;
32
35
  }
33
- static async create(apiUrl) {
36
+ static async create(apiUrl, throttle) {
34
37
  const child = (0, node_child_process_1.spawn)(RESTIC_PROXY_BIN, {
35
38
  env: {
36
39
  ...process.env,
37
40
  RESTIC_PROXY_API_URL: apiUrl,
38
41
  RESTIC_PROXY_PORT: '0',
39
42
  RESTIC_PROXY_READY_FD: String(RESTIC_PROXY_READY_FD),
43
+ RESTIC_PROXY_THROTTLE_BYTES_PER_SEC: String(throttle.bytesPerSec),
44
+ RESTIC_PROXY_THROTTLE_QUIET_HOURS: throttle.quietHours ?? '',
40
45
  },
41
46
  stdio: ['ignore', 'inherit', 'inherit', 'pipe'],
42
47
  });
43
48
  try {
44
49
  const { address, port } = await readReady(child);
45
- return new ResticProxy(address, port, child);
50
+ return new ResticProxy(address, port, child, child.stdio[RESTIC_PROXY_READY_FD]);
46
51
  }
47
52
  catch (error) {
48
53
  child.kill();
@@ -52,6 +57,10 @@ class ResticProxy {
52
57
  createUrl(repositoryId, accessToken) {
53
58
  return `rest:http://${repositoryId}:${accessToken}@${this.address}`;
54
59
  }
60
+ throttle({ bytesPerSec, quietHours }) {
61
+ const control = { type: 'throttle', throttle: { bytesPerSec, quietHours: quietHours ?? '' } };
62
+ this.control.write(`${JSON.stringify(control)}\n`);
63
+ }
55
64
  async stop() {
56
65
  if (this.process.exitCode !== null || this.process.signalCode !== null) {
57
66
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"resticProxy.js","sourceRoot":"","sources":["../../src/proxy/resticProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resticProxy.js","sourceRoot":"","sources":["../../src/proxy/resticProxy.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,17 @@
1
- import { OnApplicationShutdown } from '@nestjs/common';
2
- import { ResticProxy } from './resticProxy';
3
- export declare class ResticProxyPool implements OnApplicationShutdown {
1
+ import { OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
2
+ import type { ModuleConfig } from '../moduleConfig';
3
+ import { ModuleConfigRepository } from '../repositories/moduleConfig.repository';
4
+ import { ResticProxy, ResticProxyThrottle } from './resticProxy';
5
+ export declare class ResticProxyPool implements OnApplicationBootstrap, OnApplicationShutdown {
6
+ private readonly moduleConfig?;
4
7
  static pool: Map<string, Promise<ResticProxy>>;
5
8
  static available: Promise<boolean> | undefined;
9
+ static throttle: ResticProxyThrottle;
10
+ constructor(moduleConfig?: ModuleConfigRepository | undefined);
11
+ onApplicationBootstrap(): void;
6
12
  isAvailable(): Promise<boolean>;
7
13
  getProxy(apiUrl: string): Promise<ResticProxy>;
14
+ onModuleConfigUpdate({ throttle }: ModuleConfig): Promise<void>;
8
15
  onApplicationShutdown(): Promise<void>;
16
+ private running;
9
17
  }