@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.
Files changed (114) hide show
  1. package/dist/base-plugin/actions.d.ts +135 -10
  2. package/dist/base-plugin/actions.d.ts.map +1 -1
  3. package/dist/base-plugin/actions.js +266 -45
  4. package/dist/base-plugin/actions.js.map +1 -1
  5. package/dist/base-plugin/index.d.ts +126 -123
  6. package/dist/base-plugin/index.d.ts.map +1 -1
  7. package/dist/base-plugin/types.d.ts.map +1 -1
  8. package/dist/base-plugin/types.js +14 -9
  9. package/dist/base-plugin/types.js.map +1 -1
  10. package/dist/base-plugin/viewtemplates/edit.d.ts +7 -4
  11. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  12. package/dist/base-plugin/viewtemplates/edit.js +72 -10
  13. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  14. package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
  15. package/dist/base-plugin/viewtemplates/room.js +7 -2
  16. package/dist/base-plugin/viewtemplates/room.js.map +1 -1
  17. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  18. package/dist/base-plugin/viewtemplates/show.js +7 -4
  19. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  20. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  21. package/dist/base-plugin/viewtemplates/viewable_fields.js +10 -11
  22. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  23. package/dist/db/index.js +1 -1
  24. package/dist/db/index.js.map +1 -1
  25. package/dist/db/state.d.ts +16 -0
  26. package/dist/db/state.d.ts.map +1 -1
  27. package/dist/db/state.js +55 -3
  28. package/dist/db/state.js.map +1 -1
  29. package/dist/migrations/202412051957.d.ts +3 -0
  30. package/dist/migrations/202412051957.d.ts.map +1 -0
  31. package/dist/migrations/202412051957.js +48 -0
  32. package/dist/migrations/202412051957.js.map +1 -0
  33. package/dist/migrations/202412111526.d.ts +3 -0
  34. package/dist/migrations/202412111526.d.ts.map +1 -0
  35. package/dist/migrations/202412111526.js +38 -0
  36. package/dist/migrations/202412111526.js.map +1 -0
  37. package/dist/models/config.d.ts +0 -2
  38. package/dist/models/config.d.ts.map +1 -1
  39. package/dist/models/config.js +44 -34
  40. package/dist/models/config.js.map +1 -1
  41. package/dist/models/email.d.ts +1 -1
  42. package/dist/models/expression.d.ts.map +1 -1
  43. package/dist/models/expression.js +16 -2
  44. package/dist/models/expression.js.map +1 -1
  45. package/dist/models/field.d.ts.map +1 -1
  46. package/dist/models/field.js +22 -4
  47. package/dist/models/field.js.map +1 -1
  48. package/dist/models/file.d.ts +5 -2
  49. package/dist/models/file.d.ts.map +1 -1
  50. package/dist/models/file.js +3 -3
  51. package/dist/models/file.js.map +1 -1
  52. package/dist/models/form.d.ts.map +1 -1
  53. package/dist/models/form.js +5 -1
  54. package/dist/models/form.js.map +1 -1
  55. package/dist/models/index.d.ts +2 -2
  56. package/dist/models/index.d.ts.map +1 -1
  57. package/dist/models/index.js +1 -1
  58. package/dist/models/index.js.map +1 -1
  59. package/dist/models/page.d.ts.map +1 -1
  60. package/dist/models/page.js +3 -1
  61. package/dist/models/page.js.map +1 -1
  62. package/dist/models/page_group.d.ts.map +1 -1
  63. package/dist/models/page_group.js +7 -1
  64. package/dist/models/page_group.js.map +1 -1
  65. package/dist/models/scheduler.d.ts.map +1 -1
  66. package/dist/models/scheduler.js +4 -0
  67. package/dist/models/scheduler.js.map +1 -1
  68. package/dist/models/table.d.ts +1 -0
  69. package/dist/models/table.d.ts.map +1 -1
  70. package/dist/models/table.js +34 -3
  71. package/dist/models/table.js.map +1 -1
  72. package/dist/models/trigger.d.ts +5 -1
  73. package/dist/models/trigger.d.ts.map +1 -1
  74. package/dist/models/trigger.js +38 -7
  75. package/dist/models/trigger.js.map +1 -1
  76. package/dist/models/view.js +3 -3
  77. package/dist/models/workflow_run.d.ts +77 -0
  78. package/dist/models/workflow_run.d.ts.map +1 -0
  79. package/dist/models/workflow_run.js +394 -0
  80. package/dist/models/workflow_run.js.map +1 -0
  81. package/dist/models/workflow_step.d.ts +58 -0
  82. package/dist/models/workflow_step.d.ts.map +1 -0
  83. package/dist/models/workflow_step.js +144 -0
  84. package/dist/models/workflow_step.js.map +1 -0
  85. package/dist/models/workflow_trace.d.ts +57 -0
  86. package/dist/models/workflow_trace.d.ts.map +1 -0
  87. package/dist/models/workflow_trace.js +90 -0
  88. package/dist/models/workflow_trace.js.map +1 -0
  89. package/dist/plugin-helper.d.ts +1 -0
  90. package/dist/plugin-helper.d.ts.map +1 -1
  91. package/dist/plugin-helper.js +8 -9
  92. package/dist/plugin-helper.js.map +1 -1
  93. package/dist/tests/actions.test.js +5 -2
  94. package/dist/tests/actions.test.js.map +1 -1
  95. package/dist/tests/auxtest.test.js +6 -3
  96. package/dist/tests/auxtest.test.js.map +1 -1
  97. package/dist/tests/config.test.js +2 -2
  98. package/dist/tests/config.test.js.map +1 -1
  99. package/dist/tests/field.test.js +47 -0
  100. package/dist/tests/field.test.js.map +1 -1
  101. package/dist/tests/mocks.d.ts +1 -1
  102. package/dist/tests/mocks.js +1 -1
  103. package/dist/tests/mocks.js.map +1 -1
  104. package/dist/tests/workflow.test.js +9 -0
  105. package/dist/tests/workflow.test.js.map +1 -1
  106. package/dist/tests/workflow_run.test.d.ts +2 -0
  107. package/dist/tests/workflow_run.test.d.ts.map +1 -0
  108. package/dist/tests/workflow_run.test.js +109 -0
  109. package/dist/tests/workflow_run.test.js.map +1 -0
  110. package/dist/utils.d.ts +2 -0
  111. package/dist/utils.d.ts.map +1 -1
  112. package/dist/utils.js +15 -0
  113. package/dist/utils.js.map +1 -1
  114. 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"}
