@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.
@@ -1,7 +1,11 @@
1
- export declare function listApprovals(filters?: {
1
+ interface ApprovalFilters {
2
2
  status?: string;
3
3
  submittedBy?: string;
4
- }): Promise<Record<string, unknown>[]>;
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,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,sCAgBtF;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
+ {"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;AAYzF,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,kBAQhF;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"}
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
- async function listApprovals(filters) {
64
- let query = `SELECT a.*, u.username AS submitter_name
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
- query += " AND a.status = ?";
67
+ clauses.push("a.status = ?");
71
68
  params.push(filters.status);
72
69
  }
73
70
  if (filters?.submittedBy) {
74
- query += " AND a.submitted_by = ?";
71
+ clauses.push("a.submitted_by = ?");
75
72
  params.push(filters.submittedBy);
76
73
  }
77
- query += " ORDER BY a.created_at DESC";
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
- return reply.send(
100
- await listApprovals({
101
- status,
102
- submittedBy: mine === "true" ? req.user.id : void 0
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
- async function listApprovals(filters) {
33
- let query = `SELECT a.*, u.username AS submitter_name
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
- query += " AND a.status = ?";
36
+ clauses.push("a.status = ?");
40
37
  params.push(filters.status);
41
38
  }
42
39
  if (filters?.submittedBy) {
43
- query += " AND a.submitted_by = ?";
40
+ clauses.push("a.submitted_by = ?");
44
41
  params.push(filters.submittedBy);
45
42
  }
46
- query += " ORDER BY a.created_at DESC";
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
- return reply.send(
69
- await listApprovals({
70
- status,
71
- submittedBy: mine === "true" ? req.user.id : void 0
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.1",
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.1",
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": "6bd2092d7f1dd2bc23d5252e2be4136792ddec4f"
39
+ "gitHead": "d06a1293647cb401ff35e86252c9e96154a7b070"
40
40
  }