@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.
Files changed (81) hide show
  1. package/dist/config.d.ts +14 -0
  2. package/dist/config.js +12 -0
  3. package/dist/config.js.map +1 -1
  4. package/dist/knex.d.ts +3 -0
  5. package/dist/knex.js +1 -0
  6. package/dist/knex.js.map +1 -1
  7. package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts +3 -0
  8. package/dist/migrations/sql/20240613175009-lastseen-users-pog.js +17 -0
  9. package/dist/migrations/sql/20240613175009-lastseen-users-pog.js.map +1 -0
  10. package/dist/migrations/sql/20240614143517-shop.d.ts +3 -0
  11. package/dist/migrations/sql/20240614143517-shop.js +29 -0
  12. package/dist/migrations/sql/20240614143517-shop.js.map +1 -0
  13. package/dist/migrations/sql/20240615145045-user-player-link.d.ts +3 -0
  14. package/dist/migrations/sql/20240615145045-user-player-link.js +17 -0
  15. package/dist/migrations/sql/20240615145045-user-player-link.js.map +1 -0
  16. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts +3 -0
  17. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js +11 -0
  18. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js.map +1 -0
  19. package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts +3 -0
  20. package/dist/migrations/sql/20240626200803-player-inventory-idx.js +11 -0
  21. package/dist/migrations/sql/20240626200803-player-inventory-idx.js.map +1 -0
  22. package/dist/migrations/sql/20240628174914-shop-orders.d.ts +3 -0
  23. package/dist/migrations/sql/20240628174914-shop-orders.js +16 -0
  24. package/dist/migrations/sql/20240628174914-shop-orders.js.map +1 -0
  25. package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts +3 -0
  26. package/dist/migrations/sql/20240705140358-teleports-public-refactor.js +26 -0
  27. package/dist/migrations/sql/20240705140358-teleports-public-refactor.js.map +1 -0
  28. package/dist/migrations/sql/20240710181429-events-name-idx.d.ts +3 -0
  29. package/dist/migrations/sql/20240710181429-events-name-idx.js +11 -0
  30. package/dist/migrations/sql/20240710181429-events-name-idx.js.map +1 -0
  31. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts +3 -0
  32. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js +26 -0
  33. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js.map +1 -0
  34. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts +3 -0
  35. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js +13 -0
  36. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js.map +1 -0
  37. package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts +3 -0
  38. package/dist/migrations/sql/20240720135010-acting-user-and-module.js +19 -0
  39. package/dist/migrations/sql/20240720135010-acting-user-and-module.js.map +1 -0
  40. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts +3 -0
  41. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js +14 -0
  42. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js.map +1 -0
  43. package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts +3 -0
  44. package/dist/migrations/sql/20240814133931-domain-ext-ref.js +16 -0
  45. package/dist/migrations/sql/20240814133931-domain-ext-ref.js.map +1 -0
  46. package/dist/migrations/sql/20240816171220-player-steam-level.d.ts +3 -0
  47. package/dist/migrations/sql/20240816171220-player-steam-level.js +11 -0
  48. package/dist/migrations/sql/20240816171220-player-steam-level.js.map +1 -0
  49. package/dist/queryBuilder.d.ts +8 -2
  50. package/dist/queryBuilder.js +38 -19
  51. package/dist/queryBuilder.js.map +1 -1
  52. package/package.json +2 -3
  53. package/src/__tests__/queryBuilder.integration.test.ts +7 -4
  54. package/src/config.ts +14 -0
  55. package/src/knex.ts +1 -0
  56. package/src/migrations/sql/20221019173729_settings.ts +2 -2
  57. package/src/migrations/sql/20221102190532_commands.ts +2 -2
  58. package/src/migrations/sql/20230308183400-persistent-variables.ts +2 -2
  59. package/src/migrations/sql/20230604130951-fix-hook-eventtypes.ts +1 -1
  60. package/src/migrations/sql/20230622192402-discord-hooks.ts +2 -2
  61. package/src/migrations/sql/20230712061220-roles-permissions-extension.ts +1 -1
  62. package/src/migrations/sql/20230921123717-count-for-permissions.ts +1 -1
  63. package/src/migrations/sql/20240105130846-remove-some-module-perms.ts +4 -4
  64. package/src/migrations/sql/20240119152426-remove-hook-check.ts +1 -1
  65. package/src/migrations/sql/20240121142329-move-ip-history.ts +1 -1
  66. package/src/migrations/sql/20240613175009-lastseen-users-pog.ts +21 -0
  67. package/src/migrations/sql/20240614143517-shop.ts +39 -0
  68. package/src/migrations/sql/20240615145045-user-player-link.ts +20 -0
  69. package/src/migrations/sql/20240622132552-fix-ip-history-fk.ts +13 -0
  70. package/src/migrations/sql/20240626200803-player-inventory-idx.ts +13 -0
  71. package/src/migrations/sql/20240628174914-shop-orders.ts +20 -0
  72. package/src/migrations/sql/20240705140358-teleports-public-refactor.ts +31 -0
  73. package/src/migrations/sql/20240710181429-events-name-idx.ts +13 -0
  74. package/src/migrations/sql/20240711181423-shop-orders-multi-listing.ts +34 -0
  75. package/src/migrations/sql/20240718150807-listing-deleted-and-draft-status.ts +15 -0
  76. package/src/migrations/sql/20240720135010-acting-user-and-module.ts +24 -0
  77. package/src/migrations/sql/20240811061243-domain-rate-limit-setting.ts +16 -0
  78. package/src/migrations/sql/20240814133931-domain-ext-ref.ts +24 -0
  79. package/src/migrations/sql/20240816171220-player-steam-level.ts +14 -0
  80. package/src/migrations/util/alterEnum.ts +1 -1
  81. package/src/queryBuilder.ts +60 -20
@@ -1,5 +1,12 @@
1
- import { IsDateString, IsEnum, IsNumber, IsOptional, IsString } from 'class-validator';
2
- import { QueryBuilder as ObjectionQueryBuilder, Model as ObjectionModel, Page, AnyQueryBuilder } from 'objection';
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
- const filtered = searchVal.filter(Boolean);
104
- if (filtered.length) {
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 {