@saltcorn/data 1.1.0-beta.2 → 1.1.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-plugin/actions.d.ts +135 -10
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +266 -45
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/index.d.ts +126 -123
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +14 -9
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +7 -4
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +72 -10
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/room.js +7 -2
- package/dist/base-plugin/viewtemplates/room.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +7 -4
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +10 -11
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/state.d.ts +16 -0
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +55 -3
- package/dist/db/state.js.map +1 -1
- package/dist/migrations/202412051957.d.ts +3 -0
- package/dist/migrations/202412051957.d.ts.map +1 -0
- package/dist/migrations/202412051957.js +48 -0
- package/dist/migrations/202412051957.js.map +1 -0
- package/dist/migrations/202412111526.d.ts +3 -0
- package/dist/migrations/202412111526.d.ts.map +1 -0
- package/dist/migrations/202412111526.js +38 -0
- package/dist/migrations/202412111526.js.map +1 -0
- package/dist/models/config.d.ts +0 -2
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +44 -34
- package/dist/models/config.js.map +1 -1
- package/dist/models/email.d.ts +1 -1
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +16 -2
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +22 -4
- package/dist/models/field.js.map +1 -1
- package/dist/models/file.d.ts +5 -2
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js +3 -3
- package/dist/models/file.js.map +1 -1
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js +5 -1
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts +2 -2
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +3 -1
- package/dist/models/page.js.map +1 -1
- package/dist/models/page_group.d.ts.map +1 -1
- package/dist/models/page_group.js +7 -1
- package/dist/models/page_group.js.map +1 -1
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +4 -0
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +1 -0
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +34 -3
- package/dist/models/table.js.map +1 -1
- package/dist/models/trigger.d.ts +5 -1
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +38 -7
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/view.js +3 -3
- package/dist/models/workflow_run.d.ts +77 -0
- package/dist/models/workflow_run.d.ts.map +1 -0
- package/dist/models/workflow_run.js +394 -0
- package/dist/models/workflow_run.js.map +1 -0
- package/dist/models/workflow_step.d.ts +58 -0
- package/dist/models/workflow_step.d.ts.map +1 -0
- package/dist/models/workflow_step.js +144 -0
- package/dist/models/workflow_step.js.map +1 -0
- package/dist/models/workflow_trace.d.ts +57 -0
- package/dist/models/workflow_trace.d.ts.map +1 -0
- package/dist/models/workflow_trace.js +90 -0
- package/dist/models/workflow_trace.js.map +1 -0
- package/dist/plugin-helper.d.ts +1 -0
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +8 -9
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/actions.test.js +5 -2
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/auxtest.test.js +6 -3
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/config.test.js +2 -2
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/field.test.js +47 -0
- package/dist/tests/field.test.js.map +1 -1
- package/dist/tests/mocks.d.ts +1 -1
- package/dist/tests/mocks.js +1 -1
- package/dist/tests/mocks.js.map +1 -1
- package/dist/tests/workflow.test.js +9 -0
- package/dist/tests/workflow.test.js.map +1 -1
- package/dist/tests/workflow_run.test.d.ts +2 -0
- package/dist/tests/workflow_run.test.d.ts.map +1 -0
- package/dist/tests/workflow_run.test.js +109 -0
- package/dist/tests/workflow_run.test.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +15 -0
- package/dist/utils.js.map +1 -1
- package/package.json +10 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_step.d.ts","sourceRoot":"","sources":["../../models/workflow_step.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,IAAI,MAAM,QAAQ,CAAC;AAO1B;;;GAGG;AACH,cAAM,YAAY;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC;IAEnB;;;OAGG;gBACS,CAAC,EAAE,eAAe,GAAG,YAAY;IAc7C;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;OAEG;IACH,IAAI,MAAM,IAAI,GAAG,CAGhB;IAED;;;;OAIG;WACU,IAAI,CACf,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1B;;;OAGG;WACU,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzD;;;OAGG;IACH;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;WAOhB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhE;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/B,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;CAmDnC;AAED,SAAS,YAAY,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Workflow step Database Access Layer
|
|
7
|
+
* @category saltcorn-data
|
|
8
|
+
* @module models/workflow_step
|
|
9
|
+
* @subcategory models
|
|
10
|
+
*/
|
|
11
|
+
const db_1 = __importDefault(require("../db"));
|
|
12
|
+
const trigger_1 = __importDefault(require("./trigger"));
|
|
13
|
+
const table_1 = __importDefault(require("./table"));
|
|
14
|
+
const expression_1 = __importDefault(require("./expression"));
|
|
15
|
+
const { eval_expression } = expression_1.default;
|
|
16
|
+
const { getState } = require("../db/state");
|
|
17
|
+
/**
|
|
18
|
+
* WorkflowStep Class
|
|
19
|
+
* @category saltcorn-data
|
|
20
|
+
*/
|
|
21
|
+
class WorkflowStep {
|
|
22
|
+
/**
|
|
23
|
+
* WorkflowStep constructor
|
|
24
|
+
* @param {object} o
|
|
25
|
+
*/
|
|
26
|
+
constructor(o) {
|
|
27
|
+
this.id = o.id;
|
|
28
|
+
this.name = o.name;
|
|
29
|
+
this.trigger_id = o.trigger_id;
|
|
30
|
+
this.next_step = o.next_step;
|
|
31
|
+
this.only_if = o.only_if;
|
|
32
|
+
this.action_name = o.action_name;
|
|
33
|
+
this.initial_step = !!o.initial_step;
|
|
34
|
+
this.configuration =
|
|
35
|
+
typeof o.configuration === "string"
|
|
36
|
+
? JSON.parse(o.configuration)
|
|
37
|
+
: o.configuration;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @param {object} lib_in
|
|
41
|
+
*/
|
|
42
|
+
static async create(step_in) {
|
|
43
|
+
const step = new WorkflowStep(step_in);
|
|
44
|
+
if (step.initial_step) {
|
|
45
|
+
await db_1.default.updateWhere("_sc_workflow_steps", { initial_step: false }, {
|
|
46
|
+
trigger_id: step.trigger_id,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return await db_1.default.insert("_sc_workflow_steps", step.toJson);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @type {...*}
|
|
53
|
+
*/
|
|
54
|
+
get toJson() {
|
|
55
|
+
const { id, ...rest } = this;
|
|
56
|
+
return rest;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @param {*} where
|
|
60
|
+
* @param {*} selectopts
|
|
61
|
+
* @returns {WorkflowStep[]}
|
|
62
|
+
*/
|
|
63
|
+
static async find(where, selectopts) {
|
|
64
|
+
const us = await db_1.default.select("_sc_workflow_steps", where, selectopts);
|
|
65
|
+
return us.map((u) => new WorkflowStep(u));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @param {*} where
|
|
69
|
+
* @returns {WorkflowStep}
|
|
70
|
+
*/
|
|
71
|
+
static async findOne(where) {
|
|
72
|
+
const u = await db_1.default.selectMaybeOne("_sc_workflow_steps", where);
|
|
73
|
+
return u ? new WorkflowStep(u) : u;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @param {*} what
|
|
77
|
+
* @returns {object}
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* @returns {Promise<void>}
|
|
81
|
+
*/
|
|
82
|
+
async delete() {
|
|
83
|
+
const schema = db_1.default.getTenantSchemaPrefix();
|
|
84
|
+
await db_1.default.query(`delete FROM ${schema}_sc_workflow_steps WHERE id = $1`, [
|
|
85
|
+
this.id,
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
static async deleteForTrigger(trigger_id) {
|
|
89
|
+
const schema = db_1.default.getTenantSchemaPrefix();
|
|
90
|
+
await db_1.default.query(`delete FROM ${schema}_sc_workflow_steps WHERE trigger_id = $1`, [trigger_id]);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @param {*} row
|
|
94
|
+
* @returns {Promise<void>}
|
|
95
|
+
*/
|
|
96
|
+
async update(row) {
|
|
97
|
+
if (row.initial_step) {
|
|
98
|
+
await db_1.default.updateWhere("_sc_workflow_steps", { initial_step: false }, {
|
|
99
|
+
trigger_id: this.trigger_id,
|
|
100
|
+
not: { id: this.id },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
await db_1.default.update("_sc_workflow_steps", row, this.id);
|
|
104
|
+
}
|
|
105
|
+
async run(context, user) {
|
|
106
|
+
if (this.only_if) {
|
|
107
|
+
const proceed = eval_expression(this.only_if, context, user, `Only if expression in ${this.name} step`);
|
|
108
|
+
if (!proceed)
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (this.action_name === "TableQuery") {
|
|
112
|
+
const table = table_1.default.findOne({ name: this.configuration.query_table });
|
|
113
|
+
if (!table)
|
|
114
|
+
throw new Error(`Table ${this.configuration.query_table} not found`);
|
|
115
|
+
const query = eval_expression(this.configuration.query_object, context, user, `Query expression in ${this.name} step`);
|
|
116
|
+
const rows = await table.getRows(query);
|
|
117
|
+
return { [this.configuration.query_variable]: rows };
|
|
118
|
+
}
|
|
119
|
+
if (this.action_name === "SetContext") {
|
|
120
|
+
return eval_expression(this.configuration.ctx_values, context, user, `Context values expression in ${this.name} step`);
|
|
121
|
+
}
|
|
122
|
+
let state_action = getState().actions[this.action_name];
|
|
123
|
+
if (state_action) {
|
|
124
|
+
return await state_action.run({
|
|
125
|
+
configuration: this.configuration,
|
|
126
|
+
user,
|
|
127
|
+
row: context,
|
|
128
|
+
mode: "workflow",
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const trigger = await trigger_1.default.findOne({ name: this.action_name });
|
|
133
|
+
state_action = getState().actions[trigger.action];
|
|
134
|
+
return await state_action.run({
|
|
135
|
+
configuration: trigger.configuration,
|
|
136
|
+
user,
|
|
137
|
+
row: context,
|
|
138
|
+
mode: "workflow",
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
module.exports = WorkflowStep;
|
|
144
|
+
//# sourceMappingURL=workflow_step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_step.js","sourceRoot":"","sources":["../../models/workflow_step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Where, SelectOptions } from "@saltcorn/db-common/internal";
|
|
2
|
+
import type { WorkflowTraceCfg } from "@saltcorn/types/model-abstracts/abstract_workflow_trace";
|
|
3
|
+
/**
|
|
4
|
+
* WorkflowTrace Class
|
|
5
|
+
* @category saltcorn-data
|
|
6
|
+
*/
|
|
7
|
+
declare class WorkflowTrace {
|
|
8
|
+
id?: number;
|
|
9
|
+
run_id: number;
|
|
10
|
+
context: any;
|
|
11
|
+
step_name_run: string;
|
|
12
|
+
wait_info?: any;
|
|
13
|
+
step_started_at: Date;
|
|
14
|
+
elapsed: number;
|
|
15
|
+
user_id?: number;
|
|
16
|
+
error?: string;
|
|
17
|
+
status: "Pending" | "Running" | "Finished" | "Waiting" | "Error";
|
|
18
|
+
/**
|
|
19
|
+
* WorkflowTrace constructor
|
|
20
|
+
* @param {object} o
|
|
21
|
+
*/
|
|
22
|
+
constructor(o: WorkflowTraceCfg | WorkflowTrace);
|
|
23
|
+
/**
|
|
24
|
+
* @param {object} lib_in
|
|
25
|
+
*/
|
|
26
|
+
static create(run_in: WorkflowTraceCfg): Promise<WorkflowTrace>;
|
|
27
|
+
/**
|
|
28
|
+
* @type {...*}
|
|
29
|
+
*/
|
|
30
|
+
get toJson(): any;
|
|
31
|
+
/**
|
|
32
|
+
* @param {*} where
|
|
33
|
+
* @param {*} selectopts
|
|
34
|
+
* @returns {WorkflowTrace[]}
|
|
35
|
+
*/
|
|
36
|
+
static find(where: Where, selectopts?: SelectOptions): Promise<WorkflowTrace[]>;
|
|
37
|
+
/**
|
|
38
|
+
* @param {*} where
|
|
39
|
+
* @returns {WorkflowTrace}
|
|
40
|
+
*/
|
|
41
|
+
static findOne(where: Where): Promise<WorkflowTrace>;
|
|
42
|
+
/**
|
|
43
|
+
* @param {*} what
|
|
44
|
+
* @returns {object}
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* @returns {Promise<void>}
|
|
48
|
+
*/
|
|
49
|
+
delete(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* @param {*} row
|
|
52
|
+
* @returns {Promise<void>}
|
|
53
|
+
*/
|
|
54
|
+
static count(where?: Where): Promise<number>;
|
|
55
|
+
}
|
|
56
|
+
export = WorkflowTrace;
|
|
57
|
+
//# sourceMappingURL=workflow_trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_trace.d.ts","sourceRoot":"","sources":["../../models/workflow_trace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAO,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAEhG;;;GAGG;AACH,cAAM,aAAa;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,eAAe,EAAE,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAEjE;;;OAGG;gBACS,CAAC,EAAE,gBAAgB,GAAG,aAAa;IAe/C;;OAEG;WACU,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOrE;;OAEG;IACH,IAAI,MAAM,IAAI,GAAG,CAGhB;IAED;;;;OAIG;WACU,IAAI,CACf,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;;OAGG;WACU,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;IAK1D;;;OAGG;IACH;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B;;;OAGG;WAEU,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAGnD;AAED,SAAS,aAAa,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Workflow Trace Database Access Layer
|
|
7
|
+
* @category saltcorn-data
|
|
8
|
+
* @module models/workflow_trace
|
|
9
|
+
* @subcategory models
|
|
10
|
+
*/
|
|
11
|
+
const db_1 = __importDefault(require("../db"));
|
|
12
|
+
/**
|
|
13
|
+
* WorkflowTrace Class
|
|
14
|
+
* @category saltcorn-data
|
|
15
|
+
*/
|
|
16
|
+
class WorkflowTrace {
|
|
17
|
+
/**
|
|
18
|
+
* WorkflowTrace constructor
|
|
19
|
+
* @param {object} o
|
|
20
|
+
*/
|
|
21
|
+
constructor(o) {
|
|
22
|
+
this.id = o.id;
|
|
23
|
+
this.run_id = o.run_id;
|
|
24
|
+
this.context =
|
|
25
|
+
typeof o.context === "string" ? JSON.parse(o.context) : o.context || {};
|
|
26
|
+
this.wait_info =
|
|
27
|
+
typeof o.wait_info === "string" ? JSON.parse(o.wait_info) : o.wait_info;
|
|
28
|
+
this.step_started_at = o.step_started_at || new Date();
|
|
29
|
+
this.user_id = o.user_id;
|
|
30
|
+
this.error = o.error;
|
|
31
|
+
this.status = o.status || "Pending";
|
|
32
|
+
this.step_name_run = o.step_name_run;
|
|
33
|
+
this.elapsed = o.elapsed;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @param {object} lib_in
|
|
37
|
+
*/
|
|
38
|
+
static async create(run_in) {
|
|
39
|
+
const run = new WorkflowTrace(run_in);
|
|
40
|
+
const id = await db_1.default.insert("_sc_workflow_trace", run.toJson);
|
|
41
|
+
run.id = id;
|
|
42
|
+
return run;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @type {...*}
|
|
46
|
+
*/
|
|
47
|
+
get toJson() {
|
|
48
|
+
const { id, ...rest } = this;
|
|
49
|
+
return rest;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @param {*} where
|
|
53
|
+
* @param {*} selectopts
|
|
54
|
+
* @returns {WorkflowTrace[]}
|
|
55
|
+
*/
|
|
56
|
+
static async find(where, selectopts) {
|
|
57
|
+
const us = await db_1.default.select("_sc_workflow_trace", where, selectopts);
|
|
58
|
+
return us.map((u) => new WorkflowTrace(u));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @param {*} where
|
|
62
|
+
* @returns {WorkflowTrace}
|
|
63
|
+
*/
|
|
64
|
+
static async findOne(where) {
|
|
65
|
+
const u = await db_1.default.selectMaybeOne("_sc_workflow_trace", where);
|
|
66
|
+
return u ? new WorkflowTrace(u) : u;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param {*} what
|
|
70
|
+
* @returns {object}
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* @returns {Promise<void>}
|
|
74
|
+
*/
|
|
75
|
+
async delete() {
|
|
76
|
+
const schema = db_1.default.getTenantSchemaPrefix();
|
|
77
|
+
await db_1.default.query(`delete FROM ${schema}_sc_workflow_trace WHERE id = $1`, [
|
|
78
|
+
this.id,
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @param {*} row
|
|
83
|
+
* @returns {Promise<void>}
|
|
84
|
+
*/
|
|
85
|
+
static async count(where) {
|
|
86
|
+
return await db_1.default.count("_sc_workflow_trace", where);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
module.exports = WorkflowTrace;
|
|
90
|
+
//# sourceMappingURL=workflow_trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow_trace.js","sourceRoot":"","sources":["../../models/workflow_trace.ts"],"names":[],"mappings":";;;;AAAA;;;;;GAKG;AACH,+CAAuB;AAIvB;;;GAGG;AACH,MAAM,aAAa;IAYjB;;;OAGG;IACH,YAAY,CAAmC;QAC7C,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,OAAO;YACV,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1E,IAAI,CAAC,SAAS;YACZ,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAwB;QAC1C,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,YAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7D,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,KAAY,EACZ,UAA0B;QAE1B,MAAM,EAAE,GAAG,MAAM,YAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACpE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAY;QAC/B,MAAM,CAAC,GAAG,MAAM,YAAE,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,YAAE,CAAC,qBAAqB,EAAE,CAAC;QAC1C,MAAM,YAAE,CAAC,KAAK,CAAC,eAAe,MAAM,kCAAkC,EAAE;YACtE,IAAI,CAAC,EAAE;SACR,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IAEH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAa;QAC9B,OAAO,MAAM,YAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACF;AAED,iBAAS,aAAa,CAAC"}
|
package/dist/plugin-helper.d.ts
CHANGED
|
@@ -261,5 +261,6 @@ import { sqlBinOp } from "@saltcorn/db-common/internal";
|
|
|
261
261
|
import { sqlFun } from "@saltcorn/db-common/internal";
|
|
262
262
|
import Table = require("./models/table");
|
|
263
263
|
import Field = require("./models/field");
|
|
264
|
+
import View = require("./models/view");
|
|
264
265
|
export { add_free_variables_to_joinfields, sqlBinOp, sqlFun };
|
|
265
266
|
//# sourceMappingURL=plugin-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-helper.d.ts","sourceRoot":"","sources":["../plugin-helper.js"],"names":[],"mappings":"AAkwBA;;;;;;;;;GASG;AACH,wHARW,KAAK,GAAC,MAAM,GAMV,QAAQ,MAAM,EAAE,CAAC,CA0mB7B;AAkLD;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,UACR,KAAK,EAAE,sCAGL,MAAM,CA2NlB;AA/SD;;;;;;;;;;;;;;;;;;;;;;;;;EA2EC;AA9KD;;;;;;;GAOG;AACH,uCALW,KAAK,GAAC,MAAM,YACZ,MAAM,sBAEJ,QAAQ,MAAM,EAAE,CAAC,CAoC7B;AAED;;;;;;GAMG;AACH,wCAJW,KAAK,GAAC,MAAM,YACZ,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAoB7B;AAgeD;;;;;;;;;GASG;AACH;IAPyB,MAAM,EAApB,KAAK,EAAE;IACM,KAAK,EAAlB,MAAM;IACQ,MAAM;IACL,WAAW;IACd,KAAK,EAAjB,KAAK;IACH,MAAM,CAsPlB;AA/YD;;;;;GAKG;AACH,2FAHW,MAAM,GACJ,MAAM,CAuElB;AAsUD;;;;;GAKG;AACH,iEAuHG;AAjnEH;;;;;;GAMG;AACH,2CALW,KAAK,EAAE,sCAGL,MAAM,CA2FlB;AAED;;;;;;GAMG;AACH,+EAkBC;AA0TD;;;;;GAKG;AACH,0CAJW,KAAK,GAAC,MAAM,YACZ,MAAM;oBACqB,MAAM,EAAE;GAqJ7C;AAgjDD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CA0ClB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AA9uED;;;;GAIG;AACH,iFAFa,MAAM,CAoBlB;AA3HD;;;;;;;;;;;;;;;;GAgBG;AACH,gCAfW,MAAM,SACN,MAAM,sWAYJ,UAAQ,CAmFpB;AA2mBD;;;;;GAKG;AACH,8CAJW,MAAM,SACN,MAAM,eACJ,QAAQ,MAAM,EAAE,CAAC,CAKC;AA5d/B;;;;;;GAMG;AACH,0CALW,KAAK,EAAE,mCAGL,QAAQ,MAAM,CAAC,CAkC3B;AA+8DD;;;;GAIG;AAEH,kCAJW,MAAM,GACJ,MAAM,GAAC,SAAS,CAM5B;AAgOD;;;;;;GAMG;AACH,yDALW,MAAM,GAGJ,YAAU,CAuFtB;AAlOD;;;;;;GAMG;AACH,8EAHW,MAAM,EAAE,GACN,MAAM,CA+HlB;;AAjlED;;;;;GAKG;AACH,kDAJW,KAAK,YACL,MAAM,8BAgDhB;AAED;;;;;;;GAOG;AACH,uDAJW,KAAK,YACL,MAAM;;;KAkChB;AAED;;;;;;;GAOG;AACH,uDANW,KAAK,YACL,MAAM,SACN,MAAM,QACN,MAAM,EAAE,OAuElB;AA8gED;;;;;;;;;;;;;;;;;;;;GAoCC;AAED;;;;GAIG;AACH;;;;;cA0BC;AA5ED,mDAK6B"}
|
package/dist/plugin-helper.js
CHANGED
|
@@ -14,7 +14,7 @@ const db = require("./db");
|
|
|
14
14
|
const { button, a, text, i, text_attr } = require("@saltcorn/markup/tags");
|
|
15
15
|
const { show_icon_and_label } = require("@saltcorn/markup/layout_utils");
|
|
16
16
|
const { Relation, RelationType, ViewDisplayType, parseRelationPath, buildRelationPath, } = require("@saltcorn/common-code");
|
|
17
|
-
const { applyAsync, InvalidConfiguration, mergeActionResults, structuredClone, mergeIntoWhere, } = require("./utils");
|
|
17
|
+
const { applyAsync, InvalidConfiguration, mergeActionResults, structuredClone, mergeIntoWhere, validSqlId, } = require("./utils");
|
|
18
18
|
const { jsexprToWhere, freeVariables, add_free_variables_to_joinfields, eval_expression, freeVariablesInInterpolation, } = require("./models/expression");
|
|
19
19
|
const { traverseSync } = require("./models/layout");
|
|
20
20
|
const { isNode } = require("./utils");
|
|
@@ -1358,9 +1358,7 @@ const picked_fields_to_query = (columns, fields, layout, req, table) => {
|
|
|
1358
1358
|
if (column.join_field.includes("->")) {
|
|
1359
1359
|
const [relation, target] = column.join_field.split("->");
|
|
1360
1360
|
const [ontable, ref] = relation.split(".");
|
|
1361
|
-
const targetNm = `${ref}_${ontable
|
|
1362
|
-
.replaceAll(" ", "")
|
|
1363
|
-
.toLowerCase()}_${target}`;
|
|
1361
|
+
const targetNm = validSqlId(`${ref}_${ontable.replaceAll(" ", "").toLowerCase()}_${target}`);
|
|
1364
1362
|
column.targetNm = targetNm;
|
|
1365
1363
|
joinFields[targetNm] = {
|
|
1366
1364
|
ref,
|
|
@@ -1448,7 +1446,7 @@ const picked_fields_to_query = (columns, fields, layout, req, table) => {
|
|
|
1448
1446
|
}
|
|
1449
1447
|
//console.log(column);
|
|
1450
1448
|
const field = column.agg_field.split("@")[0];
|
|
1451
|
-
let targetNm = db.sqlsanitize((column.stat.replace(" ", "") +
|
|
1449
|
+
let targetNm = validSqlId(db.sqlsanitize((column.stat.replace(" ", "") +
|
|
1452
1450
|
"_" +
|
|
1453
1451
|
table +
|
|
1454
1452
|
"_" +
|
|
@@ -1456,7 +1454,7 @@ const picked_fields_to_query = (columns, fields, layout, req, table) => {
|
|
|
1456
1454
|
"_" +
|
|
1457
1455
|
field +
|
|
1458
1456
|
"_" +
|
|
1459
|
-
column.aggwhere || "").toLowerCase());
|
|
1457
|
+
column.aggwhere || "").toLowerCase()));
|
|
1460
1458
|
// postgres fields have a max len
|
|
1461
1459
|
if (targetNm.length > 58) {
|
|
1462
1460
|
targetNm = targetNm
|
|
@@ -2222,7 +2220,7 @@ const json_list_to_external_table = (get_json_list, fields0) => {
|
|
|
2222
2220
|
const data_filtered = restricts.length === 0
|
|
2223
2221
|
? data_in
|
|
2224
2222
|
: data_in.filter((x) => restricts.every(sat(x)));
|
|
2225
|
-
if (selopts.orderBy) {
|
|
2223
|
+
if (selopts.orderBy && typeof selopts.orderBy === "string") {
|
|
2226
2224
|
const cmp = selopts.orderDesc
|
|
2227
2225
|
? new Function("a,b", `return b.${selopts.orderBy}-a.${selopts.orderBy}`)
|
|
2228
2226
|
: new Function("a,b", `return a.${selopts.orderBy}-b.${selopts.orderBy}`);
|
|
@@ -2333,8 +2331,9 @@ const run_action_column = async ({ col, req, ...rest }) => {
|
|
|
2333
2331
|
}
|
|
2334
2332
|
else {
|
|
2335
2333
|
const trigger = await Trigger.findOne({ name: action_name });
|
|
2336
|
-
if (trigger?.action === "Multi-step action"
|
|
2337
|
-
|
|
2334
|
+
if (trigger?.action === "Multi-step action" ||
|
|
2335
|
+
trigger?.action === "Workflow") {
|
|
2336
|
+
goRun = () => trigger.runWithoutRow({ req, interactive: true, ...rest });
|
|
2338
2337
|
}
|
|
2339
2338
|
else if (trigger) {
|
|
2340
2339
|
state_action = getState().actions[trigger.action];
|