@owox/backend 0.0.0 → 0.1.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 (214) hide show
  1. package/dist/commands/create-migration-template.js +8 -0
  2. package/dist/public/assets/index-CISA6IwH.css +1 -0
  3. package/dist/public/assets/index-xNsUEA9g.js +550 -0
  4. package/dist/public/index.html +2 -2
  5. package/dist/{app.module.js → src/app.module.js} +2 -5
  6. package/dist/src/common/schemas/google-service-account-key.schema.js +33 -0
  7. package/dist/src/common/zod/zod-transformer.js +14 -0
  8. package/dist/src/config/data-source-options.config.js +49 -0
  9. package/dist/{config → src/config}/express-static.config.js +7 -3
  10. package/dist/src/config/get-sqlite-database-path.js +36 -0
  11. package/dist/src/config/migrations.config.js +30 -0
  12. package/dist/src/data-marts/connector-types/connector-definition.js +11 -0
  13. package/dist/src/data-marts/connector-types/connector-fields-schema.js +18 -0
  14. package/dist/src/data-marts/connector-types/connector-specification.js +20 -0
  15. package/dist/src/data-marts/controllers/connector.controller.js +79 -0
  16. package/dist/src/data-marts/controllers/data-destination.controller.js +124 -0
  17. package/dist/{data-marts → src/data-marts}/controllers/data-mart.controller.js +20 -2
  18. package/dist/src/data-marts/controllers/report.controller.js +159 -0
  19. package/dist/src/data-marts/controllers/spec/connector.api.js +20 -0
  20. package/dist/src/data-marts/controllers/spec/data-destination.api.js +28 -0
  21. package/dist/{data-marts → src/data-marts}/controllers/spec/data-mart.api.js +4 -0
  22. package/dist/src/data-marts/controllers/spec/report.api.js +55 -0
  23. package/dist/src/data-marts/data-destination-types/data-destination-config.guards.js +13 -0
  24. package/dist/src/data-marts/data-destination-types/data-destination-config.type.js +7 -0
  25. package/dist/src/data-marts/data-destination-types/data-destination-credentials.guards.js +13 -0
  26. package/dist/src/data-marts/data-destination-types/data-destination-credentials.type.js +9 -0
  27. package/dist/src/data-marts/data-destination-types/data-destination-facades.js +10 -0
  28. package/dist/src/data-marts/data-destination-types/data-destination-providers.js +40 -0
  29. package/dist/src/data-marts/data-destination-types/enums/data-destination-type.enum.js +17 -0
  30. package/dist/src/data-marts/data-destination-types/facades/data-destination-access-validator.facade.js +40 -0
  31. package/dist/{data-marts/data-storage-types/facades/data-storage-title.facade.js → src/data-marts/data-destination-types/facades/data-destination-credentials-validator.facade.js} +13 -13
  32. package/dist/{data-marts/data-storage-types/athena/services/athena-title.generator.js → src/data-marts/data-destination-types/google-sheets/adapters/google-sheets-api-adapter.factory.js} +9 -12
  33. package/dist/src/data-marts/data-destination-types/google-sheets/adapters/google-sheets-api.adapter.js +104 -0
  34. package/dist/src/data-marts/data-destination-types/google-sheets/schemas/google-sheets-config.schema.js +11 -0
  35. package/dist/src/data-marts/data-destination-types/google-sheets/schemas/google-sheets-credentials.schema.js +13 -0
  36. package/dist/src/data-marts/data-destination-types/google-sheets/services/google-sheets-access-validator.js +59 -0
  37. package/dist/src/data-marts/data-destination-types/google-sheets/services/google-sheets-credentials-validator.js +45 -0
  38. package/dist/src/data-marts/data-destination-types/google-sheets/services/google-sheets-report-writer.js +158 -0
  39. package/dist/src/data-marts/data-destination-types/google-sheets/services/sheet-formatters/sheet-header-formatter.js +54 -0
  40. package/dist/src/data-marts/data-destination-types/google-sheets/services/sheet-formatters/sheet-metadata-formatter.js +60 -0
  41. package/dist/src/data-marts/data-destination-types/interfaces/data-destination-access-validator.interface.js +17 -0
  42. package/dist/src/data-marts/data-destination-types/interfaces/data-destination-credentials-validator.interface.js +15 -0
  43. package/dist/src/data-marts/data-destination-types/interfaces/data-destination-report-writer.interface.js +3 -0
  44. package/dist/src/data-marts/data-marts.module.js +127 -0
  45. package/dist/{data-marts/data-storage-types/bigquery/services/bigquery-title.generator.js → src/data-marts/data-storage-types/athena/adapters/athena-api-adapter.factory.js} +9 -12
  46. package/dist/src/data-marts/data-storage-types/athena/adapters/athena-api.adapter.js +91 -0
  47. package/dist/src/data-marts/data-storage-types/athena/adapters/s3-api-adapter.factory.js +21 -0
  48. package/dist/src/data-marts/data-storage-types/athena/adapters/s3-api.adapter.js +53 -0
  49. package/dist/src/data-marts/data-storage-types/athena/services/athena-report-reader.service.js +158 -0
  50. package/dist/src/data-marts/data-storage-types/bigquery/adapters/bigquery-api-adapter.factory.js +21 -0
  51. package/dist/src/data-marts/data-storage-types/bigquery/adapters/bigquery-api.adapter.js +36 -0
  52. package/dist/src/data-marts/data-storage-types/bigquery/schemas/bigquery-credentials.schema.js +6 -0
  53. package/dist/src/data-marts/data-storage-types/bigquery/services/bigquery-report-reader.service.js +132 -0
  54. package/dist/src/data-marts/data-storage-types/data-storage-config.guards.js +13 -0
  55. package/dist/src/data-marts/data-storage-types/data-storage-credentials.guards.js +13 -0
  56. package/dist/src/data-marts/data-storage-types/data-storage-credentials.type.js +3 -0
  57. package/dist/src/data-marts/data-storage-types/data-storage-facades.js +6 -0
  58. package/dist/src/data-marts/data-storage-types/data-storage-providers.js +32 -0
  59. package/dist/src/data-marts/data-storage-types/interfaces/data-storage-report-reader.interface.js +3 -0
  60. package/dist/src/data-marts/dto/domain/create-data-destination.command.js +17 -0
  61. package/dist/src/data-marts/dto/domain/create-report.command.js +21 -0
  62. package/dist/src/data-marts/dto/domain/data-destination.dto.js +23 -0
  63. package/dist/src/data-marts/dto/domain/delete-data-destination.command.js +13 -0
  64. package/dist/src/data-marts/dto/domain/get-data-destination.command.js +13 -0
  65. package/dist/src/data-marts/dto/domain/get-report.command.js +15 -0
  66. package/dist/src/data-marts/dto/domain/list-data-destinations.command.js +11 -0
  67. package/dist/src/data-marts/dto/domain/list-reports-by-data-mart.command.js +15 -0
  68. package/dist/src/data-marts/dto/domain/list-reports-by-project.command.js +13 -0
  69. package/dist/src/data-marts/dto/domain/report-data-batch.dto.js +13 -0
  70. package/dist/src/data-marts/dto/domain/report-data-description.dto.js +13 -0
  71. package/dist/src/data-marts/dto/domain/report.dto.js +31 -0
  72. package/dist/src/data-marts/dto/domain/run-data-mart.command.js +15 -0
  73. package/dist/src/data-marts/dto/domain/run-report.command.js +3 -0
  74. package/dist/src/data-marts/dto/domain/update-data-destination.command.js +17 -0
  75. package/dist/src/data-marts/dto/domain/update-report.command.js +21 -0
  76. package/dist/src/data-marts/dto/presentation/connector-definition-response-api.dto.js +37 -0
  77. package/dist/src/data-marts/dto/presentation/connector-fields-response-api.dto.js +60 -0
  78. package/dist/src/data-marts/dto/presentation/connector-specification-response-api.dto.js +65 -0
  79. package/dist/src/data-marts/dto/presentation/create-data-destination-api.dto.js +42 -0
  80. package/dist/src/data-marts/dto/presentation/create-report-request-api.dto.js +46 -0
  81. package/dist/src/data-marts/dto/presentation/data-destination-response-api.dto.js +57 -0
  82. package/dist/src/data-marts/dto/presentation/report-response-api.dto.js +75 -0
  83. package/dist/src/data-marts/dto/presentation/update-data-destination-api.dto.js +35 -0
  84. package/dist/src/data-marts/dto/presentation/update-report-request-api.dto.js +39 -0
  85. package/dist/src/data-marts/dto/schemas/data-mart-table-definitions/connector-definition.schema.js +23 -0
  86. package/dist/src/data-marts/dto/schemas/data-mart-table-definitions/data-mart-definition.guards.js +23 -0
  87. package/dist/src/data-marts/entities/data-destination.entity.js +66 -0
  88. package/dist/src/data-marts/entities/data-mart-run.entity.js +63 -0
  89. package/dist/src/data-marts/entities/report.entity.js +85 -0
  90. package/dist/{data-marts → src/data-marts}/enums/data-mart-definition-type.enum.js +1 -0
  91. package/dist/src/data-marts/enums/data-mart-run-status.enum.js +10 -0
  92. package/dist/src/data-marts/enums/report-run-status.enum.js +10 -0
  93. package/dist/src/data-marts/mappers/connector.mapper.js +54 -0
  94. package/dist/src/data-marts/mappers/data-destination.mapper.js +58 -0
  95. package/dist/{data-marts → src/data-marts}/mappers/data-mart.mapper.js +4 -0
  96. package/dist/{data-marts → src/data-marts}/mappers/data-storage.mapper.js +2 -6
  97. package/dist/src/data-marts/mappers/report.mapper.js +81 -0
  98. package/dist/src/data-marts/services/connector-execution.service.js +190 -0
  99. package/dist/src/data-marts/services/connector.service.js +79 -0
  100. package/dist/src/data-marts/services/data-destination.service.js +39 -0
  101. package/dist/src/data-marts/use-cases/connector/available-connector.service.js +29 -0
  102. package/dist/src/data-marts/use-cases/connector/fields-connector.service.js +29 -0
  103. package/dist/src/data-marts/use-cases/connector/specification-connector.service.js +29 -0
  104. package/dist/src/data-marts/use-cases/create-data-destination.service.js +51 -0
  105. package/dist/src/data-marts/use-cases/create-report.service.js +83 -0
  106. package/dist/src/data-marts/use-cases/delete-data-destination.service.js +59 -0
  107. package/dist/src/data-marts/use-cases/delete-report.service.js +46 -0
  108. package/dist/src/data-marts/use-cases/get-data-destination.service.js +34 -0
  109. package/dist/src/data-marts/use-cases/get-report.service.js +51 -0
  110. package/dist/src/data-marts/use-cases/list-data-destinations.service.js +42 -0
  111. package/dist/src/data-marts/use-cases/list-reports-by-data-mart.service.js +47 -0
  112. package/dist/src/data-marts/use-cases/list-reports-by-project.service.js +47 -0
  113. package/dist/src/data-marts/use-cases/run-data-mart.service.js +39 -0
  114. package/dist/src/data-marts/use-cases/run-report.service.js +97 -0
  115. package/dist/src/data-marts/use-cases/update-data-destination.service.js +52 -0
  116. package/dist/src/data-marts/use-cases/update-report.service.js +77 -0
  117. package/dist/src/data-source.js +11 -0
  118. package/dist/src/load-env.js +34 -0
  119. package/dist/{main.js → src/main.js} +7 -1
  120. package/dist/src/migrations/1750350724543-create-data-mart-and-data-storage-tables.js +53 -0
  121. package/dist/src/migrations/helper.js +13 -0
  122. package/package.json +28 -9
  123. package/dist/config/database.config.js +0 -31
  124. package/dist/data-marts/data-marts.module.js +0 -65
  125. package/dist/data-marts/data-storage-types/bigquery/schemas/bigquery-credentials.schema.js +0 -11
  126. package/dist/data-marts/data-storage-types/data-storage-facades.js +0 -7
  127. package/dist/data-marts/data-storage-types/data-storage-providers.js +0 -27
  128. package/dist/data-marts/data-storage-types/interfaces/data-storage-title-generator.interface.js +0 -3
  129. package/dist/public/assets/index-BZJIHZWS.js +0 -502
  130. package/dist/public/assets/index-BpZgB8Pl.css +0 -1
  131. /package/dist/{common → src/common}/authorization-context/authorization.context.js +0 -0
  132. /package/dist/{common → src/common}/common.module.js +0 -0
  133. /package/dist/{common → src/common}/exceptions/access-validation.exception.js +0 -0
  134. /package/dist/{common → src/common}/exceptions/base-exception.filter.js +0 -0
  135. /package/dist/{common → src/common}/exceptions/base.exception.js +0 -0
  136. /package/dist/{common → src/common}/exceptions/business-violation.exception.js +0 -0
  137. /package/dist/{common → src/common}/resolver/type-resolver.js +0 -0
  138. /package/dist/{common → src/common}/resolver/typed-component.resolver.js +0 -0
  139. /package/dist/{common → src/common}/scheduler/facades/scheduler-facade.impl.js +0 -0
  140. /package/dist/{common → src/common}/scheduler/scheduler.module.js +0 -0
  141. /package/dist/{common → src/common}/scheduler/services/fetchers/time-based-trigger-fetcher.factory.js +0 -0
  142. /package/dist/{common → src/common}/scheduler/services/fetchers/time-based-trigger-fetcher.service.js +0 -0
  143. /package/dist/{common → src/common}/scheduler/services/graceful-shutdown.service.js +0 -0
  144. /package/dist/{common → src/common}/scheduler/services/runners/abstract-trigger-runner.service.js +0 -0
  145. /package/dist/{common → src/common}/scheduler/services/runners/direct-trigger-runner.service.js +0 -0
  146. /package/dist/{common → src/common}/scheduler/services/runners/pubsub-trigger-runner.service.js +0 -0
  147. /package/dist/{common → src/common}/scheduler/services/runners/trigger-runner.factory.js +0 -0
  148. /package/dist/{common → src/common}/scheduler/services/runners/trigger-runner.interface.js +0 -0
  149. /package/dist/{common → src/common}/scheduler/services/system-time.service.js +0 -0
  150. /package/dist/{common → src/common}/scheduler/shared/entities/scheduled-trigger.entity.js +0 -0
  151. /package/dist/{common → src/common}/scheduler/shared/entities/time-based-trigger.entity.js +0 -0
  152. /package/dist/{common → src/common}/scheduler/shared/scheduler.facade.js +0 -0
  153. /package/dist/{common → src/common}/scheduler/shared/time-based-trigger-handler.interface.js +0 -0
  154. /package/dist/{config → src/config}/global-pipes.config.js +0 -0
  155. /package/dist/{config → src/config}/swagger.config.js +0 -0
  156. /package/dist/{data-marts → src/data-marts}/controllers/data-storage.controller.js +0 -0
  157. /package/dist/{data-marts → src/data-marts}/controllers/spec/data-storage.api.js +0 -0
  158. /package/dist/{data-marts → src/data-marts}/data-storage-types/athena/schemas/athena-config.schema.js +0 -0
  159. /package/dist/{data-marts → src/data-marts}/data-storage-types/athena/schemas/athena-credentials.schema.js +0 -0
  160. /package/dist/{data-marts → src/data-marts}/data-storage-types/athena/services/athena-access.validator.js +0 -0
  161. /package/dist/{data-marts → src/data-marts}/data-storage-types/bigquery/schemas/bigquery-config.schema.js +0 -0
  162. /package/dist/{data-marts → src/data-marts}/data-storage-types/bigquery/services/bigquery-access.validator.js +0 -0
  163. /package/dist/{data-marts → src/data-marts}/data-storage-types/data-storage-config.type.js +0 -0
  164. /package/dist/{data-marts → src/data-marts}/data-storage-types/enums/data-storage-type.enum.js +0 -0
  165. /package/dist/{data-marts → src/data-marts}/data-storage-types/facades/data-storage-access.facade.js +0 -0
  166. /package/dist/{data-marts → src/data-marts}/data-storage-types/interfaces/data-storage-access-validator.interface.js +0 -0
  167. /package/dist/{data-marts → src/data-marts}/dto/domain/create-data-mart.command.js +0 -0
  168. /package/dist/{data-marts → src/data-marts}/dto/domain/create-data-storage.command.js +0 -0
  169. /package/dist/{data-marts → src/data-marts}/dto/domain/data-mart.dto.js +0 -0
  170. /package/dist/{data-marts → src/data-marts}/dto/domain/data-storage.dto.js +0 -0
  171. /package/dist/{data-marts → src/data-marts}/dto/domain/delete-data-mart.command.js +0 -0
  172. /package/dist/{data-marts → src/data-marts}/dto/domain/delete-data-storage.command.js +0 -0
  173. /package/dist/{data-marts → src/data-marts}/dto/domain/get-data-mart.command.js +0 -0
  174. /package/dist/{data-marts → src/data-marts}/dto/domain/get-data-storage.command.js +0 -0
  175. /package/dist/{data-marts → src/data-marts}/dto/domain/list-data-marts.command.js +0 -0
  176. /package/dist/{data-marts → src/data-marts}/dto/domain/list-data-storages.command.js +0 -0
  177. /package/dist/{data-marts → src/data-marts}/dto/domain/publish-data-mart.command.js +0 -0
  178. /package/dist/{data-marts → src/data-marts}/dto/domain/update-data-mart-definition.command.js +0 -0
  179. /package/dist/{data-marts → src/data-marts}/dto/domain/update-data-mart-description.command.js +0 -0
  180. /package/dist/{data-marts → src/data-marts}/dto/domain/update-data-mart-title.command.js +0 -0
  181. /package/dist/{data-marts → src/data-marts}/dto/domain/update-data-storage.command.js +0 -0
  182. /package/dist/{data-marts → src/data-marts}/dto/presentation/create-data-mart-request-api.dto.js +0 -0
  183. /package/dist/{data-marts → src/data-marts}/dto/presentation/create-data-mart-response-api.dto.js +0 -0
  184. /package/dist/{data-marts → src/data-marts}/dto/presentation/create-data-storage-api.dto.js +0 -0
  185. /package/dist/{data-marts → src/data-marts}/dto/presentation/data-mart-response-api.dto.js +0 -0
  186. /package/dist/{data-marts → src/data-marts}/dto/presentation/data-storage-list-response-api.dto.js +0 -0
  187. /package/dist/{data-marts → src/data-marts}/dto/presentation/data-storage-response-api.dto.js +0 -0
  188. /package/dist/{data-marts → src/data-marts}/dto/presentation/update-data-mart-definition-api.dto.js +0 -0
  189. /package/dist/{data-marts → src/data-marts}/dto/presentation/update-data-mart-description-api.dto.js +0 -0
  190. /package/dist/{data-marts → src/data-marts}/dto/presentation/update-data-mart-title-api.dto.js +0 -0
  191. /package/dist/{data-marts → src/data-marts}/dto/presentation/update-data-storage-api.dto.js +0 -0
  192. /package/dist/{data-marts → src/data-marts}/dto/schemas/data-mart-table-definitions/data-mart-definition.js +0 -0
  193. /package/dist/{data-marts → src/data-marts}/dto/schemas/data-mart-table-definitions/sql-definition.schema.js +0 -0
  194. /package/dist/{data-marts → src/data-marts}/dto/schemas/data-mart-table-definitions/table-definition.schema.js +0 -0
  195. /package/dist/{data-marts → src/data-marts}/dto/schemas/data-mart-table-definitions/table-pattern-definition.schema.js +0 -0
  196. /package/dist/{data-marts → src/data-marts}/dto/schemas/data-mart-table-definitions/view-definition.schema.js +0 -0
  197. /package/dist/{data-marts → src/data-marts}/entities/data-mart.entity.js +0 -0
  198. /package/dist/{data-marts → src/data-marts}/entities/data-storage.entity.js +0 -0
  199. /package/dist/{data-marts → src/data-marts}/enums/data-mart-status.enum.js +0 -0
  200. /package/dist/{data-marts → src/data-marts}/services/data-mart.service.js +0 -0
  201. /package/dist/{data-marts → src/data-marts}/services/data-storage.service.js +0 -0
  202. /package/dist/{data-marts → src/data-marts}/use-cases/create-data-mart.service.js +0 -0
  203. /package/dist/{data-marts → src/data-marts}/use-cases/create-data-storage.service.js +0 -0
  204. /package/dist/{data-marts → src/data-marts}/use-cases/delete-data-mart.service.js +0 -0
  205. /package/dist/{data-marts → src/data-marts}/use-cases/delete-data-storage.service.js +0 -0
  206. /package/dist/{data-marts → src/data-marts}/use-cases/get-data-mart.service.js +0 -0
  207. /package/dist/{data-marts → src/data-marts}/use-cases/get-data-storage.service.js +0 -0
  208. /package/dist/{data-marts → src/data-marts}/use-cases/list-data-marts.service.js +0 -0
  209. /package/dist/{data-marts → src/data-marts}/use-cases/list-data-storages.service.js +0 -0
  210. /package/dist/{data-marts → src/data-marts}/use-cases/publish-data-mart.service.js +0 -0
  211. /package/dist/{data-marts → src/data-marts}/use-cases/update-data-mart-definition.service.js +0 -0
  212. /package/dist/{data-marts → src/data-marts}/use-cases/update-data-mart-description.service.js +0 -0
  213. /package/dist/{data-marts → src/data-marts}/use-cases/update-data-mart-title.service.js +0 -0
  214. /package/dist/{data-marts → src/data-marts}/use-cases/update-data-storage.service.js +0 -0
