@heyhru/business-dms-approval 0.7.1 → 0.7.2
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/approvals.model.d.ts +7 -2
- package/dist/approvals.model.d.ts.map +1 -1
- package/dist/approvals.service.d.ts.map +1 -1
- package/dist/index.js +31 -15
- package/dist/index.mjs +31 -15
- package/package.json +3 -3
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
interface ApprovalFilters {
|
|
2
2
|
status?: string;
|
|
3
3
|
submittedBy?: string;
|
|
4
|
-
|
|
4
|
+
limit?: number;
|
|
5
|
+
offset?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function countApprovals(filters?: ApprovalFilters): Promise<number>;
|
|
8
|
+
export declare function listApprovals(filters?: ApprovalFilters): Promise<Record<string, unknown>[]>;
|
|
5
9
|
export declare function getApprovalById(id: string): Promise<Record<string, unknown> | undefined>;
|
|
6
10
|
export declare function insertApproval(dataSourceId: string, dbName: string | null, sqlText: string, submittedBy: string): Promise<Record<string, unknown> | undefined>;
|
|
7
11
|
export declare function updateReview(id: string, status: string, reviewedBy: string, rejectReason: string | null): Promise<Record<string, unknown> | undefined>;
|
|
@@ -11,4 +15,5 @@ export declare function setExecuting(id: string): Promise<{
|
|
|
11
15
|
export declare function setExecuteResult(id: string, status: string, result: string): Promise<{
|
|
12
16
|
changes: number;
|
|
13
17
|
}>;
|
|
18
|
+
export {};
|
|
14
19
|
//# sourceMappingURL=approvals.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.model.d.ts","sourceRoot":"","sources":["../src/approvals.model.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"approvals.model.d.ts","sourceRoot":"","sources":["../src/approvals.model.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,mBAO7D;AAED,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,sCAS5D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,gDAEzC;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gDAE/G;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,gDAG5B;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM;;GAEtC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;GAE1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.service.d.ts","sourceRoot":"","sources":["../src/approvals.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAA0B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"approvals.service.d.ts","sourceRoot":"","sources":["../src/approvals.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAA0B,MAAM,SAAS,CAAC;AAazF,UAAU,oBAAqB,SAAQ,cAAc;IACnD,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,kBAUhF;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,kBAKzE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,kBAQlF;AAkBD,wBAAsB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,kBAUnF;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,kBAUlF;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,IACrC,KAAK,oBAAoB,EAAE,OAAO,YAAY,oBAY7D"}
|
package/dist/index.js
CHANGED
|
@@ -60,21 +60,35 @@ SET status = ?, execute_result = ?, updated_at = NOW()
|
|
|
60
60
|
WHERE id = ?`;
|
|
61
61
|
|
|
62
62
|
// src/approvals.model.ts
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
FROM approvals a
|
|
66
|
-
LEFT JOIN users u ON u.id = a.submitted_by
|
|
67
|
-
WHERE 1=1`;
|
|
63
|
+
function buildWhereParams(filters) {
|
|
64
|
+
const clauses = [];
|
|
68
65
|
const params = [];
|
|
69
66
|
if (filters?.status) {
|
|
70
|
-
|
|
67
|
+
clauses.push("a.status = ?");
|
|
71
68
|
params.push(filters.status);
|
|
72
69
|
}
|
|
73
70
|
if (filters?.submittedBy) {
|
|
74
|
-
|
|
71
|
+
clauses.push("a.submitted_by = ?");
|
|
75
72
|
params.push(filters.submittedBy);
|
|
76
73
|
}
|
|
77
|
-
|
|
74
|
+
return { where: clauses.length ? " AND " + clauses.join(" AND ") : "", params };
|
|
75
|
+
}
|
|
76
|
+
async function countApprovals(filters) {
|
|
77
|
+
const { where, params } = buildWhereParams(filters);
|
|
78
|
+
const row = await (0, import_server_plugin_pg.getPgDb)().queryOne(
|
|
79
|
+
`SELECT COUNT(*) AS total FROM approvals a WHERE 1=1` + where,
|
|
80
|
+
params
|
|
81
|
+
);
|
|
82
|
+
return Number(row?.["total"] ?? 0);
|
|
83
|
+
}
|
|
84
|
+
async function listApprovals(filters) {
|
|
85
|
+
let query = `SELECT a.*, u.username AS submitter_name
|
|
86
|
+
FROM approvals a
|
|
87
|
+
LEFT JOIN users u ON u.id = a.submitted_by
|
|
88
|
+
WHERE 1=1`;
|
|
89
|
+
const { where, params } = buildWhereParams(filters);
|
|
90
|
+
query += where + " ORDER BY a.created_at DESC LIMIT ? OFFSET ?";
|
|
91
|
+
params.push(filters?.limit ?? 50, filters?.offset ?? 0);
|
|
78
92
|
return (0, import_server_plugin_pg.getPgDb)().query(query, params);
|
|
79
93
|
}
|
|
80
94
|
function getApprovalById(id) {
|
|
@@ -95,13 +109,15 @@ function setExecuteResult(id, status, result) {
|
|
|
95
109
|
|
|
96
110
|
// src/approvals.service.ts
|
|
97
111
|
async function approvalList(req, reply) {
|
|
98
|
-
const { status, mine } = req.body ?? {};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
112
|
+
const { status, mine, limit, offset } = req.body ?? {};
|
|
113
|
+
const filters = {
|
|
114
|
+
status,
|
|
115
|
+
submittedBy: mine === "true" ? req.user.id : void 0,
|
|
116
|
+
limit: limit ? Number(limit) : void 0,
|
|
117
|
+
offset: offset ? Number(offset) : void 0
|
|
118
|
+
};
|
|
119
|
+
const [rows, total] = await Promise.all([listApprovals(filters), countApprovals(filters)]);
|
|
120
|
+
return reply.send({ rows, total });
|
|
105
121
|
}
|
|
106
122
|
async function approvalGet(req, reply) {
|
|
107
123
|
const { id } = req.body ?? {};
|
package/dist/index.mjs
CHANGED
|
@@ -29,21 +29,35 @@ SET status = ?, execute_result = ?, updated_at = NOW()
|
|
|
29
29
|
WHERE id = ?`;
|
|
30
30
|
|
|
31
31
|
// src/approvals.model.ts
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
FROM approvals a
|
|
35
|
-
LEFT JOIN users u ON u.id = a.submitted_by
|
|
36
|
-
WHERE 1=1`;
|
|
32
|
+
function buildWhereParams(filters) {
|
|
33
|
+
const clauses = [];
|
|
37
34
|
const params = [];
|
|
38
35
|
if (filters?.status) {
|
|
39
|
-
|
|
36
|
+
clauses.push("a.status = ?");
|
|
40
37
|
params.push(filters.status);
|
|
41
38
|
}
|
|
42
39
|
if (filters?.submittedBy) {
|
|
43
|
-
|
|
40
|
+
clauses.push("a.submitted_by = ?");
|
|
44
41
|
params.push(filters.submittedBy);
|
|
45
42
|
}
|
|
46
|
-
|
|
43
|
+
return { where: clauses.length ? " AND " + clauses.join(" AND ") : "", params };
|
|
44
|
+
}
|
|
45
|
+
async function countApprovals(filters) {
|
|
46
|
+
const { where, params } = buildWhereParams(filters);
|
|
47
|
+
const row = await getPgDb().queryOne(
|
|
48
|
+
`SELECT COUNT(*) AS total FROM approvals a WHERE 1=1` + where,
|
|
49
|
+
params
|
|
50
|
+
);
|
|
51
|
+
return Number(row?.["total"] ?? 0);
|
|
52
|
+
}
|
|
53
|
+
async function listApprovals(filters) {
|
|
54
|
+
let query = `SELECT a.*, u.username AS submitter_name
|
|
55
|
+
FROM approvals a
|
|
56
|
+
LEFT JOIN users u ON u.id = a.submitted_by
|
|
57
|
+
WHERE 1=1`;
|
|
58
|
+
const { where, params } = buildWhereParams(filters);
|
|
59
|
+
query += where + " ORDER BY a.created_at DESC LIMIT ? OFFSET ?";
|
|
60
|
+
params.push(filters?.limit ?? 50, filters?.offset ?? 0);
|
|
47
61
|
return getPgDb().query(query, params);
|
|
48
62
|
}
|
|
49
63
|
function getApprovalById(id) {
|
|
@@ -64,13 +78,15 @@ function setExecuteResult(id, status, result) {
|
|
|
64
78
|
|
|
65
79
|
// src/approvals.service.ts
|
|
66
80
|
async function approvalList(req, reply) {
|
|
67
|
-
const { status, mine } = req.body ?? {};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
81
|
+
const { status, mine, limit, offset } = req.body ?? {};
|
|
82
|
+
const filters = {
|
|
83
|
+
status,
|
|
84
|
+
submittedBy: mine === "true" ? req.user.id : void 0,
|
|
85
|
+
limit: limit ? Number(limit) : void 0,
|
|
86
|
+
offset: offset ? Number(offset) : void 0
|
|
87
|
+
};
|
|
88
|
+
const [rows, total] = await Promise.all([listApprovals(filters), countApprovals(filters)]);
|
|
89
|
+
return reply.send({ rows, total });
|
|
74
90
|
}
|
|
75
91
|
async function approvalGet(req, reply) {
|
|
76
92
|
const { id } = req.body ?? {};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.7.
|
|
6
|
+
"version": "0.7.2",
|
|
7
7
|
"description": "DMS approval workflow domain logic: service, model, sql",
|
|
8
8
|
"main": "./dist/index.js",
|
|
9
9
|
"module": "./dist/index.mjs",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"clean": "rm -rf dist"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@heyhru/business-dms-audit": "0.6.
|
|
29
|
+
"@heyhru/business-dms-audit": "0.6.2",
|
|
30
30
|
"@heyhru/business-dms-datasource": "0.8.1",
|
|
31
31
|
"@heyhru/server-plugin-pg": "0.7.0",
|
|
32
32
|
"fastify": "^5.8.4"
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"typescript": "^6.0.2",
|
|
37
37
|
"vitest": "^4.1.4"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "d06a1293647cb401ff35e86252c9e96154a7b070"
|
|
40
40
|
}
|