@etohq/workflows-dataset-module 0.0.1-next-20260318155517
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/models/dataset-draft.d.ts +21 -0
- package/dist/models/dataset-draft.d.ts.map +1 -0
- package/dist/models/dataset-draft.js +36 -0
- package/dist/models/dataset-draft.js.map +1 -0
- package/dist/models/dataset-import-run.d.ts +22 -0
- package/dist/models/dataset-import-run.d.ts.map +1 -0
- package/dist/models/dataset-import-run.js +43 -0
- package/dist/models/dataset-import-run.js.map +1 -0
- package/dist/models/dataset-source.d.ts +18 -0
- package/dist/models/dataset-source.d.ts.map +1 -0
- package/dist/models/dataset-source.js +29 -0
- package/dist/models/dataset-source.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +20 -0
- package/dist/models/index.js.map +1 -0
- package/dist/services/dataset-module.service.d.ts +49 -0
- package/dist/services/dataset-module.service.d.ts.map +1 -0
- package/dist/services/dataset-module.service.js +282 -0
- package/dist/services/dataset-module.service.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# `@etohq/workflows-dataset-module`
|
|
2
|
+
|
|
3
|
+
Persistence for dataset onboarding and imports.
|
|
4
|
+
|
|
5
|
+
This module intentionally does not parse CSV/PDF or run preview logic. Those behaviors belong in
|
|
6
|
+
workflow steps (using `@etohq/workflows-input-dataset-*-runtime`) so they can evolve independently
|
|
7
|
+
of persistence concerns.
|
|
8
|
+
|
|
9
|
+
## What It Stores
|
|
10
|
+
- `DatasetSource`: reference to an uploaded/external file (by `storage_key`) plus metadata.
|
|
11
|
+
- `DatasetDraft`: wizard state (schema spec + import/extract specs) that tenants can treat as
|
|
12
|
+
templates or per-tenant drafts.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
This package is meant to be loaded by Eto Modules SDK. It exports a default module entry:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import datasetModule from "@etohq/workflows-dataset-module"
|
|
19
|
+
// datasetModule.service is DatasetModuleService
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The module service contract is defined in `@etohq/workflows-types` as `IDatasetModuleService`.
|
|
23
|
+
|
|
24
|
+
## Testing (Dist-First)
|
|
25
|
+
Integration tests load the module through Eto Modules SDK, which resolves the package entry from
|
|
26
|
+
`dist`. Build first, then run tests against Postgres:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm --filter @etohq/workflows-dataset-module build
|
|
30
|
+
DB_HOST=localhost DB_USERNAME=postgres DB_PASSWORD=postgres \
|
|
31
|
+
pnpm --filter @etohq/workflows-dataset-module test:integration
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Note: Jest runs with `NODE_OPTIONS=--experimental-vm-modules` for the modules loader.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./models";
|
|
2
|
+
export * from "./services";
|
|
3
|
+
import { DatasetModuleService } from "./services";
|
|
4
|
+
/**
|
|
5
|
+
* Eto Modules SDK entrypoint.
|
|
6
|
+
*
|
|
7
|
+
* Modules SDK resolves `default` export and reads `service` from it.
|
|
8
|
+
*/
|
|
9
|
+
declare const _default: {
|
|
10
|
+
service: typeof DatasetModuleService;
|
|
11
|
+
};
|
|
12
|
+
export default _default;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;GAIG;;;;AACH,wBAEC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./models"), exports);
|
|
18
|
+
__exportStar(require("./services"), exports);
|
|
19
|
+
const services_1 = require("./services");
|
|
20
|
+
/**
|
|
21
|
+
* Eto Modules SDK entrypoint.
|
|
22
|
+
*
|
|
23
|
+
* Modules SDK resolves `default` export and reads `service` from it.
|
|
24
|
+
*/
|
|
25
|
+
exports.default = {
|
|
26
|
+
service: services_1.DatasetModuleService,
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,6CAA0B;AAE1B,yCAAiD;AAEjD;;;;GAIG;AACH,kBAAe;IACb,OAAO,EAAE,+BAAoB;CAC9B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A persisted wizard/draft for turning a source into typed records.
|
|
3
|
+
*
|
|
4
|
+
* This record is intentionally domain-agnostic: the tenant decides what a "row" means by storing
|
|
5
|
+
* `schema_spec` and mapping/extraction specs.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DatasetDraft: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
|
|
8
|
+
id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
|
|
9
|
+
tenant_id: import("@etohq/framework/utils").TextProperty;
|
|
10
|
+
name: import("@etohq/framework/utils").TextProperty;
|
|
11
|
+
kind: import("@etohq/framework/utils").EnumProperty<["csv", "pdf"]>;
|
|
12
|
+
status: import("@etohq/framework/utils").EnumProperty<["draft", "ready", "archived"]>;
|
|
13
|
+
source_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
14
|
+
revision: import("@etohq/framework/utils").NumberProperty;
|
|
15
|
+
schema_spec: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
|
|
16
|
+
dataset_import_spec: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
|
|
17
|
+
pdf_extract_spec: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
|
|
18
|
+
is_template: import("@etohq/framework/utils").BooleanProperty;
|
|
19
|
+
metadata: import("@etohq/framework/utils").JSONProperty;
|
|
20
|
+
}>, "DatasetDraft">;
|
|
21
|
+
//# sourceMappingURL=dataset-draft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-draft.d.ts","sourceRoot":"","sources":["../../src/models/dataset-draft.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;mBA8BrB,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatasetDraft = void 0;
|
|
4
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
5
|
+
/**
|
|
6
|
+
* A persisted wizard/draft for turning a source into typed records.
|
|
7
|
+
*
|
|
8
|
+
* This record is intentionally domain-agnostic: the tenant decides what a "row" means by storing
|
|
9
|
+
* `schema_spec` and mapping/extraction specs.
|
|
10
|
+
*/
|
|
11
|
+
exports.DatasetDraft = utils_1.model
|
|
12
|
+
.define("DatasetDraft", {
|
|
13
|
+
id: utils_1.model.id({ prefix: "ds_dft" }).primaryKey(),
|
|
14
|
+
tenant_id: utils_1.model.text(),
|
|
15
|
+
name: utils_1.model.text(),
|
|
16
|
+
kind: utils_1.model.enum(["csv", "pdf"]),
|
|
17
|
+
status: utils_1.model.enum(["draft", "ready", "archived"]).default("draft"),
|
|
18
|
+
source_id: utils_1.model.text().nullable(),
|
|
19
|
+
revision: utils_1.model.number().default(1),
|
|
20
|
+
schema_spec: utils_1.model.json().nullable(),
|
|
21
|
+
dataset_import_spec: utils_1.model.json().nullable(),
|
|
22
|
+
pdf_extract_spec: utils_1.model.json().nullable(),
|
|
23
|
+
is_template: utils_1.model.boolean().default(false),
|
|
24
|
+
metadata: utils_1.model.json().default({}),
|
|
25
|
+
})
|
|
26
|
+
.indexes([
|
|
27
|
+
{
|
|
28
|
+
name: "IDX_dataset_draft_tenant_kind_status",
|
|
29
|
+
on: ["tenant_id", "kind", "status"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "IDX_dataset_draft_tenant_name",
|
|
33
|
+
on: ["tenant_id", "name"],
|
|
34
|
+
},
|
|
35
|
+
]);
|
|
36
|
+
//# sourceMappingURL=dataset-draft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-draft.js","sourceRoot":"","sources":["../../src/models/dataset-draft.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAE9C;;;;;GAKG;AACU,QAAA,YAAY,GAAG,aAAK;KAC9B,MAAM,CAAC,cAAc,EAAE;IACtB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAE/C,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE;IAEvB,IAAI,EAAE,aAAK,CAAC,IAAI,EAAE;IAClB,IAAI,EAAE,aAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,EAAE,aAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAEnE,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAElC,QAAQ,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnC,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACpC,mBAAmB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC5C,gBAAgB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAEzC,WAAW,EAAE,aAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACnC,CAAC;KACD,OAAO,CAAC;IACP;QACE,IAAI,EAAE,sCAAsC;QAC5C,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;KACpC;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;KAC1B;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A persisted execution record for an import run.
|
|
3
|
+
*
|
|
4
|
+
* Orchestration that generates/consumes these runs should live in flows/workflows.
|
|
5
|
+
* The module stores stable status + counters + metadata for progress UI and audit.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DatasetImportRun: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
|
|
8
|
+
id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
|
|
9
|
+
tenant_id: import("@etohq/framework/utils").TextProperty;
|
|
10
|
+
status: import("@etohq/framework/utils").EnumProperty<["queued", "running", "succeeded", "failed", "canceled"]>;
|
|
11
|
+
source_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
12
|
+
draft_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
13
|
+
draft_revision: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
|
|
14
|
+
records_total: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
|
|
15
|
+
records_succeeded: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
|
|
16
|
+
records_failed: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
|
|
17
|
+
started_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
|
|
18
|
+
finished_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
|
|
19
|
+
error_summary: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
|
|
20
|
+
metadata: import("@etohq/framework/utils").JSONProperty;
|
|
21
|
+
}>, "DatasetImportRun">;
|
|
22
|
+
//# sourceMappingURL=dataset-import-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-import-run.d.ts","sourceRoot":"","sources":["../../src/models/dataset-import-run.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;uBAqCzB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatasetImportRun = void 0;
|
|
4
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
5
|
+
/**
|
|
6
|
+
* A persisted execution record for an import run.
|
|
7
|
+
*
|
|
8
|
+
* Orchestration that generates/consumes these runs should live in flows/workflows.
|
|
9
|
+
* The module stores stable status + counters + metadata for progress UI and audit.
|
|
10
|
+
*/
|
|
11
|
+
exports.DatasetImportRun = utils_1.model
|
|
12
|
+
.define("DatasetImportRun", {
|
|
13
|
+
id: utils_1.model.id({ prefix: "ds_run" }).primaryKey(),
|
|
14
|
+
tenant_id: utils_1.model.text(),
|
|
15
|
+
status: utils_1.model
|
|
16
|
+
.enum(["queued", "running", "succeeded", "failed", "canceled"])
|
|
17
|
+
.default("queued"),
|
|
18
|
+
source_id: utils_1.model.text().nullable(),
|
|
19
|
+
draft_id: utils_1.model.text().nullable(),
|
|
20
|
+
draft_revision: utils_1.model.number().nullable(),
|
|
21
|
+
records_total: utils_1.model.number().nullable(),
|
|
22
|
+
records_succeeded: utils_1.model.number().nullable(),
|
|
23
|
+
records_failed: utils_1.model.number().nullable(),
|
|
24
|
+
started_at: utils_1.model.dateTime().nullable(),
|
|
25
|
+
finished_at: utils_1.model.dateTime().nullable(),
|
|
26
|
+
error_summary: utils_1.model.json().nullable(),
|
|
27
|
+
metadata: utils_1.model.json().default({}),
|
|
28
|
+
})
|
|
29
|
+
.indexes([
|
|
30
|
+
{
|
|
31
|
+
name: "IDX_dataset_import_run_tenant_status",
|
|
32
|
+
on: ["tenant_id", "status"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "IDX_dataset_import_run_source",
|
|
36
|
+
on: ["source_id"],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "IDX_dataset_import_run_draft",
|
|
40
|
+
on: ["draft_id"],
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
//# sourceMappingURL=dataset-import-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-import-run.js","sourceRoot":"","sources":["../../src/models/dataset-import-run.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAE9C;;;;;GAKG;AACU,QAAA,gBAAgB,GAAG,aAAK;KAClC,MAAM,CAAC,kBAAkB,EAAE;IAC1B,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAE/C,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE;IAEvB,MAAM,EAAE,aAAK;SACV,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC9D,OAAO,CAAC,QAAQ,CAAC;IAEpB,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,cAAc,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEzC,aAAa,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,iBAAiB,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,cAAc,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEzC,UAAU,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAExC,aAAa,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACnC,CAAC;KACD,OAAO,CAAC;IACP;QACE,IAAI,EAAE,sCAAsC;QAC5C,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;KAC5B;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,EAAE,EAAE,CAAC,WAAW,CAAC;KAClB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,EAAE,EAAE,CAAC,UAAU,CAAC;KACjB;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A persisted reference to raw import bytes (CSV, PDF, etc.) stored elsewhere.
|
|
3
|
+
*
|
|
4
|
+
* The module stores only metadata + a `storage_key` so different apps can use different storage
|
|
5
|
+
* backends without changing the dataset domain.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DatasetSource: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
|
|
8
|
+
id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
|
|
9
|
+
tenant_id: import("@etohq/framework/utils").TextProperty;
|
|
10
|
+
source_type: import("@etohq/framework/utils").TextProperty;
|
|
11
|
+
storage_key: import("@etohq/framework/utils").TextProperty;
|
|
12
|
+
original_filename: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
13
|
+
content_type: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
14
|
+
size_bytes: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
|
|
15
|
+
checksum_sha256: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
|
|
16
|
+
metadata: import("@etohq/framework/utils").JSONProperty;
|
|
17
|
+
}>, "DatasetSource">;
|
|
18
|
+
//# sourceMappingURL=dataset-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-source.d.ts","sourceRoot":"","sources":["../../src/models/dataset-source.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;oBAqBtB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatasetSource = void 0;
|
|
4
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
5
|
+
/**
|
|
6
|
+
* A persisted reference to raw import bytes (CSV, PDF, etc.) stored elsewhere.
|
|
7
|
+
*
|
|
8
|
+
* The module stores only metadata + a `storage_key` so different apps can use different storage
|
|
9
|
+
* backends without changing the dataset domain.
|
|
10
|
+
*/
|
|
11
|
+
exports.DatasetSource = utils_1.model
|
|
12
|
+
.define("DatasetSource", {
|
|
13
|
+
id: utils_1.model.id({ prefix: "ds_src" }).primaryKey(),
|
|
14
|
+
tenant_id: utils_1.model.text(),
|
|
15
|
+
source_type: utils_1.model.text(),
|
|
16
|
+
storage_key: utils_1.model.text(),
|
|
17
|
+
original_filename: utils_1.model.text().nullable(),
|
|
18
|
+
content_type: utils_1.model.text().nullable(),
|
|
19
|
+
size_bytes: utils_1.model.number().nullable(),
|
|
20
|
+
checksum_sha256: utils_1.model.text().nullable(),
|
|
21
|
+
metadata: utils_1.model.json().default({}),
|
|
22
|
+
})
|
|
23
|
+
.indexes([
|
|
24
|
+
{
|
|
25
|
+
name: "IDX_dataset_source_tenant_storage_key",
|
|
26
|
+
on: ["tenant_id", "storage_key"],
|
|
27
|
+
},
|
|
28
|
+
]);
|
|
29
|
+
//# sourceMappingURL=dataset-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-source.js","sourceRoot":"","sources":["../../src/models/dataset-source.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAE9C;;;;;GAKG;AACU,QAAA,aAAa,GAAG,aAAK;KAC/B,MAAM,CAAC,eAAe,EAAE;IACvB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAE/C,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE;IAEvB,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE;IACzB,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE;IAEzB,iBAAiB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,eAAe,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAExC,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACnC,CAAC;KACD,OAAO,CAAC;IACP;QACE,IAAI,EAAE,uCAAuC;QAC7C,EAAE,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;KACjC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./dataset-source"), exports);
|
|
18
|
+
__exportStar(require("./dataset-draft"), exports);
|
|
19
|
+
__exportStar(require("./dataset-import-run"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,kDAA+B;AAC/B,uDAAoC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Context, DAL, InternalModuleDeclaration, ModulesSdkTypes } from "@etohq/types";
|
|
2
|
+
import type { CreateDatasetDraftDTO, CreateDatasetImportRunDTO, CreateDatasetSourceDTO, DatasetDraftDTO, DatasetImportRunDTO, DatasetSourceDTO, IDatasetModuleService, UpdateDatasetDraftRequestDTO, UpdateDatasetImportRunRequestDTO, UpdateDatasetSourceDTO } from "@etohq/workflows-types";
|
|
3
|
+
import { DatasetDraft, DatasetImportRun, DatasetSource } from "../models";
|
|
4
|
+
type InjectedDependencies = {
|
|
5
|
+
baseRepository: DAL.RepositoryService;
|
|
6
|
+
datasetSourceService: ModulesSdkTypes.IEtoInternalService<typeof DatasetSource>;
|
|
7
|
+
datasetDraftService: ModulesSdkTypes.IEtoInternalService<typeof DatasetDraft>;
|
|
8
|
+
datasetImportRunService: ModulesSdkTypes.IEtoInternalService<typeof DatasetImportRun>;
|
|
9
|
+
};
|
|
10
|
+
declare const DatasetModuleService_base: import("@etohq/framework/utils").EtoServiceReturnType<{
|
|
11
|
+
DatasetSource: {
|
|
12
|
+
dto: DatasetSourceDTO;
|
|
13
|
+
model: typeof DatasetSource;
|
|
14
|
+
};
|
|
15
|
+
DatasetDraft: {
|
|
16
|
+
dto: DatasetDraftDTO;
|
|
17
|
+
model: typeof DatasetDraft;
|
|
18
|
+
};
|
|
19
|
+
DatasetImportRun: {
|
|
20
|
+
dto: DatasetImportRunDTO;
|
|
21
|
+
model: typeof DatasetImportRun;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
export declare class DatasetModuleService extends DatasetModuleService_base implements IDatasetModuleService {
|
|
25
|
+
protected readonly moduleDeclaration: InternalModuleDeclaration;
|
|
26
|
+
protected baseRepository_: DAL.RepositoryService;
|
|
27
|
+
protected datasetSourceService_: ModulesSdkTypes.IEtoInternalService<typeof DatasetSource>;
|
|
28
|
+
protected datasetDraftService_: ModulesSdkTypes.IEtoInternalService<typeof DatasetDraft>;
|
|
29
|
+
protected datasetImportRunService_: ModulesSdkTypes.IEtoInternalService<typeof DatasetImportRun>;
|
|
30
|
+
constructor({ baseRepository, datasetSourceService, datasetDraftService, datasetImportRunService, }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
|
|
31
|
+
createDatasetSources(data: CreateDatasetSourceDTO[], sharedContext?: Context): Promise<DatasetSourceDTO[]>;
|
|
32
|
+
createDatasetSources(data: CreateDatasetSourceDTO, sharedContext?: Context): Promise<DatasetSourceDTO>;
|
|
33
|
+
updateDatasetSources(data: ({
|
|
34
|
+
id: string;
|
|
35
|
+
} & UpdateDatasetSourceDTO)[], sharedContext?: Context): Promise<DatasetSourceDTO[]>;
|
|
36
|
+
updateDatasetSources(data: {
|
|
37
|
+
id: string;
|
|
38
|
+
} & UpdateDatasetSourceDTO, sharedContext?: Context): Promise<DatasetSourceDTO>;
|
|
39
|
+
createDatasetDrafts(data: CreateDatasetDraftDTO[], sharedContext?: Context): Promise<DatasetDraftDTO[]>;
|
|
40
|
+
createDatasetDrafts(data: CreateDatasetDraftDTO, sharedContext?: Context): Promise<DatasetDraftDTO>;
|
|
41
|
+
updateDatasetDrafts(data: UpdateDatasetDraftRequestDTO[], sharedContext?: Context): Promise<DatasetDraftDTO[]>;
|
|
42
|
+
updateDatasetDrafts(data: UpdateDatasetDraftRequestDTO, sharedContext?: Context): Promise<DatasetDraftDTO>;
|
|
43
|
+
createDatasetImportRuns(data: CreateDatasetImportRunDTO[], sharedContext?: Context): Promise<DatasetImportRunDTO[]>;
|
|
44
|
+
createDatasetImportRuns(data: CreateDatasetImportRunDTO, sharedContext?: Context): Promise<DatasetImportRunDTO>;
|
|
45
|
+
updateDatasetImportRuns(data: UpdateDatasetImportRunRequestDTO[], sharedContext?: Context): Promise<DatasetImportRunDTO[]>;
|
|
46
|
+
updateDatasetImportRuns(data: UpdateDatasetImportRunRequestDTO, sharedContext?: Context): Promise<DatasetImportRunDTO>;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=dataset-module.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-module.service.d.ts","sourceRoot":"","sources":["../../src/services/dataset-module.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
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.DatasetModuleService = void 0;
|
|
16
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
17
|
+
const models_1 = require("../models");
|
|
18
|
+
const allowedDraftTransitions = {
|
|
19
|
+
draft: ["ready", "archived"],
|
|
20
|
+
ready: ["archived"],
|
|
21
|
+
archived: [],
|
|
22
|
+
};
|
|
23
|
+
const allowedRunTransitions = {
|
|
24
|
+
queued: ["running", "canceled"],
|
|
25
|
+
running: ["succeeded", "failed", "canceled"],
|
|
26
|
+
succeeded: [],
|
|
27
|
+
failed: [],
|
|
28
|
+
canceled: [],
|
|
29
|
+
};
|
|
30
|
+
function assertNonNegativeInteger(value, label) {
|
|
31
|
+
if (!Number.isFinite(value) || value < 0 || Math.floor(value) !== value) {
|
|
32
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, `${label} must be a non-negative integer`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function assertAllowedTransition(params) {
|
|
36
|
+
if (params.from === params.to) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!params.allowed.includes(params.to)) {
|
|
40
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, `${params.label} transition not allowed: ${params.from} -> ${params.to}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function assertDraftReadyRequirements(input) {
|
|
44
|
+
if (!input.schema_spec) {
|
|
45
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "schema_spec is required");
|
|
46
|
+
}
|
|
47
|
+
if (input.kind === "csv") {
|
|
48
|
+
if (!input.dataset_import_spec) {
|
|
49
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "dataset_import_spec is required for csv drafts");
|
|
50
|
+
}
|
|
51
|
+
const target = input.dataset_import_spec.target;
|
|
52
|
+
if (target.schema_id !== input.schema_spec.id ||
|
|
53
|
+
target.schema_version !== input.schema_spec.version) {
|
|
54
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "dataset_import_spec target must match schema_spec (id + version)");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (input.kind === "pdf") {
|
|
58
|
+
if (!input.pdf_extract_spec) {
|
|
59
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "pdf_extract_spec is required for pdf drafts");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function assertRunCounters(input) {
|
|
64
|
+
const total = input.records_total;
|
|
65
|
+
const succeeded = input.records_succeeded;
|
|
66
|
+
const failed = input.records_failed;
|
|
67
|
+
if (total !== null && total !== undefined) {
|
|
68
|
+
assertNonNegativeInteger(total, "records_total");
|
|
69
|
+
}
|
|
70
|
+
if (succeeded !== null && succeeded !== undefined) {
|
|
71
|
+
assertNonNegativeInteger(succeeded, "records_succeeded");
|
|
72
|
+
}
|
|
73
|
+
if (failed !== null && failed !== undefined) {
|
|
74
|
+
assertNonNegativeInteger(failed, "records_failed");
|
|
75
|
+
}
|
|
76
|
+
if (total !== null &&
|
|
77
|
+
total !== undefined &&
|
|
78
|
+
succeeded !== null &&
|
|
79
|
+
succeeded !== undefined &&
|
|
80
|
+
succeeded > total) {
|
|
81
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "records_succeeded cannot exceed records_total");
|
|
82
|
+
}
|
|
83
|
+
if (total !== null &&
|
|
84
|
+
total !== undefined &&
|
|
85
|
+
failed !== null &&
|
|
86
|
+
failed !== undefined &&
|
|
87
|
+
failed > total) {
|
|
88
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "records_failed cannot exceed records_total");
|
|
89
|
+
}
|
|
90
|
+
if (total !== null &&
|
|
91
|
+
total !== undefined &&
|
|
92
|
+
succeeded !== null &&
|
|
93
|
+
succeeded !== undefined &&
|
|
94
|
+
failed !== null &&
|
|
95
|
+
failed !== undefined &&
|
|
96
|
+
succeeded + failed > total) {
|
|
97
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "records_succeeded + records_failed cannot exceed records_total");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
class DatasetModuleService extends (0, utils_1.EtoService)({
|
|
101
|
+
DatasetSource: models_1.DatasetSource,
|
|
102
|
+
DatasetDraft: models_1.DatasetDraft,
|
|
103
|
+
DatasetImportRun: models_1.DatasetImportRun,
|
|
104
|
+
}) {
|
|
105
|
+
constructor({ baseRepository, datasetSourceService, datasetDraftService, datasetImportRunService, }, moduleDeclaration) {
|
|
106
|
+
super(...arguments);
|
|
107
|
+
this.moduleDeclaration = moduleDeclaration;
|
|
108
|
+
this.baseRepository_ = baseRepository;
|
|
109
|
+
this.datasetSourceService_ = datasetSourceService;
|
|
110
|
+
this.datasetDraftService_ = datasetDraftService;
|
|
111
|
+
this.datasetImportRunService_ = datasetImportRunService;
|
|
112
|
+
}
|
|
113
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
114
|
+
async createDatasetSources(data, sharedContext = {}) {
|
|
115
|
+
const input = Array.isArray(data) ? data : [data];
|
|
116
|
+
const created = await this.datasetSourceService_.create(input, sharedContext);
|
|
117
|
+
const serialized = await this.baseRepository_.serialize(created);
|
|
118
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
119
|
+
}
|
|
120
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
121
|
+
async updateDatasetSources(data, sharedContext = {}) {
|
|
122
|
+
const input = Array.isArray(data) ? data : [data];
|
|
123
|
+
const updated = await this.datasetSourceService_.update(input, sharedContext);
|
|
124
|
+
const serialized = await this.baseRepository_.serialize(updated);
|
|
125
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
126
|
+
}
|
|
127
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
128
|
+
async createDatasetDrafts(data, sharedContext = {}) {
|
|
129
|
+
const input = (Array.isArray(data) ? data : [data]).map((d) => ({
|
|
130
|
+
...d,
|
|
131
|
+
status: d.status ?? "draft",
|
|
132
|
+
revision: d.revision ?? 1,
|
|
133
|
+
is_template: d.is_template ?? false,
|
|
134
|
+
metadata: d.metadata ?? {},
|
|
135
|
+
}));
|
|
136
|
+
input.forEach((d) => {
|
|
137
|
+
const status = d.status ?? "draft";
|
|
138
|
+
if (status === "ready") {
|
|
139
|
+
assertDraftReadyRequirements({
|
|
140
|
+
kind: d.kind,
|
|
141
|
+
schema_spec: d.schema_spec ?? null,
|
|
142
|
+
dataset_import_spec: d.dataset_import_spec ?? null,
|
|
143
|
+
pdf_extract_spec: d.pdf_extract_spec ?? null,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
const created = await this.datasetDraftService_.create(input, sharedContext);
|
|
148
|
+
const serialized = await this.baseRepository_.serialize(created);
|
|
149
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
150
|
+
}
|
|
151
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
152
|
+
async updateDatasetDrafts(data, sharedContext = {}) {
|
|
153
|
+
const input = Array.isArray(data) ? data : [data];
|
|
154
|
+
const updated = await Promise.all(input.map(async (patch) => {
|
|
155
|
+
const existing = (await this.datasetDraftService_.retrieve(patch.id, {}, sharedContext));
|
|
156
|
+
const currentRevision = typeof existing.revision === "number" ? existing.revision : 1;
|
|
157
|
+
if (patch.expected_revision !== null &&
|
|
158
|
+
patch.expected_revision !== undefined &&
|
|
159
|
+
patch.expected_revision !== currentRevision) {
|
|
160
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, `stale draft update: expected_revision=${patch.expected_revision}, current_revision=${currentRevision}`);
|
|
161
|
+
}
|
|
162
|
+
const nextStatus = (patch.status ?? existing.status);
|
|
163
|
+
assertAllowedTransition({
|
|
164
|
+
label: "DatasetDraft.status",
|
|
165
|
+
from: existing.status,
|
|
166
|
+
to: nextStatus,
|
|
167
|
+
allowed: allowedDraftTransitions[existing.status],
|
|
168
|
+
});
|
|
169
|
+
if (nextStatus === "ready") {
|
|
170
|
+
assertDraftReadyRequirements({
|
|
171
|
+
kind: (existing.kind ?? "csv"),
|
|
172
|
+
schema_spec: (patch.schema_spec ?? existing.schema_spec),
|
|
173
|
+
dataset_import_spec: (patch.dataset_import_spec ??
|
|
174
|
+
existing.dataset_import_spec),
|
|
175
|
+
pdf_extract_spec: (patch.pdf_extract_spec ??
|
|
176
|
+
existing.pdf_extract_spec),
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const { expected_revision: _, ...dataWithoutExpected } = patch;
|
|
180
|
+
const result = await this.datasetDraftService_.update([
|
|
181
|
+
{
|
|
182
|
+
...dataWithoutExpected,
|
|
183
|
+
revision: currentRevision + 1,
|
|
184
|
+
},
|
|
185
|
+
], sharedContext);
|
|
186
|
+
return result[0];
|
|
187
|
+
}));
|
|
188
|
+
const serialized = await this.baseRepository_.serialize(updated);
|
|
189
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
190
|
+
}
|
|
191
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
192
|
+
async createDatasetImportRuns(data, sharedContext = {}) {
|
|
193
|
+
const input = Array.isArray(data) ? data : [data];
|
|
194
|
+
input.forEach((r) => assertRunCounters({
|
|
195
|
+
records_total: r.records_total,
|
|
196
|
+
records_succeeded: r.records_succeeded,
|
|
197
|
+
records_failed: r.records_failed,
|
|
198
|
+
}));
|
|
199
|
+
const created = await this.datasetImportRunService_.create(input, sharedContext);
|
|
200
|
+
const serialized = await this.baseRepository_.serialize(created);
|
|
201
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
202
|
+
}
|
|
203
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
204
|
+
async updateDatasetImportRuns(data, sharedContext = {}) {
|
|
205
|
+
const input = Array.isArray(data) ? data : [data];
|
|
206
|
+
const updated = await Promise.all(input.map(async (patch) => {
|
|
207
|
+
const existing = (await this.datasetImportRunService_.retrieve(patch.id, {}, sharedContext));
|
|
208
|
+
const nextStatus = (patch.status ?? existing.status);
|
|
209
|
+
assertAllowedTransition({
|
|
210
|
+
label: "DatasetImportRun.status",
|
|
211
|
+
from: existing.status,
|
|
212
|
+
to: nextStatus,
|
|
213
|
+
allowed: allowedRunTransitions[existing.status],
|
|
214
|
+
});
|
|
215
|
+
assertRunCounters({
|
|
216
|
+
records_total: patch.records_total ?? existing.records_total,
|
|
217
|
+
records_succeeded: patch.records_succeeded ?? existing.records_succeeded,
|
|
218
|
+
records_failed: patch.records_failed ?? existing.records_failed,
|
|
219
|
+
});
|
|
220
|
+
const result = await this.datasetImportRunService_.update([patch], sharedContext);
|
|
221
|
+
return result[0];
|
|
222
|
+
}));
|
|
223
|
+
const serialized = await this.baseRepository_.serialize(updated);
|
|
224
|
+
return Array.isArray(data) ? serialized : serialized[0];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.DatasetModuleService = DatasetModuleService;
|
|
228
|
+
__decorate([
|
|
229
|
+
(0, utils_1.InjectManager)()
|
|
230
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
231
|
+
,
|
|
232
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
233
|
+
__metadata("design:type", Function),
|
|
234
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
235
|
+
__metadata("design:returntype", Promise)
|
|
236
|
+
], DatasetModuleService.prototype, "createDatasetSources", null);
|
|
237
|
+
__decorate([
|
|
238
|
+
(0, utils_1.InjectManager)()
|
|
239
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
240
|
+
,
|
|
241
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
242
|
+
__metadata("design:type", Function),
|
|
243
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
244
|
+
__metadata("design:returntype", Promise)
|
|
245
|
+
], DatasetModuleService.prototype, "updateDatasetSources", null);
|
|
246
|
+
__decorate([
|
|
247
|
+
(0, utils_1.InjectTransactionManager)()
|
|
248
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
249
|
+
,
|
|
250
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
251
|
+
__metadata("design:type", Function),
|
|
252
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
253
|
+
__metadata("design:returntype", Promise)
|
|
254
|
+
], DatasetModuleService.prototype, "createDatasetDrafts", null);
|
|
255
|
+
__decorate([
|
|
256
|
+
(0, utils_1.InjectTransactionManager)()
|
|
257
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
258
|
+
,
|
|
259
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
260
|
+
__metadata("design:type", Function),
|
|
261
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
262
|
+
__metadata("design:returntype", Promise)
|
|
263
|
+
], DatasetModuleService.prototype, "updateDatasetDrafts", null);
|
|
264
|
+
__decorate([
|
|
265
|
+
(0, utils_1.InjectTransactionManager)()
|
|
266
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
267
|
+
,
|
|
268
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
269
|
+
__metadata("design:type", Function),
|
|
270
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
271
|
+
__metadata("design:returntype", Promise)
|
|
272
|
+
], DatasetModuleService.prototype, "createDatasetImportRuns", null);
|
|
273
|
+
__decorate([
|
|
274
|
+
(0, utils_1.InjectTransactionManager)()
|
|
275
|
+
// @ts-expect-error strict DTO input (module contract), base type is broader
|
|
276
|
+
,
|
|
277
|
+
__param(1, (0, utils_1.EtoContext)()),
|
|
278
|
+
__metadata("design:type", Function),
|
|
279
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
280
|
+
__metadata("design:returntype", Promise)
|
|
281
|
+
], DatasetModuleService.prototype, "updateDatasetImportRuns", null);
|
|
282
|
+
//# sourceMappingURL=dataset-module.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-module.service.js","sourceRoot":"","sources":["../../src/services/dataset-module.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./dataset-module.service"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/index.ts","../src/models/dataset-draft.ts","../src/models/dataset-import-run.ts","../src/models/dataset-source.ts","../src/models/index.ts","../src/services/dataset-module.service.ts","../src/services/index.ts"],"version":"5.8.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@etohq/workflows-dataset-module",
|
|
3
|
+
"version": "0.0.1-next-20260318155517",
|
|
4
|
+
"description": "Eto Workflows dataset module (sources + drafts persistence for dataset onboarding/import previews)",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"!dist/**/__tests__",
|
|
17
|
+
"!dist/**/__mocks__",
|
|
18
|
+
"!dist/**/__fixtures__"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@etohq/framework": "1.5.5-next-20260317140633",
|
|
22
|
+
"@etohq/types": "1.5.5-next-20260317140633",
|
|
23
|
+
"@etohq/utils": "1.5.5-next-20260317140633",
|
|
24
|
+
"@etohq/workflows-types": "0.0.1-next-20260318155517"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@etohq/test-utils": "1.5.5-next-20260317140633",
|
|
28
|
+
"@mikro-orm/core": "6.4.3",
|
|
29
|
+
"@mikro-orm/knex": "6.4.3",
|
|
30
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
31
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
32
|
+
"@types/node": "22.10.5",
|
|
33
|
+
"awilix": "8.0.1",
|
|
34
|
+
"rimraf": "5.0.2",
|
|
35
|
+
"typescript": "5.8.3"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "rimraf dist && tsc --build",
|
|
39
|
+
"watch": "tsc --build --watch",
|
|
40
|
+
"test": "jest --runInBand --bail --passWithNoTests --forceExit -- src",
|
|
41
|
+
"test:integration": "NODE_OPTIONS=--experimental-vm-modules jest --runInBand --bail --forceExit --testMatch '**/integration-tests/**/__tests__/**/*.spec.ts'"
|
|
42
|
+
}
|
|
43
|
+
}
|