@starbemtech/star-db-query-builder 1.0.12 → 1.0.14
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/coverage/clover.xml +2 -2
- package/coverage/lcov-report/index.html +1 -1
- package/dist/src/default/genericRepository.d.ts +4 -3
- package/dist/src/default/genericRepository.js +32 -1
- package/dist/src/default/genericRepository.js.map +1 -1
- package/dist/src/default/types.d.ts +13 -0
- package/dist/src/default/utils.js +34 -3
- package/dist/src/default/utils.js.map +1 -1
- package/dist/src/services/payment/index.js +2 -2
- package/dist/src/services/payment/index.js.map +1 -1
- package/package.json +2 -2
- package/src/default/genericRepository.ts +46 -2
- package/src/default/types.ts +16 -0
- package/src/default/utils.ts +43 -2
- package/src/services/payment/index.ts +2 -2
package/coverage/clover.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
2
|
+
<coverage generated="1712851039040" clover="3.2.0">
|
|
3
|
+
<project timestamp="1712851039040" name="All files">
|
|
4
4
|
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0" elements="0" coveredelements="0" complexity="0" loc="0" ncloc="0" packages="0" files="0" classes="0"/>
|
|
5
5
|
</project>
|
|
6
6
|
</coverage>
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
87
87
|
Code coverage generated by
|
|
88
88
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
89
|
-
at 2024-04-
|
|
89
|
+
at 2024-04-11T15:57:19.035Z
|
|
90
90
|
</div>
|
|
91
91
|
<script src="prettify.js"></script>
|
|
92
92
|
<script>
|
|
@@ -3,12 +3,13 @@ export declare const findFirst: <T>({ tableName, dbClient, select, where, groupB
|
|
|
3
3
|
export declare const findMany: <T>({ tableName, dbClient, select, where, groupBy, orderBy, limit, }: QueryParams<T>) => Promise<T[]>;
|
|
4
4
|
export declare const insert: <P, R>({ tableName, dbClient, data, returning, }: QueryParams<R> & {
|
|
5
5
|
data: P;
|
|
6
|
-
returning?: string[]
|
|
6
|
+
returning?: string[];
|
|
7
7
|
}) => Promise<R>;
|
|
8
8
|
export declare const update: <P, R>({ tableName, dbClient, id, data, returning, }: QueryParams<R> & {
|
|
9
9
|
data: P;
|
|
10
|
-
returning?: string[]
|
|
10
|
+
returning?: string[];
|
|
11
11
|
}) => Promise<R | void>;
|
|
12
12
|
export declare const deleteOne: <T>({ tableName, dbClient, id, permanently, }: QueryParams<T> & {
|
|
13
|
-
permanently?: boolean
|
|
13
|
+
permanently?: boolean;
|
|
14
14
|
}) => Promise<void>;
|
|
15
|
+
export declare const joins: <T>({ tableName, dbClient, select, joins, where, }: QueryParams<T>) => Promise<T[]>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteOne = exports.update = exports.insert = exports.findMany = exports.findFirst = void 0;
|
|
3
|
+
exports.joins = exports.deleteOne = exports.update = exports.insert = exports.findMany = exports.findFirst = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
const findFirst = async ({ tableName, dbClient, select, where, groupBy, orderBy, }) => {
|
|
@@ -116,4 +116,35 @@ const deleteOne = async ({ tableName, dbClient, id, permanently = false, }) => {
|
|
|
116
116
|
: `UPDATE ${tableName} SET status = 'deleted' WHERE id = ${dbClient.clientType === 'pg' ? '$1' : '?'}`, [id]);
|
|
117
117
|
};
|
|
118
118
|
exports.deleteOne = deleteOne;
|
|
119
|
+
const joins = async ({ tableName, dbClient, select, joins, where, }) => {
|
|
120
|
+
if (!tableName)
|
|
121
|
+
throw new Error('Table name is required');
|
|
122
|
+
if (!dbClient)
|
|
123
|
+
throw new Error('DB client is required');
|
|
124
|
+
const fields = Array.isArray(select) ? select : [];
|
|
125
|
+
const selectFields = (0, utils_1.createSelectFields)(fields, dbClient.clientType);
|
|
126
|
+
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType);
|
|
127
|
+
const queryBuilder = {
|
|
128
|
+
select: [selectFields],
|
|
129
|
+
from: tableName,
|
|
130
|
+
joins: joins,
|
|
131
|
+
where: whereClause,
|
|
132
|
+
};
|
|
133
|
+
const queryString = await buildQuery(queryBuilder);
|
|
134
|
+
const rows = await dbClient.query(queryString, params);
|
|
135
|
+
return rows;
|
|
136
|
+
};
|
|
137
|
+
exports.joins = joins;
|
|
138
|
+
async function buildQuery(params) {
|
|
139
|
+
let queryString = `SELECT ${params.select.join(', ')} FROM ${params.from}`;
|
|
140
|
+
if (params.joins) {
|
|
141
|
+
for (const join of params.joins) {
|
|
142
|
+
queryString += ` ${join.type} JOIN ${join.table} ON ${join.on}`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (params.where) {
|
|
146
|
+
queryString += `${params.where}`;
|
|
147
|
+
}
|
|
148
|
+
return queryString;
|
|
149
|
+
}
|
|
119
150
|
//# sourceMappingURL=genericRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genericRepository.js","sourceRoot":"","sources":["../../../src/default/genericRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"genericRepository.js","sourceRoot":"","sources":["../../../src/default/genericRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export type Condition<T> = OperatorCondition | LogicalCondition<T>;
|
|
|
13
13
|
interface LogicalCondition<T> {
|
|
14
14
|
OR?: Conditions<T>[];
|
|
15
15
|
AND?: Conditions<T>[];
|
|
16
|
+
JOINS?: Conditions<object>;
|
|
16
17
|
}
|
|
17
18
|
export type Conditions<T> = {
|
|
18
19
|
[P in keyof T]?: Condition<T[P]>;
|
|
@@ -31,5 +32,17 @@ export interface QueryParams<T> {
|
|
|
31
32
|
orderBy?: OrderBy;
|
|
32
33
|
groupBy?: string[];
|
|
33
34
|
limit?: number;
|
|
35
|
+
joins?: JoinClause[];
|
|
36
|
+
}
|
|
37
|
+
interface JoinClause {
|
|
38
|
+
type: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
39
|
+
table: string;
|
|
40
|
+
on: string;
|
|
41
|
+
}
|
|
42
|
+
export interface QueryBuilder {
|
|
43
|
+
select: string[];
|
|
44
|
+
from?: string;
|
|
45
|
+
joins?: JoinClause[];
|
|
46
|
+
where?: string;
|
|
34
47
|
}
|
|
35
48
|
export {};
|
|
@@ -44,6 +44,11 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
44
44
|
? `"${key}" ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
45
45
|
: `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`);
|
|
46
46
|
}
|
|
47
|
+
else if (operator === 'IN') {
|
|
48
|
+
whereParts.push(clientType === 'pg'
|
|
49
|
+
? `"${key}" ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
50
|
+
: `${key} ${operator} (${placeholders})`);
|
|
51
|
+
}
|
|
47
52
|
else {
|
|
48
53
|
whereParts.push(clientType === 'pg'
|
|
49
54
|
? `"${key}" ${operator} (${placeholders})`
|
|
@@ -58,11 +63,37 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
58
63
|
values.push(value);
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
|
-
else {
|
|
62
|
-
console.error('Unsupported condition format: ', condition);
|
|
63
|
-
}
|
|
64
66
|
}
|
|
65
67
|
};
|
|
68
|
+
if ('JOINS' in conditions) {
|
|
69
|
+
const logicalOperator = conditions.JOINS ? 'AND' : 'OR';
|
|
70
|
+
const compositeConditions = conditions.JOINS;
|
|
71
|
+
if (Array.isArray(compositeConditions)) {
|
|
72
|
+
const subWhereParts = compositeConditions
|
|
73
|
+
.map((subCondition) => {
|
|
74
|
+
if (typeof subCondition === 'object' &&
|
|
75
|
+
!Array.isArray(subCondition) &&
|
|
76
|
+
subCondition !== null) {
|
|
77
|
+
const key = Object.keys(subCondition)[0];
|
|
78
|
+
const condition = subCondition[key];
|
|
79
|
+
processCondition(key, condition);
|
|
80
|
+
return whereParts.pop();
|
|
81
|
+
}
|
|
82
|
+
return '';
|
|
83
|
+
})
|
|
84
|
+
.filter((part) => part);
|
|
85
|
+
whereParts.push(clientType === 'pg'
|
|
86
|
+
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
87
|
+
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
Object.entries(conditions).forEach(([key, value]) => {
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
93
|
+
// @ts-expect-error
|
|
94
|
+
processCondition(key, value);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
66
97
|
if ('OR' in conditions || 'AND' in conditions) {
|
|
67
98
|
const logicalOperator = conditions.OR ? 'OR' : 'AND';
|
|
68
99
|
const compositeConditions = conditions.OR || conditions.AND;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/default/utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,uBAAuB,GAAG,CAC9B,KAAe,EACf,UAAqB,EACb,EAAE;IACV,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAC9C,CAAA;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAA;AAC7D,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;AAEpC,MAAM,kBAAkB,GAAG,CAChC,SAAmB,EAAE,EACrB,UAAqB,EACb,EAAE;IACV,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC;QAC7C,CAAC,CAAC,GAAG,CAAA;AACT,CAAC,CAAA;AAPY,QAAA,kBAAkB,sBAO9B;AAEM,MAAM,oBAAoB,GAAG,CAClC,IAAW,EACX,UAAqB,EACb,EAAE;IACV,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC,CAAA;AAPY,QAAA,oBAAoB,wBAOhC;AAEM,MAAM,iBAAiB,GAAG,CAC/B,IAAW,EACX,UAAqB,EACb,EAAE;IACV,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAClB,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAC9D;SACA,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC,CAAA;AATY,QAAA,iBAAiB,qBAS7B;AAEM,MAAM,iBAAiB,GAAG,CAC/B,aAA4B,EAAE,EAC9B,UAAU,GAAG,CAAC,EACd,UAAqB,EACI,EAAE;IAC3B,IAAI,KAAK,GAAG,UAAU,CAAA;IACtB,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAU,EAAE,CAAA;IAExB,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,SAAuB,EAAE,EAAE;QAChE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACpD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;gBACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,YAAY,GAAG,KAAK;yBACvB,GAAG,CAAC,GAAG,EAAE,CACR,UAAU,KAAK,IAAI;wBACjB,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;wBACjC,CAAC,CAAC,yBAAyB,EAAE,CAChC;yBACA,IAAI,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/default/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,10 @@ const getByUserAndSubscription = async ({ tableName, dbClient, select, where, })
|
|
|
12
12
|
const rows = await dbClient.query(`SELECT
|
|
13
13
|
${fields}
|
|
14
14
|
FROM payments.plan_association_users pa
|
|
15
|
-
|
|
15
|
+
LEFT JOIN payments.plans ON pa.plan_id = plans.id
|
|
16
16
|
${whereClause}
|
|
17
17
|
AND pa.status IN ('active', 'cancelation_requested', 'blocked')`, params);
|
|
18
|
-
return rows
|
|
18
|
+
return rows || null;
|
|
19
19
|
};
|
|
20
20
|
exports.getByUserAndSubscription = getByUserAndSubscription;
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/payment/index.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;AAGpE,MAAM,wBAAwB,GAAG,KAAK,EAAK,EAChD,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,GACU,EAAqB,EAAE;IACtC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACzD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvD,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC9D,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,IAAA,yBAAiB,EAC7C,KAAK,EACL,CAAC,EACD,QAAQ,CAAC,UAAU,CACpB,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAC/B;UACM,MAAM;;;UAGN,WAAW;wEACmD,EACpE,MAAM,CACP,CAAA;IAED,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/payment/index.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;AAGpE,MAAM,wBAAwB,GAAG,KAAK,EAAK,EAChD,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,GACU,EAAqB,EAAE;IACtC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACzD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvD,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC9D,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,IAAA,yBAAiB,EAC7C,KAAK,EACL,CAAC,EACD,QAAQ,CAAC,UAAU,CACpB,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAC/B;UACM,MAAM;;;UAGN,WAAW;wEACmD,EACpE,MAAM,CACP,CAAA;IAED,OAAO,IAAI,IAAI,IAAI,CAAA;AACrB,CAAC,CAAA;AA3BY,QAAA,wBAAwB,4BA2BpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starbemtech/star-db-query-builder",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "A query builder to be used with mysql or postgres",
|
|
5
5
|
"author": "Julio Sousa <julio.sousa@starbem.app>",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -66,4 +66,4 @@
|
|
|
66
66
|
"pre-commit": "lint-staged"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
}
|
|
69
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { v4 as uuid } from 'uuid'
|
|
2
|
-
import { QueryParams } from './types'
|
|
2
|
+
import { QueryParams, QueryBuilder } from './types'
|
|
3
3
|
import {
|
|
4
4
|
createGroupByClause,
|
|
5
5
|
createLimitClause,
|
|
@@ -31,7 +31,7 @@ export const findFirst = async <T>({
|
|
|
31
31
|
const orderByClause = createOrderByClause(orderBy)
|
|
32
32
|
const groupByClause = createGroupByClause(groupBy)
|
|
33
33
|
|
|
34
|
-
const rows = await dbClient.query<T>(
|
|
34
|
+
const rows = await dbClient.query<T[]>(
|
|
35
35
|
`SELECT ${fields} FROM ${tableName}
|
|
36
36
|
${whereClause.length > 7 ? whereClause : ''}
|
|
37
37
|
${groupByClause}
|
|
@@ -195,3 +195,47 @@ export const deleteOne = async <T>({
|
|
|
195
195
|
[id]
|
|
196
196
|
)
|
|
197
197
|
}
|
|
198
|
+
|
|
199
|
+
export const joins = async <T>({
|
|
200
|
+
tableName,
|
|
201
|
+
dbClient,
|
|
202
|
+
select,
|
|
203
|
+
joins,
|
|
204
|
+
where,
|
|
205
|
+
}: QueryParams<T>): Promise<T[]> => {
|
|
206
|
+
if (!tableName) throw new Error('Table name is required')
|
|
207
|
+
if (!dbClient) throw new Error('DB client is required')
|
|
208
|
+
|
|
209
|
+
const fields = Array.isArray(select) ? select : []
|
|
210
|
+
const selectFields = createSelectFields(fields, dbClient.clientType)
|
|
211
|
+
const [whereClause, params] = createWhereClause(where, 1, dbClient.clientType)
|
|
212
|
+
|
|
213
|
+
const queryBuilder: QueryBuilder = {
|
|
214
|
+
select: [selectFields],
|
|
215
|
+
from: tableName,
|
|
216
|
+
joins: joins,
|
|
217
|
+
where: whereClause,
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const queryString = await buildQuery(queryBuilder)
|
|
221
|
+
|
|
222
|
+
const rows = await dbClient.query<T[]>(queryString, params)
|
|
223
|
+
|
|
224
|
+
return rows
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
async function buildQuery(params: QueryBuilder): Promise<string> {
|
|
228
|
+
let queryString = `SELECT ${params.select.join(', ')} FROM ${params.from}`
|
|
229
|
+
|
|
230
|
+
if (params.joins) {
|
|
231
|
+
for (const join of params.joins) {
|
|
232
|
+
queryString += ` ${join.type} JOIN ${join.table} ON ${join.on}`
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (params.where) {
|
|
237
|
+
queryString += `${params.where}`
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return queryString
|
|
241
|
+
}
|
package/src/default/types.ts
CHANGED
|
@@ -31,6 +31,7 @@ export type Condition<T> = OperatorCondition | LogicalCondition<T>
|
|
|
31
31
|
interface LogicalCondition<T> {
|
|
32
32
|
OR?: Conditions<T>[]
|
|
33
33
|
AND?: Conditions<T>[]
|
|
34
|
+
JOINS?: Conditions<object>
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
export type Conditions<T> = {
|
|
@@ -41,6 +42,7 @@ export type DBClients = 'pg' | 'mysql'
|
|
|
41
42
|
|
|
42
43
|
export type OrderBy = { field: string; direction: 'ASC' | 'DESC' }[]
|
|
43
44
|
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
46
|
export interface QueryParams<T> {
|
|
45
47
|
tableName: string
|
|
46
48
|
dbClient: IDatabaseClient
|
|
@@ -50,4 +52,18 @@ export interface QueryParams<T> {
|
|
|
50
52
|
orderBy?: OrderBy
|
|
51
53
|
groupBy?: string[]
|
|
52
54
|
limit?: number
|
|
55
|
+
joins?: JoinClause[]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface JoinClause {
|
|
59
|
+
type: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL'
|
|
60
|
+
table: string
|
|
61
|
+
on: string
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface QueryBuilder {
|
|
65
|
+
select: string[]
|
|
66
|
+
from?: string
|
|
67
|
+
joins?: JoinClause[]
|
|
68
|
+
where?: string
|
|
53
69
|
}
|
package/src/default/utils.ts
CHANGED
|
@@ -63,12 +63,19 @@ export const createWhereClause = <T>(
|
|
|
63
63
|
: mysqlPlaceholderGenerator()
|
|
64
64
|
)
|
|
65
65
|
.join(', ')
|
|
66
|
+
|
|
66
67
|
if (operator === 'BETWEEN') {
|
|
67
68
|
whereParts.push(
|
|
68
69
|
clientType === 'pg'
|
|
69
70
|
? `"${key}" ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
70
71
|
: `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
71
72
|
)
|
|
73
|
+
} else if (operator === 'IN') {
|
|
74
|
+
whereParts.push(
|
|
75
|
+
clientType === 'pg'
|
|
76
|
+
? `"${key}" ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
77
|
+
: `${key} ${operator} (${placeholders})`
|
|
78
|
+
)
|
|
72
79
|
} else {
|
|
73
80
|
whereParts.push(
|
|
74
81
|
clientType === 'pg'
|
|
@@ -83,14 +90,48 @@ export const createWhereClause = <T>(
|
|
|
83
90
|
? `"${key}" ${operator} ${pgPlaceholderGenerator(index++)}`
|
|
84
91
|
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`
|
|
85
92
|
)
|
|
93
|
+
|
|
86
94
|
values.push(value)
|
|
87
95
|
}
|
|
88
|
-
} else {
|
|
89
|
-
console.error('Unsupported condition format: ', condition)
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
98
|
}
|
|
93
99
|
|
|
100
|
+
if ('JOINS' in conditions) {
|
|
101
|
+
const logicalOperator = conditions.JOINS ? 'AND' : 'OR'
|
|
102
|
+
const compositeConditions = conditions.JOINS
|
|
103
|
+
|
|
104
|
+
if (Array.isArray(compositeConditions)) {
|
|
105
|
+
const subWhereParts = compositeConditions
|
|
106
|
+
.map((subCondition: any) => {
|
|
107
|
+
if (
|
|
108
|
+
typeof subCondition === 'object' &&
|
|
109
|
+
!Array.isArray(subCondition) &&
|
|
110
|
+
subCondition !== null
|
|
111
|
+
) {
|
|
112
|
+
const key = Object.keys(subCondition)[0]
|
|
113
|
+
const condition = subCondition[key]
|
|
114
|
+
|
|
115
|
+
processCondition(key, condition)
|
|
116
|
+
return whereParts.pop()
|
|
117
|
+
}
|
|
118
|
+
return ''
|
|
119
|
+
})
|
|
120
|
+
.filter((part) => part)
|
|
121
|
+
whereParts.push(
|
|
122
|
+
clientType === 'pg'
|
|
123
|
+
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
124
|
+
: `${subWhereParts.join(` ${logicalOperator} `)}`
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
Object.entries(conditions).forEach(([key, value]) => {
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
130
|
+
// @ts-expect-error
|
|
131
|
+
processCondition(key, value)
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
94
135
|
if ('OR' in conditions || 'AND' in conditions) {
|
|
95
136
|
const logicalOperator = conditions.OR ? 'OR' : 'AND'
|
|
96
137
|
const compositeConditions = conditions.OR || conditions.AND
|
|
@@ -21,11 +21,11 @@ export const getByUserAndSubscription = async <T>({
|
|
|
21
21
|
`SELECT
|
|
22
22
|
${fields}
|
|
23
23
|
FROM payments.plan_association_users pa
|
|
24
|
-
|
|
24
|
+
LEFT JOIN payments.plans ON pa.plan_id = plans.id
|
|
25
25
|
${whereClause}
|
|
26
26
|
AND pa.status IN ('active', 'cancelation_requested', 'blocked')`,
|
|
27
27
|
params
|
|
28
28
|
)
|
|
29
29
|
|
|
30
|
-
return rows
|
|
30
|
+
return rows || null
|
|
31
31
|
}
|