@@ -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":"AAiwBA;;;;;;;;;GASG;AACH,wHARW,KAAK,GAAC,MAAM,GAMV,QAAQ,MAAM,EAAE,CAAC,CA0mB7B;AAkLD;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,UACR,KAAK,EAAE,sCAGL,MAAM,CAyNlB;AA7SD;;;;;;;;;;;;;;;;;;;;;;;;;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;AA8dD;;;;;;;;;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;AA/mEH;;;;;;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;AA8iDD;;;;;;GAMG;AACH,iCALW,MAAM,UACN,MAAM,EAAE,aAEN,MAAM,CA0ClB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,UACN,MAAM,EAAE,GACN,OAAO,MAAE,CAiCrB;AA5uED;;;;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;AA68DD;;;;GAIG;AAEH,kCAJW,MAAM,GACJ,MAAM,GAAC,SAAS,CAM5B;AAgOD;;;;;;GAMG;AACH,yDALW,MAAM,GAGJ,YAAU,CAmFtB;AA9ND;;;;;;GAMG;AACH,8EAHW,MAAM,EAAE,GACN,MAAM,CA+HlB;;AA/kED;;;;;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;AAwgED;;;;;;;;;;;;;;;;;;;;GAoCC;AAED;;;;GAIG;AACH;;;;;cA0BC;AA5ED,mDAK6B"}
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"}
@@ -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
- goRun = () => trigger.runWithoutRow({ req, ...rest });
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];