@@ -0,0 +1,159 @@
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.ReportController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const authorization_context_1 = require("../../common/authorization-context/authorization.context");
19
+ const report_mapper_1 = require("../mappers/report.mapper");
20
+ const create_report_request_api_dto_1 = require("../dto/presentation/create-report-request-api.dto");
21
+ const update_report_request_api_dto_1 = require("../dto/presentation/update-report-request-api.dto");
22
+ const create_report_service_1 = require("../use-cases/create-report.service");
23
+ const get_report_service_1 = require("../use-cases/get-report.service");
24
+ const list_reports_by_data_mart_service_1 = require("../use-cases/list-reports-by-data-mart.service");
25
+ const list_reports_by_project_service_1 = require("../use-cases/list-reports-by-project.service");
26
+ const delete_report_service_1 = require("../use-cases/delete-report.service");
27
+ const run_report_service_1 = require("../use-cases/run-report.service");
28
+ const update_report_service_1 = require("../use-cases/update-report.service");
29
+ const report_api_1 = require("./spec/report.api");
30
+ let ReportController = class ReportController {
31
+ createReportService;
32
+ getReportService;
33
+ listReportsByDataMartService;
34
+ listReportsByProjectService;
35
+ deleteReportService;
36
+ runReportService;
37
+ updateReportService;
38
+ mapper;
39
+ constructor(createReportService, getReportService, listReportsByDataMartService, listReportsByProjectService, deleteReportService, runReportService, updateReportService, mapper) {
40
+ this.createReportService = createReportService;
41
+ this.getReportService = getReportService;
42
+ this.listReportsByDataMartService = listReportsByDataMartService;
43
+ this.listReportsByProjectService = listReportsByProjectService;
44
+ this.deleteReportService = deleteReportService;
45
+ this.runReportService = runReportService;
46
+ this.updateReportService = updateReportService;
47
+ this.mapper = mapper;
48
+ }
49
+ async create(context, dto) {
50
+ const command = this.mapper.toCreateDomainCommand(context, dto);
51
+ const report = await this.createReportService.run(command);
52
+ return this.mapper.toResponse(report);
53
+ }
54
+ async get(context, id) {
55
+ const command = this.mapper.toGetCommand(id, context);
56
+ const report = await this.getReportService.run(command);
57
+ return this.mapper.toResponse(report);
58
+ }
59
+ async listByDataMart(context, dataMartId) {
60
+ const command = this.mapper.toListByDataMartCommand(dataMartId, context);
61
+ const reports = await this.listReportsByDataMartService.run(command);
62
+ return this.mapper.toResponseList(reports);
63
+ }
64
+ async listByProject(context) {
65
+ const command = this.mapper.toListByProjectCommand(context);
66
+ const reports = await this.listReportsByProjectService.run(command);
67
+ return this.mapper.toResponseList(reports);
68
+ }
69
+ async delete(context, id) {
70
+ const command = this.mapper.toGetCommand(id, context);
71
+ await this.deleteReportService.run(command);
72
+ }
73
+ async runReport(context, id) {
74
+ const command = this.mapper.toRunReportCommand(id, context);
75
+ this.runReportService.runAsync(command);
76
+ }
77
+ async update(context, id, dto) {
78
+ const command = this.mapper.toUpdateDomainCommand(id, context, dto);
79
+ const report = await this.updateReportService.run(command);
80
+ return this.mapper.toResponse(report);
81
+ }
82
+ };
83
+ exports.ReportController = ReportController;
84
+ __decorate([
85
+ (0, common_1.Post)(),
86
+ (0, report_api_1.CreateReportSpec)(),
87
+ __param(0, (0, authorization_context_1.AuthContext)()),
88
+ __param(1, (0, common_1.Body)()),
89
+ __metadata("design:type", Function),
90
+ __metadata("design:paramtypes", [Object, create_report_request_api_dto_1.CreateReportRequestApiDto]),
91
+ __metadata("design:returntype", Promise)
92
+ ], ReportController.prototype, "create", null);
93
+ __decorate([
94
+ (0, common_1.Get)(':id'),
95
+ (0, report_api_1.GetReportSpec)(),
96
+ __param(0, (0, authorization_context_1.AuthContext)()),
97
+ __param(1, (0, common_1.Param)('id')),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [Object, String]),
100
+ __metadata("design:returntype", Promise)
101
+ ], ReportController.prototype, "get", null);
102
+ __decorate([
103
+ (0, common_1.Get)('data-mart/:dataMartId'),
104
+ (0, report_api_1.ListReportsByDataMartSpec)(),
105
+ __param(0, (0, authorization_context_1.AuthContext)()),
106
+ __param(1, (0, common_1.Param)('dataMartId')),
107
+ __metadata("design:type", Function),
108
+ __metadata("design:paramtypes", [Object, String]),
109
+ __metadata("design:returntype", Promise)
110
+ ], ReportController.prototype, "listByDataMart", null);
111
+ __decorate([
112
+ (0, common_1.Get)(),
113
+ (0, report_api_1.ListReportsByProjectSpec)(),
114
+ __param(0, (0, authorization_context_1.AuthContext)()),
115
+ __metadata("design:type", Function),
116
+ __metadata("design:paramtypes", [Object]),
117
+ __metadata("design:returntype", Promise)
118
+ ], ReportController.prototype, "listByProject", null);
119
+ __decorate([
120
+ (0, common_1.Delete)(':id'),
121
+ (0, report_api_1.DeleteReportSpec)(),
122
+ __param(0, (0, authorization_context_1.AuthContext)()),
123
+ __param(1, (0, common_1.Param)('id')),
124
+ __metadata("design:type", Function),
125
+ __metadata("design:paramtypes", [Object, String]),
126
+ __metadata("design:returntype", Promise)
127
+ ], ReportController.prototype, "delete", null);
128
+ __decorate([
129
+ (0, common_1.Post)(':id/run'),
130
+ (0, report_api_1.RunReportSpec)(),
131
+ __param(0, (0, authorization_context_1.AuthContext)()),
132
+ __param(1, (0, common_1.Param)('id')),
133
+ __metadata("design:type", Function),
134
+ __metadata("design:paramtypes", [Object, String]),
135
+ __metadata("design:returntype", Promise)
136
+ ], ReportController.prototype, "runReport", null);
137
+ __decorate([
138
+ (0, common_1.Put)(':id'),
139
+ (0, report_api_1.UpdateReportSpec)(),
140
+ __param(0, (0, authorization_context_1.AuthContext)()),
141
+ __param(1, (0, common_1.Param)('id')),
142
+ __param(2, (0, common_1.Body)()),
143
+ __metadata("design:type", Function),
144
+ __metadata("design:paramtypes", [Object, String, update_report_request_api_dto_1.UpdateReportRequestApiDto]),
145
+ __metadata("design:returntype", Promise)
146
+ ], ReportController.prototype, "update", null);
147
+ exports.ReportController = ReportController = __decorate([
148
+ (0, common_1.Controller)('reports'),
149
+ (0, swagger_1.ApiTags)('Reports'),
150
+ __metadata("design:paramtypes", [create_report_service_1.CreateReportService,
151
+ get_report_service_1.GetReportService,
152
+ list_reports_by_data_mart_service_1.ListReportsByDataMartService,
153
+ list_reports_by_project_service_1.ListReportsByProjectService,
154
+ delete_report_service_1.DeleteReportService,
155
+ run_report_service_1.RunReportService,
156
+ update_report_service_1.UpdateReportService,
157
+ report_mapper_1.ReportMapper])
158
+ ], ReportController);
159
+ //# sourceMappingURL=report.controller.js.map
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetAvailableConnectorsSpec = GetAvailableConnectorsSpec;
4
+ exports.GetConnectorSpecificationSpec = GetConnectorSpecificationSpec;
5
+ exports.GetConnectorFieldsSpec = GetConnectorFieldsSpec;
6
+ const common_1 = require("@nestjs/common");
7
+ const swagger_1 = require("@nestjs/swagger");
8
+ const connector_definition_response_api_dto_1 = require("../../dto/presentation/connector-definition-response-api.dto");
9
+ const connector_specification_response_api_dto_1 = require("../../dto/presentation/connector-specification-response-api.dto");
10
+ const connector_fields_response_api_dto_1 = require("../../dto/presentation/connector-fields-response-api.dto");
11
+ function GetAvailableConnectorsSpec() {
12
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get available connectors' }), (0, swagger_1.ApiResponse)({ status: 200, type: [connector_definition_response_api_dto_1.ConnectorDefinitionResponseApiDto] }));
13
+ }
14
+ function GetConnectorSpecificationSpec() {
15
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get connector specification' }), (0, swagger_1.ApiResponse)({ status: 200, type: connector_specification_response_api_dto_1.ConnectorSpecificationResponseApiDto }));
16
+ }
17
+ function GetConnectorFieldsSpec() {
18
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get connector fields' }), (0, swagger_1.ApiResponse)({ status: 200, type: [connector_fields_response_api_dto_1.ConnectorFieldsResponseApiDto] }));
19
+ }
20
+ //# sourceMappingURL=connector.api.js.map
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateDataDestinationSpec = CreateDataDestinationSpec;
4
+ exports.UpdateDataDestinationSpec = UpdateDataDestinationSpec;
5
+ exports.GetDataDestinationSpec = GetDataDestinationSpec;
6
+ exports.ListDataDestinationsSpec = ListDataDestinationsSpec;
7
+ exports.DeleteDataDestinationSpec = DeleteDataDestinationSpec;
8
+ const common_1 = require("@nestjs/common");
9
+ const swagger_1 = require("@nestjs/swagger");
10
+ const create_data_destination_api_dto_1 = require("../../dto/presentation/create-data-destination-api.dto");
11
+ const update_data_destination_api_dto_1 = require("../../dto/presentation/update-data-destination-api.dto");
12
+ const data_destination_response_api_dto_1 = require("../../dto/presentation/data-destination-response-api.dto");
13
+ function CreateDataDestinationSpec() {
14
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Create a new Data Destination' }), (0, swagger_1.ApiBody)({ type: create_data_destination_api_dto_1.CreateDataDestinationApiDto }), (0, swagger_1.ApiCreatedResponse)({ type: data_destination_response_api_dto_1.DataDestinationResponseApiDto }));
15
+ }
16
+ function UpdateDataDestinationSpec() {
17
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Update Data Destination by ID' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Data Destination ID' }), (0, swagger_1.ApiBody)({ type: update_data_destination_api_dto_1.UpdateDataDestinationApiDto }), (0, swagger_1.ApiOkResponse)({ type: data_destination_response_api_dto_1.DataDestinationResponseApiDto }));
18
+ }
19
+ function GetDataDestinationSpec() {
20
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get a Data Destination by ID' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Data Destination ID' }), (0, swagger_1.ApiOkResponse)({ type: data_destination_response_api_dto_1.DataDestinationResponseApiDto }));
21
+ }
22
+ function ListDataDestinationsSpec() {
23
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get all Data Destinations' }), (0, swagger_1.ApiOkResponse)({ type: [data_destination_response_api_dto_1.DataDestinationResponseApiDto] }));
24
+ }
25
+ function DeleteDataDestinationSpec() {
26
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Delete Data Destination by ID' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Data Destination ID' }), (0, swagger_1.ApiNoContentResponse)({ description: 'Data Destination successfully deleted' }));
27
+ }
28
+ //# sourceMappingURL=data-destination.api.js.map
@@ -8,6 +8,7 @@ exports.PublishDataMartSpec = PublishDataMartSpec;
8
8
  exports.UpdateDataMartDescriptionSpec = UpdateDataMartDescriptionSpec;
