@takaro/db 0.0.1 → 0.0.5
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/config.d.ts +14 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/knex.d.ts +3 -0
- package/dist/knex.js +1 -0
- package/dist/knex.js.map +1 -1
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts +3 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.js +17 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.js.map +1 -0
- package/dist/migrations/sql/20240614143517-shop.d.ts +3 -0
- package/dist/migrations/sql/20240614143517-shop.js +29 -0
- package/dist/migrations/sql/20240614143517-shop.js.map +1 -0
- package/dist/migrations/sql/20240615145045-user-player-link.d.ts +3 -0
- package/dist/migrations/sql/20240615145045-user-player-link.js +17 -0
- package/dist/migrations/sql/20240615145045-user-player-link.js.map +1 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts +3 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js +11 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js.map +1 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts +3 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.js +11 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.js.map +1 -0
- package/dist/migrations/sql/20240628174914-shop-orders.d.ts +3 -0
- package/dist/migrations/sql/20240628174914-shop-orders.js +16 -0
- package/dist/migrations/sql/20240628174914-shop-orders.js.map +1 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts +3 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.js +26 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.js.map +1 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.d.ts +3 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.js +11 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.js.map +1 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts +3 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js +26 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js.map +1 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts +3 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js +13 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js.map +1 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts +3 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.js +19 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.js.map +1 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts +3 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js +14 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js.map +1 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts +3 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.js +16 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.js.map +1 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.d.ts +3 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.js +11 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.js.map +1 -0
- package/dist/queryBuilder.d.ts +8 -2
- package/dist/queryBuilder.js +38 -19
- package/dist/queryBuilder.js.map +1 -1
- package/package.json +2 -3
- package/src/__tests__/queryBuilder.integration.test.ts +7 -4
- package/src/config.ts +14 -0
- package/src/knex.ts +1 -0
- package/src/migrations/sql/20221019173729_settings.ts +2 -2
- package/src/migrations/sql/20221102190532_commands.ts +2 -2
- package/src/migrations/sql/20230308183400-persistent-variables.ts +2 -2
- package/src/migrations/sql/20230604130951-fix-hook-eventtypes.ts +1 -1
- package/src/migrations/sql/20230622192402-discord-hooks.ts +2 -2
- package/src/migrations/sql/20230712061220-roles-permissions-extension.ts +1 -1
- package/src/migrations/sql/20230921123717-count-for-permissions.ts +1 -1
- package/src/migrations/sql/20240105130846-remove-some-module-perms.ts +4 -4
- package/src/migrations/sql/20240119152426-remove-hook-check.ts +1 -1
- package/src/migrations/sql/20240121142329-move-ip-history.ts +1 -1
- package/src/migrations/sql/20240613175009-lastseen-users-pog.ts +21 -0
- package/src/migrations/sql/20240614143517-shop.ts +39 -0
- package/src/migrations/sql/20240615145045-user-player-link.ts +20 -0
- package/src/migrations/sql/20240622132552-fix-ip-history-fk.ts +13 -0
- package/src/migrations/sql/20240626200803-player-inventory-idx.ts +13 -0
- package/src/migrations/sql/20240628174914-shop-orders.ts +20 -0
- package/src/migrations/sql/20240705140358-teleports-public-refactor.ts +31 -0
- package/src/migrations/sql/20240710181429-events-name-idx.ts +13 -0
- package/src/migrations/sql/20240711181423-shop-orders-multi-listing.ts +34 -0
- package/src/migrations/sql/20240718150807-listing-deleted-and-draft-status.ts +15 -0
- package/src/migrations/sql/20240720135010-acting-user-and-module.ts +24 -0
- package/src/migrations/sql/20240811061243-domain-rate-limit-setting.ts +16 -0
- package/src/migrations/sql/20240814133931-domain-ext-ref.ts +24 -0
- package/src/migrations/sql/20240816171220-player-steam-level.ts +14 -0
- package/src/migrations/util/alterEnum.ts +1 -1
- package/src/queryBuilder.ts +60 -20
package/src/queryBuilder.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { IsEnum, IsNumber, IsOptional, IsString } from 'class-validator';
|
|
2
|
+
import {
|
|
3
|
+
QueryBuilder as ObjectionQueryBuilder,
|
|
4
|
+
Model as ObjectionModel,
|
|
5
|
+
Page,
|
|
6
|
+
AnyQueryBuilder,
|
|
7
|
+
Expression,
|
|
8
|
+
PrimitiveValue,
|
|
9
|
+
} from 'objection';
|
|
3
10
|
|
|
4
11
|
export class ITakaroQuery<T> {
|
|
5
12
|
@IsOptional()
|
|
@@ -12,6 +19,16 @@ export class ITakaroQuery<T> {
|
|
|
12
19
|
[key in keyof T]?: unknown[] | unknown;
|
|
13
20
|
};
|
|
14
21
|
|
|
22
|
+
@IsOptional()
|
|
23
|
+
greaterThan?: {
|
|
24
|
+
[key in keyof T]?: unknown;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
@IsOptional()
|
|
28
|
+
lessThan?: {
|
|
29
|
+
[key in keyof T]?: unknown;
|
|
30
|
+
};
|
|
31
|
+
|
|
15
32
|
@IsOptional()
|
|
16
33
|
@IsNumber()
|
|
17
34
|
page?: number;
|
|
@@ -29,14 +46,6 @@ export class ITakaroQuery<T> {
|
|
|
29
46
|
@IsEnum(['asc', 'desc'])
|
|
30
47
|
sortDirection?: SortDirection;
|
|
31
48
|
|
|
32
|
-
@IsOptional()
|
|
33
|
-
@IsDateString()
|
|
34
|
-
startDate?: string;
|
|
35
|
-
|
|
36
|
-
@IsOptional()
|
|
37
|
-
@IsDateString()
|
|
38
|
-
endDate?: string;
|
|
39
|
-
|
|
40
49
|
@IsOptional()
|
|
41
50
|
@IsString({ each: true })
|
|
42
51
|
extend?: string[];
|
|
@@ -58,14 +67,9 @@ export class QueryBuilder<Model extends ObjectionModel, OutputDTO> {
|
|
|
58
67
|
|
|
59
68
|
let qry = query.page(pagination.page, pagination.limit).orderBy(sorting.sortBy, sorting.sortDirection);
|
|
60
69
|
|
|
61
|
-
if (this.query.startDate) {
|
|
62
|
-
qry = qry.where(`${tableName}.createdAt`, '>=', this.query.startDate);
|
|
63
|
-
}
|
|
64
|
-
if (this.query.endDate) {
|
|
65
|
-
qry = qry.where(`${tableName}.createdAt`, '<=', this.query.endDate);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
70
|
qry = this.filters(tableName, qry);
|
|
71
|
+
qry = this.greaterThan(tableName, qry);
|
|
72
|
+
qry = this.lessThan(tableName, qry);
|
|
69
73
|
|
|
70
74
|
if (this.query.search) {
|
|
71
75
|
qry.where((builder) => {
|
|
@@ -93,15 +97,19 @@ export class QueryBuilder<Model extends ObjectionModel, OutputDTO> {
|
|
|
93
97
|
|
|
94
98
|
private filters(
|
|
95
99
|
tableName: string,
|
|
96
|
-
query: ObjectionQueryBuilder<Model, Page<Model
|
|
100
|
+
query: ObjectionQueryBuilder<Model, Page<Model>>,
|
|
97
101
|
): ObjectionQueryBuilder<Model, Page<Model>> {
|
|
98
102
|
for (const filter in this.query.filters) {
|
|
99
103
|
if (Object.prototype.hasOwnProperty.call(this.query.filters, filter)) {
|
|
100
104
|
const searchVal = this.query.filters[filter];
|
|
101
105
|
|
|
102
106
|
if (searchVal && Array.isArray(searchVal)) {
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
if (searchVal.includes(null) || searchVal.includes('null')) {
|
|
108
|
+
query.whereNull(`${tableName}.${filter}`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (searchVal.length) {
|
|
105
113
|
query.whereIn(`${tableName}.${filter}`, searchVal.filter(Boolean) as unknown as AnyQueryBuilder);
|
|
106
114
|
}
|
|
107
115
|
}
|
|
@@ -111,6 +119,38 @@ export class QueryBuilder<Model extends ObjectionModel, OutputDTO> {
|
|
|
111
119
|
return query;
|
|
112
120
|
}
|
|
113
121
|
|
|
122
|
+
private greaterThan(
|
|
123
|
+
tableName: string,
|
|
124
|
+
query: ObjectionQueryBuilder<Model, Page<Model>>,
|
|
125
|
+
): ObjectionQueryBuilder<Model, Page<Model>> {
|
|
126
|
+
for (const filter in this.query.greaterThan) {
|
|
127
|
+
if (Object.prototype.hasOwnProperty.call(this.query.greaterThan, filter)) {
|
|
128
|
+
const searchVal = this.query.greaterThan[filter];
|
|
129
|
+
if (searchVal) {
|
|
130
|
+
query.where(`${tableName}.${filter}`, '>=', searchVal as unknown as Expression<PrimitiveValue>);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return query;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
private lessThan(
|
|
139
|
+
tableName: string,
|
|
140
|
+
query: ObjectionQueryBuilder<Model, Page<Model>>,
|
|
141
|
+
): ObjectionQueryBuilder<Model, Page<Model>> {
|
|
142
|
+
for (const filter in this.query.lessThan) {
|
|
143
|
+
if (Object.prototype.hasOwnProperty.call(this.query.lessThan, filter)) {
|
|
144
|
+
const searchVal = this.query.lessThan[filter];
|
|
145
|
+
if (searchVal) {
|
|
146
|
+
query.where(`${tableName}.${filter}`, '<=', searchVal as unknown as Expression<PrimitiveValue>);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return query;
|
|
152
|
+
}
|
|
153
|
+
|
|
114
154
|
private sorting(): { sortBy: string; sortDirection: SortDirection } {
|
|
115
155
|
if (!this.query.sortBy) {
|
|
116
156
|
return {
|