9
9
  exports.UpdateDataMartTitleSpec = UpdateDataMartTitleSpec;
10
10
  exports.DeleteDataMartSpec = DeleteDataMartSpec;
11
+ exports.RunDataMartSpec = RunDataMartSpec;
11
12
  const common_1 = require("@nestjs/common");
12
13
  const swagger_1 = require("@nestjs/swagger");
13
14
  const create_data_mart_request_api_dto_1 = require("../../dto/presentation/create-data-mart-request-api.dto");
@@ -40,4 +41,7 @@ function UpdateDataMartTitleSpec() {
40
41
  function DeleteDataMartSpec() {
41
42
  return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Soft delete DataMart' }), (0, swagger_1.ApiParam)({ name: 'id', type: String }), (0, swagger_1.ApiNoContentResponse)({ description: 'DataMart deleted' }));
42
43
  }
44
+ function RunDataMartSpec() {
45
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Manual run DataMart' }), (0, swagger_1.ApiParam)({ name: 'id', type: String }), (0, swagger_1.ApiNoContentResponse)({ description: 'DataMart run' }));
46
+ }
43
47
  //# sourceMappingURL=data-mart.api.js.map
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateReportSpec = CreateReportSpec;
4
+ exports.ListReportsByDataMartSpec = ListReportsByDataMartSpec;
5
+ exports.ListReportsByProjectSpec = ListReportsByProjectSpec;
6
+ exports.GetReportSpec = GetReportSpec;
7
+ exports.DeleteReportSpec = DeleteReportSpec;
8
+ exports.RunReportSpec = RunReportSpec;
9
+ exports.UpdateReportSpec = UpdateReportSpec;
10
+ const common_1 = require("@nestjs/common");
11
+ const swagger_1 = require("@nestjs/swagger");
12
+ const report_response_api_dto_1 = require("../../dto/presentation/report-response-api.dto");
13
+ const create_report_request_api_dto_1 = require("../../dto/presentation/create-report-request-api.dto");
14
+ const update_report_request_api_dto_1 = require("../../dto/presentation/update-report-request-api.dto");
15
+ function CreateReportSpec() {
16
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Create a new report' }), (0, swagger_1.ApiBody)({ type: create_report_request_api_dto_1.CreateReportRequestApiDto }), (0, swagger_1.ApiCreatedResponse)({
17
+ description: 'The report has been successfully created.',
18
+ type: report_response_api_dto_1.ReportResponseApiDto,
19
+ }));
20
+ }
21
+ function ListReportsByDataMartSpec() {
22
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get all reports for a data mart' }), (0, swagger_1.ApiParam)({ name: 'dataMartId', description: 'Data mart ID' }), (0, swagger_1.ApiOkResponse)({
23
+ description: 'List of reports for the data mart',
24
+ type: [report_response_api_dto_1.ReportResponseApiDto],
25
+ }));
26
+ }
27
+ function ListReportsByProjectSpec() {
28
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get all reports for a project' }), (0, swagger_1.ApiOkResponse)({
29
+ description: 'List of reports for the project',
30
+ type: [report_response_api_dto_1.ReportResponseApiDto],
31
+ }));
32
+ }
33
+ function GetReportSpec() {
34
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Get a report by ID' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Report ID' }), (0, swagger_1.ApiOkResponse)({
35
+ description: 'The report',
36
+ type: report_response_api_dto_1.ReportResponseApiDto,
37
+ }));
38
+ }
39
+ function DeleteReportSpec() {
40
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Delete a report' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Report ID' }), (0, swagger_1.ApiOkResponse)({
41
+ description: 'The report has been successfully deleted.',
42
+ }));
43
+ }
44
+ function RunReportSpec() {
45
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Run a report by ID' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Report ID' }), (0, swagger_1.ApiOkResponse)({
46
+ description: 'The report has been successfully started.',
47
+ }));
48
+ }
49
+ function UpdateReportSpec() {
50
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary: 'Update an existing report' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Report ID' }), (0, swagger_1.ApiBody)({ type: update_report_request_api_dto_1.UpdateReportRequestApiDto }), (0, swagger_1.ApiOkResponse)({
51
+ description: 'The report has been successfully updated.',
52
+ type: report_response_api_dto_1.ReportResponseApiDto,
53
+ }));
54
+ }
55
+ //# sourceMappingURL=report.api.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidDataDestinationConfig = isValidDataDestinationConfig;
4
+ exports.isGoogleSheetsDestination = isGoogleSheetsDestination;
5
+ const data_destination_config_type_1 = require("./data-destination-config.type");
6
+ const google_sheets_config_schema_1 = require("./google-sheets/schemas/google-sheets-config.schema");
7
+ function isValidDataDestinationConfig(destination) {
8
+ return data_destination_config_type_1.DataDestinationConfigSchema.safeParse(destination).success;
9
+ }
10
+ function isGoogleSheetsDestination(definition) {
11
+ return definition.type === google_sheets_config_schema_1.GoogleSheetsConfigType;
12
+ }
13
+ //# sourceMappingURL=data-destination-config.guards.js.map
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDestinationConfigSchema = void 0;
4
+ const google_sheets_config_schema_1 = require("./google-sheets/schemas/google-sheets-config.schema");
5
+ const zod_1 = require("zod");
6
+ exports.DataDestinationConfigSchema = zod_1.z.discriminatedUnion('type', [google_sheets_config_schema_1.GoogleSheetsConfigSchema]);
7
+ //# sourceMappingURL=data-destination-config.type.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidDataDestinationCredentials = isValidDataDestinationCredentials;
4
+ exports.isGoogleSheetsCredentials = isGoogleSheetsCredentials;
5
+ const data_destination_credentials_type_1 = require("./data-destination-credentials.type");
6
+ const google_sheets_credentials_schema_1 = require("./google-sheets/schemas/google-sheets-credentials.schema");
7
+ function isValidDataDestinationCredentials(credentials) {
8
+ return data_destination_credentials_type_1.DataDestinationCredentialsSchema.safeParse(credentials).success;
9
+ }
10
+ function isGoogleSheetsCredentials(credentials) {
11
+ return credentials.type === google_sheets_credentials_schema_1.GoogleSheetsCredentialsType;
12
+ }
13
+ //# sourceMappingURL=data-destination-credentials.guards.js.map
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDestinationCredentialsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const google_sheets_credentials_schema_1 = require("./google-sheets/schemas/google-sheets-credentials.schema");
6
+ exports.DataDestinationCredentialsSchema = zod_1.z.discriminatedUnion('type', [
7
+ google_sheets_credentials_schema_1.GoogleSheetsCredentialsSchema,
8
+ ]);
9
+ //# sourceMappingURL=data-destination-credentials.type.js.map
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataDestinationFacadesProviders = void 0;
4
+ const data_destination_access_validator_facade_1 = require("./facades/data-destination-access-validator.facade");
5
+ const data_destination_credentials_validator_facade_1 = require("./facades/data-destination-credentials-validator.facade");
6
+ exports.dataDestinationFacadesProviders = [
7
+ data_destination_access_validator_facade_1.DataDestinationAccessValidatorFacade,
8
+ data_destination_credentials_validator_facade_1.DataDestinationCredentialsValidatorFacade,
9
+ ];
10
+ //# sourceMappingURL=data-destination-facades.js.map
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataDestinationResolverProviders = exports.DATA_DESTINATION_REPORT_WRITER_RESOLVER = exports.DATA_DESTINATION_CREDENTIALS_VALIDATOR_RESOLVER = exports.DATA_DESTINATION_ACCESS_VALIDATOR_RESOLVER = void 0;
4
+ const google_sheets_access_validator_1 = require("./google-sheets/services/google-sheets-access-validator");
5
+ const google_sheets_credentials_validator_1 = require("./google-sheets/services/google-sheets-credentials-validator");
6
+ const type_resolver_1 = require("../../common/resolver/type-resolver");
7
+ const google_sheets_report_writer_1 = require("./google-sheets/services/google-sheets-report-writer");
8
+ const sheet_header_formatter_1 = require("./google-sheets/services/sheet-formatters/sheet-header-formatter");
9
+ const sheet_metadata_formatter_1 = require("./google-sheets/services/sheet-formatters/sheet-metadata-formatter");
10
+ const google_sheets_api_adapter_factory_1 = require("./google-sheets/adapters/google-sheets-api-adapter.factory");
11
+ exports.DATA_DESTINATION_ACCESS_VALIDATOR_RESOLVER = Symbol('DATA_DESTINATION_ACCESS_VALIDATOR_RESOLVER');
12
+ exports.DATA_DESTINATION_CREDENTIALS_VALIDATOR_RESOLVER = Symbol('DATA_DESTINATION_CREDENTIALS_VALIDATOR_RESOLVER');
13
+ exports.DATA_DESTINATION_REPORT_WRITER_RESOLVER = Symbol('DATA_DESTINATION_REPORT_WRITER_RESOLVER');
14
+ const accessValidatorProviders = [google_sheets_access_validator_1.GoogleSheetsAccessValidator];
15
+ const credentialsValidatorProviders = [google_sheets_credentials_validator_1.GoogleSheetsCredentialsValidator];
16
+ const reportWriterProviders = [google_sheets_report_writer_1.GoogleSheetsReportWriter];
17
+ const googleSheetsUtilityProviders = [sheet_header_formatter_1.SheetHeaderFormatter, sheet_metadata_formatter_1.SheetMetadataFormatter];
18
+ exports.dataDestinationResolverProviders = [
19
+ ...accessValidatorProviders,
20
+ ...credentialsValidatorProviders,
21
+ ...reportWriterProviders,
22
+ ...googleSheetsUtilityProviders,
23
+ google_sheets_api_adapter_factory_1.GoogleSheetsApiAdapterFactory,
24
+ {
25
+ provide: exports.DATA_DESTINATION_ACCESS_VALIDATOR_RESOLVER,
26
+ useFactory: (...validators) => new type_resolver_1.TypeResolver(validators),
27
+ inject: accessValidatorProviders,
28
+ },
29
+ {
30
+ provide: exports.DATA_DESTINATION_CREDENTIALS_VALIDATOR_RESOLVER,
31
+ useFactory: (...validators) => new type_resolver_1.TypeResolver(validators),
32
+ inject: credentialsValidatorProviders,
33
+ },
34
+ {
35
+ provide: exports.DATA_DESTINATION_REPORT_WRITER_RESOLVER,
36
+ useFactory: (...writers) => new type_resolver_1.TypeResolver(writers),
37
+ inject: reportWriterProviders,
38
+ },
39
+ ];
40
+ //# sourceMappingURL=data-destination-providers.js.map
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDestinationType = void 0;
4
+ exports.toHumanReadable = toHumanReadable;
5
+ var DataDestinationType;
6
+ (function (DataDestinationType) {
7
+ DataDestinationType["GOOGLE_SHEETS"] = "GOOGLE_SHEETS";
8
+ })(DataDestinationType || (exports.DataDestinationType = DataDestinationType = {}));
9
+ function toHumanReadable(type) {
10
+ switch (type) {
11
+ case DataDestinationType.GOOGLE_SHEETS:
12
+ return 'Google Sheets';
13
+ default:
14
+ return type;
15
+ }
16
+ }
17
+ //# sourceMappingURL=data-destination-type.enum.js.map
@@ -0,0 +1,40 @@
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.DataDestinationAccessValidatorFacade = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const type_resolver_1 = require("../../../common/resolver/type-resolver");
18
+ const data_destination_providers_1 = require("../data-destination-providers");
19
+ const access_validation_exception_1 = require("../../../common/exceptions/access-validation.exception");
20
+ let DataDestinationAccessValidatorFacade = class DataDestinationAccessValidatorFacade {
21
+ resolver;
22
+ constructor(resolver) {
23
+ this.resolver = resolver;
24
+ }
25
+ async checkAccess(type, destinationConfig, dataDestination) {
26
+ const validationResult = await this.resolver
27
+ .resolve(type)
28
+ .validate(destinationConfig, dataDestination);
29
+ if (!validationResult.valid) {
30
+ throw new access_validation_exception_1.AccessValidationException(validationResult.errorMessage, validationResult.reason);
31
+ }
32
+ }
33
+ };
34
+ exports.DataDestinationAccessValidatorFacade = DataDestinationAccessValidatorFacade;
35
+ exports.DataDestinationAccessValidatorFacade = DataDestinationAccessValidatorFacade = __decorate([
36
+ (0, common_1.Injectable)(),
37
+ __param(0, (0, common_1.Inject)(data_destination_providers_1.DATA_DESTINATION_ACCESS_VALIDATOR_RESOLVER)),
38
+ __metadata("design:paramtypes", [type_resolver_1.TypeResolver])
39
+ ], DataDestinationAccessValidatorFacade);
40
+ //# sourceMappingURL=data-destination-access-validator.facade.js.map
@@ -12,27 +12,27 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DataStorageTitleFacade = void 0;
15
+ exports.DataDestinationCredentialsValidatorFacade = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const type_resolver_1 = require("../../../common/resolver/type-resolver");
18
- const data_storage_type_enum_1 = require("../enums/data-storage-type.enum");
19
- const data_storage_providers_1 = require("../data-storage-providers");
20
- let DataStorageTitleFacade = class DataStorageTitleFacade {
18
+ const data_destination_providers_1 = require("../data-destination-providers");
19
+ const access_validation_exception_1 = require("../../../common/exceptions/access-validation.exception");
20
+ let DataDestinationCredentialsValidatorFacade = class DataDestinationCredentialsValidatorFacade {
21
21
  resolver;
22
22
  constructor(resolver) {
23
23
  this.resolver = resolver;
24
24
  }
25
- generate(type, config) {
26
- if (!config) {
27
- return (0, data_storage_type_enum_1.toHumanReadable)(type);
25
+ async checkCredentials(type, credentials) {
26
+ const validationResult = await this.resolver.resolve(type).validate(credentials);
27
+ if (!validationResult.valid) {
28
+ throw new access_validation_exception_1.AccessValidationException(validationResult.errorMessage, validationResult.reason);
28
29
  }
29
- return this.resolver.resolve(type).generateTitle(config);
30
30
  }
31
31
  };
32
- exports.DataStorageTitleFacade = DataStorageTitleFacade;
33
- exports.DataStorageTitleFacade = DataStorageTitleFacade = __decorate([
32
+ exports.DataDestinationCredentialsValidatorFacade = DataDestinationCredentialsValidatorFacade;
33
+ exports.DataDestinationCredentialsValidatorFacade = DataDestinationCredentialsValidatorFacade = __decorate([
34
34
  (0, common_1.Injectable)(),
35
- __param(0, (0, common_1.Inject)(data_storage_providers_1.DATA_STORAGE_TITLE_GENERATOR_RESOLVER)),
35
+ __param(0, (0, common_1.Inject)(data_destination_providers_1.DATA_DESTINATION_CREDENTIALS_VALIDATOR_RESOLVER)),
36
36
  __metadata("design:paramtypes", [type_resolver_1.TypeResolver])
37
- ], DataStorageTitleFacade);
38
- //# sourceMappingURL=data-storage-title.facade.js.map
37
+ ], DataDestinationCredentialsValidatorFacade);
38
+ //# sourceMappingURL=data-destination-credentials-validator.facade.js.map
@@ -6,19 +6,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AthenaTitleGenerator = void 0;
9
+ exports.GoogleSheetsApiAdapterFactory = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
- const data_storage_type_enum_1 = require("../../enums/data-storage-type.enum");
12
- const athena_config_schema_1 = require("../schemas/athena-config.schema");
13
- let AthenaTitleGenerator = class AthenaTitleGenerator {
14
- type = data_storage_type_enum_1.DataStorageType.AWS_ATHENA;
15
- generateTitle(config) {
16
- const parsed = athena_config_schema_1.AthenaConfigSchema.parse(config);
17
- return `${parsed.region} / ${parsed.databaseName} / ${parsed.outputBucket}`;
11
+ const google_sheets_api_adapter_1 = require("./google-sheets-api.adapter");
12
+ let GoogleSheetsApiAdapterFactory = class GoogleSheetsApiAdapterFactory {
13
+ create(credentials) {
14
+ return new google_sheets_api_adapter_1.GoogleSheetsApiAdapter(credentials);
18
15
  }
19
16
  };
20
- exports.AthenaTitleGenerator = AthenaTitleGenerator;
21
- exports.AthenaTitleGenerator = AthenaTitleGenerator = __decorate([
17
+ exports.GoogleSheetsApiAdapterFactory = GoogleSheetsApiAdapterFactory;
18
+ exports.GoogleSheetsApiAdapterFactory = GoogleSheetsApiAdapterFactory = __decorate([
22
19
  (0, common_1.Injectable)()
23
- ], AthenaTitleGenerator);
24
- //# sourceMappingURL=athena-title.generator.js.map
20
+ ], GoogleSheetsApiAdapterFactory);
21
+ //# sourceMappingURL=google-sheets-api-adapter.factory.js.map
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleSheetsApiAdapter = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const google_auth_library_1 = require("google-auth-library");
6
+ const googleapis_1 = require("googleapis");
7
+ class GoogleSheetsApiAdapter {
8
+ static SHEETS_SCOPE = ['https://www.googleapis.com/auth/spreadsheets'];
9
+ static LOGGER = new common_1.Logger(GoogleSheetsApiAdapter.name);
10
+ service;
11
+ constructor(credentials) {
12
+ this.service = googleapis_1.google.sheets({
13
+ version: 'v4',
14
+ auth: GoogleSheetsApiAdapter.createGoogleAuth(credentials.serviceAccountKey),
15
+ });
16
+ }
17
+ static async validateCredentials(credentials) {
18
+ try {
19
+ const googleAuth = GoogleSheetsApiAdapter.createGoogleAuth(credentials.serviceAccountKey);
20
+ const authClient = await googleAuth.getClient();
21
+ await authClient.getAccessToken();
22
+ return true;
23
+ }
24
+ catch (error) {
25
+ GoogleSheetsApiAdapter.LOGGER.warn('Failed to validate Google Sheets credentials', error);
26
+ return false;
27
+ }
28
+ }
29
+ async getSpreadsheet(spreadsheetId, fields = 'properties,sheets.properties') {
30
+ const resp = await this.executeWithRetry(() => this.service.spreadsheets.get({
31
+ spreadsheetId,
32
+ includeGridData: false,
33
+ fields,
34
+ }));
35
+ return resp.data;
36
+ }
37
+ findSheetById(spreadsheet, sheetId) {
38
+ return spreadsheet.sheets?.find(s => s?.properties?.sheetId === sheetId);
39
+ }
40
+ async clearSheet(spreadsheetId, sheetTitle) {
41
+ await this.executeWithRetry(() => this.service.spreadsheets.values.clear({
42
+ spreadsheetId,
43
+ range: `'${sheetTitle}'`,
44
+ }));
45
+ }
46
+ async updateValues(spreadsheetId, range, values) {
47
+ await this.executeWithRetry(() => this.service.spreadsheets.values.update({
48
+ spreadsheetId,
49
+ range,
50
+ valueInputOption: 'USER_ENTERED',
51
+ requestBody: {
52
+ values,
53
+ },
54
+ }));
55
+ }
56
+ async appendDimensionToSheet(spreadsheetId, sheetId, size, dimension) {
57
+ const requests = [
58
+ {
59
+ appendDimension: {
60
+ dimension: dimension,
61
+ sheetId: sheetId,
62
+ length: size,
63
+ },
64
+ },
65
+ ];
66
+ await this.batchUpdate(spreadsheetId, requests);
67
+ }
68
+ async batchUpdate(spreadsheetId, requests) {
69
+ await this.executeWithRetry(() => this.service.spreadsheets.batchUpdate({
70
+ spreadsheetId,
71
+ requestBody: { requests },
72
+ }));
73
+ }
74
+ static createGoogleAuth(serviceAccountKey) {
75
+ return new google_auth_library_1.GoogleAuth({
76
+ credentials: serviceAccountKey,
77
+ scopes: GoogleSheetsApiAdapter.SHEETS_SCOPE,
78
+ });
79
+ }
80
+ async executeWithRetry(apiCallFn) {
81
+ const maxRetries = 5;
82
+ const maxDelayMs = 30000;
83
+ const baseDelayMs = 1000;
84
+ let retryCount = 0;
85
+ while (retryCount < maxRetries) {
86
+ try {
87
+ return await apiCallFn();
88
+ }
89
+ catch (error) {
90
+ if (!error.message.includes('Quota exceeded')) {
91
+ throw error;
92
+ }
93
+ const delayMs = Math.min(Math.pow(2, retryCount) * baseDelayMs, maxDelayMs);
94
+ GoogleSheetsApiAdapter.LOGGER.warn(`Google API quota exceeded. Retrying in ${delayMs / 1000} seconds. ` +
95
+ `Retry ${retryCount + 1}/${maxRetries}`);
96
+ await new Promise(resolve => setTimeout(resolve, delayMs));
97
+ retryCount++;
98
+ }
99
+ }
100
+ throw new Error('Maximum retry attempts exceeded');
101
+ }
102
+ }
103
+ exports.GoogleSheetsApiAdapter = GoogleSheetsApiAdapter;
104
+ //# sourceMappingURL=google-sheets-api.adapter.js.map
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleSheetsConfigSchema = exports.GoogleSheetsConfigType = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.GoogleSheetsConfigType = 'google-sheets-config';
6
+ exports.GoogleSheetsConfigSchema = zod_1.z.object({
7
+ type: zod_1.z.literal(exports.GoogleSheetsConfigType),
8
+ spreadsheetId: zod_1.z.string().min(1, 'Correction Google Spreadsheet ID is required'),
9
+ sheetId: zod_1.z.number().min(0, 'Correction Google Spreadsheet sheet ID is required'),
10
+ });
11
+ //# sourceMappingURL=google-sheets-config.schema.js.map