@opra/sqb 0.3.0 → 0.4.0

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.
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseEntityResource = void 0;
4
+ const sqb_adapter_js_1 = require("./sqb-adapter.js");
5
+ class BaseEntityResource {
6
+ async create(ctx) {
7
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
8
+ return (await this.getService(ctx)).create(prepared.values, prepared.options, ctx.userContext);
9
+ }
10
+ async count(ctx) {
11
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
12
+ return (await this.getService(ctx)).count(prepared.options, ctx.userContext);
13
+ }
14
+ async delete(ctx) {
15
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
16
+ return (await this.getService(ctx)).delete(prepared.keyValue, prepared.options, ctx.userContext);
17
+ }
18
+ async deleteMany(ctx) {
19
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
20
+ return (await this.getService(ctx)).deleteMany(prepared.options, ctx.userContext);
21
+ }
22
+ async get(ctx) {
23
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
24
+ return (await this.getService(ctx)).get(prepared.keyValue, prepared.options, ctx.userContext);
25
+ }
26
+ async search(ctx) {
27
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
28
+ return (await this.getService(ctx)).search(prepared.options, ctx.userContext);
29
+ }
30
+ async update(ctx) {
31
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
32
+ return (await this.getService(ctx)).update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
33
+ }
34
+ async updateMany(ctx) {
35
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
36
+ return (await this.getService(ctx)).updateMany(prepared.values, prepared.options, ctx.userContext);
37
+ }
38
+ }
39
+ exports.BaseEntityResource = BaseEntityResource;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseEntityService = void 0;
4
4
  const exception_1 = require("@opra/exception");
5
5
  const connect_1 = require("@sqb/connect");
6
- const sqb_adapter_js_1 = require("./sqb-adapter.js");
7
6
  class BaseEntityService {
8
7
  resourceType;
9
8
  _metadata;
@@ -14,42 +13,19 @@ class BaseEntityService {
14
13
  throw new TypeError(`You must provide an SQB entity class`);
15
14
  this._metadata = metadata;
16
15
  }
17
- async processRequest(ctx) {
18
- const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
19
- switch (prepared.method) {
20
- case 'create':
21
- return this.create(prepared.values, prepared.options, ctx.userContext);
22
- case 'count':
23
- return this.count(prepared.options, ctx.userContext);
24
- case 'destroy':
25
- return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
26
- case 'destroyAll':
27
- return this.deleteMany(prepared.options, ctx.userContext);
28
- case 'findAll':
29
- return this.search(prepared.options, ctx.userContext);
30
- case 'findByPk':
31
- return this.get(prepared.keyValue, prepared.options, ctx.userContext);
32
- case 'update':
33
- return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
34
- case 'updateAll':
35
- return this.updateMany(prepared.values, prepared.options, ctx.userContext);
36
- default:
37
- throw new TypeError(`Unimplemented method (${prepared.method})`);
38
- }
39
- }
40
- async get(keyValue, options, userContext) {
16
+ async create(data, options, userContext) {
41
17
  const conn = await this.getConnection(userContext);
42
18
  const repo = conn.getRepository(this.resourceType);
43
19
  let out;
44
20
  try {
45
- out = await repo.findByPk(keyValue, options);
21
+ out = await repo.create(data, options);
46
22
  }
47
23
  catch (e) {
48
24
  await this._onError(e);
49
25
  throw new exception_1.BadRequestError(e);
50
26
  }
51
27
  if (out && this.onTransformRow)
52
- out = this.onTransformRow(out, userContext, 'findByPk');
28
+ out = this.onTransformRow(out, userContext, 'create');
53
29
  return out;
54
30
  }
55
31
  async count(options, userContext) {
@@ -63,85 +39,85 @@ class BaseEntityService {
63
39
  throw new exception_1.BadRequestError(e);
64
40
  }
65
41
  }
66
- async search(options, userContext) {
42
+ async delete(keyValue, options, userContext) {
67
43
  const conn = await this.getConnection(userContext);
68
44
  const repo = conn.getRepository(this.resourceType);
69
- let items;
70
45
  try {
71
- items = await repo.findAll(options);
46
+ return await repo.destroy(keyValue, options);
72
47
  }
73
48
  catch (e) {
74
49
  await this._onError(e);
75
50
  throw new exception_1.BadRequestError(e);
76
51
  }
77
- if (items.length && this.onTransformRow) {
78
- const newItems = [];
79
- for (const item of items) {
80
- const v = this.onTransformRow(item, userContext, 'search');
81
- if (v)
82
- newItems.push(v);
83
- }
84
- return newItems;
85
- }
86
- return items;
87
52
  }
88
- async create(data, options, userContext) {
53
+ async deleteMany(options, userContext) {
89
54
  const conn = await this.getConnection(userContext);
90
55
  const repo = conn.getRepository(this.resourceType);
91
- let out;
92
56
  try {
93
- out = await repo.create(data, options);
57
+ return await repo.destroyAll(options);
94
58
  }
95
59
  catch (e) {
96
60
  await this._onError(e);
97
61
  throw new exception_1.BadRequestError(e);
98
62
  }
99
- if (out && this.onTransformRow)
100
- out = this.onTransformRow(out, userContext, 'create');
101
- return out;
102
63
  }
103
- async update(keyValue, data, options, userContext) {
64
+ async get(keyValue, options, userContext) {
104
65
  const conn = await this.getConnection(userContext);
105
66
  const repo = conn.getRepository(this.resourceType);
106
67
  let out;
107
68
  try {
108
- out = await repo.update(keyValue, data, options);
69
+ out = await repo.findByPk(keyValue, options);
109
70
  }
110
71
  catch (e) {
111
72
  await this._onError(e);
112
73
  throw new exception_1.BadRequestError(e);
113
74
  }
114
75
  if (out && this.onTransformRow)
115
- out = this.onTransformRow(out, userContext, 'create');
76
+ out = this.onTransformRow(out, userContext, 'findByPk');
116
77
  return out;
117
78
  }
118
- async updateMany(data, options, userContext) {
79
+ async search(options, userContext) {
119
80
  const conn = await this.getConnection(userContext);
120
81
  const repo = conn.getRepository(this.resourceType);
82
+ let items;
121
83
  try {
122
- return await repo.updateAll(data, options);
84
+ items = await repo.findAll(options);
123
85
  }
124
86
  catch (e) {
125
87
  await this._onError(e);
126
88
  throw new exception_1.BadRequestError(e);
127
89
  }
90
+ if (items.length && this.onTransformRow) {
91
+ const newItems = [];
92
+ for (const item of items) {
93
+ const v = this.onTransformRow(item, userContext, 'search');
94
+ if (v)
95
+ newItems.push(v);
96
+ }
97
+ return newItems;
98
+ }
99
+ return items;
128
100
  }
129
- async delete(keyValue, options, userContext) {
101
+ async update(keyValue, data, options, userContext) {
130
102
  const conn = await this.getConnection(userContext);
131
103
  const repo = conn.getRepository(this.resourceType);
104
+ let out;
132
105
  try {
133
- return await repo.destroy(keyValue, options);
106
+ out = await repo.update(keyValue, data, options);
134
107
  }
135
108
  catch (e) {
136
109
  await this._onError(e);
137
110
  throw new exception_1.BadRequestError(e);
138
111
  }
112
+ if (out && this.onTransformRow)
113
+ out = this.onTransformRow(out, userContext, 'create');
114
+ return out;
139
115
  }
140
- async deleteMany(options, userContext) {
116
+ async updateMany(data, options, userContext) {
141
117
  const conn = await this.getConnection(userContext);
142
118
  const repo = conn.getRepository(this.resourceType);
143
119
  try {
144
- return await repo.destroyAll(options);
120
+ return await repo.updateAll(data, options);
145
121
  }
146
122
  catch (e) {
147
123
  await this._onError(e);
package/cjs/index.js CHANGED
@@ -2,4 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./sqb-adapter.js"), exports);
5
+ tslib_1.__exportStar(require("./base-entity-resource.js"), exports);
5
6
  tslib_1.__exportStar(require("./base-entity-service.js"), exports);
@@ -33,7 +33,7 @@ var SQBAdapter;
33
33
  };
34
34
  }
35
35
  case 'get': {
36
- if (query.kind === 'GetInstanceQuery') {
36
+ if (query.kind === 'CollectionGetQuery') {
37
37
  const options = lodash_1.default.omitBy({
38
38
  pick: query.pick?.length ? query.pick : undefined,
39
39
  omit: query.omit?.length ? query.omit : undefined,
@@ -0,0 +1,13 @@
1
+ import { ICollectionResource, QueryContext } from '@opra/core';
2
+ import { BaseEntityService } from './base-entity-service.js';
3
+ export declare abstract class BaseEntityResource<T> implements ICollectionResource<T> {
4
+ create(ctx: QueryContext): Promise<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>;
5
+ count(ctx: QueryContext): Promise<number>;
6
+ delete(ctx: QueryContext): Promise<boolean>;
7
+ deleteMany(ctx: QueryContext): Promise<number>;
8
+ get(ctx: QueryContext): Promise<import("ts-gems").Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>>;
9
+ search(ctx: QueryContext): Promise<(T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; })[]>;
10
+ update(ctx: QueryContext): Promise<import("ts-gems").Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>>;
11
+ updateMany(ctx: QueryContext): Promise<number>;
12
+ abstract getService(ctx: QueryContext): BaseEntityService<T> | Promise<BaseEntityService<T>>;
13
+ }
@@ -0,0 +1,35 @@
1
+ import { SQBAdapter } from './sqb-adapter.js';
2
+ export class BaseEntityResource {
3
+ async create(ctx) {
4
+ const prepared = SQBAdapter.prepare(ctx.query);
5
+ return (await this.getService(ctx)).create(prepared.values, prepared.options, ctx.userContext);
6
+ }
7
+ async count(ctx) {
8
+ const prepared = SQBAdapter.prepare(ctx.query);
9
+ return (await this.getService(ctx)).count(prepared.options, ctx.userContext);
10
+ }
11
+ async delete(ctx) {
12
+ const prepared = SQBAdapter.prepare(ctx.query);
13
+ return (await this.getService(ctx)).delete(prepared.keyValue, prepared.options, ctx.userContext);
14
+ }
15
+ async deleteMany(ctx) {
16
+ const prepared = SQBAdapter.prepare(ctx.query);
17
+ return (await this.getService(ctx)).deleteMany(prepared.options, ctx.userContext);
18
+ }
19
+ async get(ctx) {
20
+ const prepared = SQBAdapter.prepare(ctx.query);
21
+ return (await this.getService(ctx)).get(prepared.keyValue, prepared.options, ctx.userContext);
22
+ }
23
+ async search(ctx) {
24
+ const prepared = SQBAdapter.prepare(ctx.query);
25
+ return (await this.getService(ctx)).search(prepared.options, ctx.userContext);
26
+ }
27
+ async update(ctx) {
28
+ const prepared = SQBAdapter.prepare(ctx.query);
29
+ return (await this.getService(ctx)).update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
30
+ }
31
+ async updateMany(ctx) {
32
+ const prepared = SQBAdapter.prepare(ctx.query);
33
+ return (await this.getService(ctx)).updateMany(prepared.values, prepared.options, ctx.userContext);
34
+ }
35
+ }
@@ -1,6 +1,6 @@
1
1
  import { Maybe, Type } from 'ts-gems';
2
- import { IEntityService, QueryContext } from '@opra/core';
3
- import { EntityInput, EntityMetadata, EntityOutput, Repository, SqbClient, SqbConnection } from '@sqb/connect';
2
+ import { PartialInput, PartialOutput } from '@opra/core';
3
+ import { EntityInput, EntityMetadata, Repository, SqbClient, SqbConnection } from '@sqb/connect';
4
4
  export declare namespace BaseEntityService {
5
5
  type SearchOptions = Repository.FindAllOptions;
6
6
  type CountOptions = Repository.CountOptions;
@@ -11,21 +11,20 @@ export declare namespace BaseEntityService {
11
11
  type DeleteOptions = Repository.DestroyOptions;
12
12
  type DeleteManyOptions = Repository.DestroyOptions;
13
13
  }
14
- export declare abstract class BaseEntityService<T> implements IEntityService {
14
+ export declare abstract class BaseEntityService<T, TOutput = PartialOutput<T>> {
15
15
  readonly resourceType: Type<T>;
16
16
  protected _metadata: EntityMetadata;
17
17
  protected constructor(resourceType: Type<T>);
18
- processRequest(ctx: QueryContext): Promise<number | boolean | (T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }) | Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>[] | undefined>;
19
- get(keyValue: any, options?: BaseEntityService.GetOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>>;
20
- count(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<Maybe<number>>;
21
- search(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>[]>;
22
- create(data: EntityInput<T>, options?: BaseEntityService.CreateOptions, userContext?: any): Promise<EntityOutput<T>>;
23
- update(keyValue: any, data: EntityInput<T>, options?: BaseEntityService.UpdateOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>>;
24
- updateMany(data: EntityInput<T>, options?: BaseEntityService.UpdateManyOptions, userContext?: any): Promise<number>;
18
+ create(data: PartialInput<T>, options?: BaseEntityService.CreateOptions, userContext?: any): Promise<TOutput>;
19
+ count(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<number>;
25
20
  delete(keyValue: any, options?: BaseEntityService.DeleteOptions, userContext?: any): Promise<boolean>;
26
21
  deleteMany(options?: BaseEntityService.DeleteManyOptions, userContext?: any): Promise<number>;
22
+ get(keyValue: any, options?: BaseEntityService.GetOptions, userContext?: any): Promise<Maybe<TOutput>>;
23
+ search(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<TOutput[]>;
24
+ update(keyValue: any, data: EntityInput<T>, options?: BaseEntityService.UpdateOptions, userContext?: any): Promise<Maybe<TOutput>>;
25
+ updateMany(data: PartialInput<T>, options?: BaseEntityService.UpdateManyOptions, userContext?: any): Promise<number>;
27
26
  private _onError;
28
27
  protected abstract getConnection(userContext?: any): SqbConnection | SqbClient | Promise<SqbConnection | SqbClient>;
29
28
  protected onError?(e: unknown): void | Promise<void>;
30
- protected onTransformRow?(row: EntityOutput<T>, userContext: any, method: string): EntityOutput<T>;
29
+ protected onTransformRow?(row: TOutput, userContext: any, method: string): TOutput;
31
30
  }
@@ -1,6 +1,5 @@
1
1
  import { BadRequestError } from '@opra/exception';
2
2
  import { EntityMetadata } from '@sqb/connect';
3
- import { SQBAdapter } from './sqb-adapter.js';
4
3
  export class BaseEntityService {
5
4
  resourceType;
6
5
  _metadata;
@@ -11,42 +10,19 @@ export class BaseEntityService {
11
10
  throw new TypeError(`You must provide an SQB entity class`);
12
11
  this._metadata = metadata;
13
12
  }
14
- async processRequest(ctx) {
15
- const prepared = SQBAdapter.prepare(ctx.query);
16
- switch (prepared.method) {
17
- case 'create':
18
- return this.create(prepared.values, prepared.options, ctx.userContext);
19
- case 'count':
20
- return this.count(prepared.options, ctx.userContext);
21
- case 'destroy':
22
- return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
23
- case 'destroyAll':
24
- return this.deleteMany(prepared.options, ctx.userContext);
25
- case 'findAll':
26
- return this.search(prepared.options, ctx.userContext);
27
- case 'findByPk':
28
- return this.get(prepared.keyValue, prepared.options, ctx.userContext);
29
- case 'update':
30
- return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
31
- case 'updateAll':
32
- return this.updateMany(prepared.values, prepared.options, ctx.userContext);
33
- default:
34
- throw new TypeError(`Unimplemented method (${prepared.method})`);
35
- }
36
- }
37
- async get(keyValue, options, userContext) {
13
+ async create(data, options, userContext) {
38
14
  const conn = await this.getConnection(userContext);
39
15
  const repo = conn.getRepository(this.resourceType);
40
16
  let out;
41
17
  try {
42
- out = await repo.findByPk(keyValue, options);
18
+ out = await repo.create(data, options);
43
19
  }
44
20
  catch (e) {
45
21
  await this._onError(e);
46
22
  throw new BadRequestError(e);
47
23
  }
48
24
  if (out && this.onTransformRow)
49
- out = this.onTransformRow(out, userContext, 'findByPk');
25
+ out = this.onTransformRow(out, userContext, 'create');
50
26
  return out;
51
27
  }
52
28
  async count(options, userContext) {
@@ -60,85 +36,85 @@ export class BaseEntityService {
60
36
  throw new BadRequestError(e);
61
37
  }
62
38
  }
63
- async search(options, userContext) {
39
+ async delete(keyValue, options, userContext) {
64
40
  const conn = await this.getConnection(userContext);
65
41
  const repo = conn.getRepository(this.resourceType);
66
- let items;
67
42
  try {
68
- items = await repo.findAll(options);
43
+ return await repo.destroy(keyValue, options);
69
44
  }
70
45
  catch (e) {
71
46
  await this._onError(e);
72
47
  throw new BadRequestError(e);
73
48
  }
74
- if (items.length && this.onTransformRow) {
75
- const newItems = [];
76
- for (const item of items) {
77
- const v = this.onTransformRow(item, userContext, 'search');
78
- if (v)
79
- newItems.push(v);
80
- }
81
- return newItems;
82
- }
83
- return items;
84
49
  }
85
- async create(data, options, userContext) {
50
+ async deleteMany(options, userContext) {
86
51
  const conn = await this.getConnection(userContext);
87
52
  const repo = conn.getRepository(this.resourceType);
88
- let out;
89
53
  try {
90
- out = await repo.create(data, options);
54
+ return await repo.destroyAll(options);
91
55
  }
92
56
  catch (e) {
93
57
  await this._onError(e);
94
58
  throw new BadRequestError(e);
95
59
  }
96
- if (out && this.onTransformRow)
97
- out = this.onTransformRow(out, userContext, 'create');
98
- return out;
99
60
  }
100
- async update(keyValue, data, options, userContext) {
61
+ async get(keyValue, options, userContext) {
101
62
  const conn = await this.getConnection(userContext);
102
63
  const repo = conn.getRepository(this.resourceType);
103
64
  let out;
104
65
  try {
105
- out = await repo.update(keyValue, data, options);
66
+ out = await repo.findByPk(keyValue, options);
106
67
  }
107
68
  catch (e) {
108
69
  await this._onError(e);
109
70
  throw new BadRequestError(e);
110
71
  }
111
72
  if (out && this.onTransformRow)
112
- out = this.onTransformRow(out, userContext, 'create');
73
+ out = this.onTransformRow(out, userContext, 'findByPk');
113
74
  return out;
114
75
  }
115
- async updateMany(data, options, userContext) {
76
+ async search(options, userContext) {
116
77
  const conn = await this.getConnection(userContext);
117
78
  const repo = conn.getRepository(this.resourceType);
79
+ let items;
118
80
  try {
119
- return await repo.updateAll(data, options);
81
+ items = await repo.findAll(options);
120
82
  }
121
83
  catch (e) {
122
84
  await this._onError(e);
123
85
  throw new BadRequestError(e);
124
86
  }
87
+ if (items.length && this.onTransformRow) {
88
+ const newItems = [];
89
+ for (const item of items) {
90
+ const v = this.onTransformRow(item, userContext, 'search');
91
+ if (v)
92
+ newItems.push(v);
93
+ }
94
+ return newItems;
95
+ }
96
+ return items;
125
97
  }
126
- async delete(keyValue, options, userContext) {
98
+ async update(keyValue, data, options, userContext) {
127
99
  const conn = await this.getConnection(userContext);
128
100
  const repo = conn.getRepository(this.resourceType);
101
+ let out;
129
102
  try {
130
- return await repo.destroy(keyValue, options);
103
+ out = await repo.update(keyValue, data, options);
131
104
  }
132
105
  catch (e) {
133
106
  await this._onError(e);
134
107
  throw new BadRequestError(e);
135
108
  }
109
+ if (out && this.onTransformRow)
110
+ out = this.onTransformRow(out, userContext, 'create');
111
+ return out;
136
112
  }
137
- async deleteMany(options, userContext) {
113
+ async updateMany(data, options, userContext) {
138
114
  const conn = await this.getConnection(userContext);
139
115
  const repo = conn.getRepository(this.resourceType);
140
116
  try {
141
- return await repo.destroyAll(options);
117
+ return await repo.updateAll(data, options);
142
118
  }
143
119
  catch (e) {
144
120
  await this._onError(e);
package/esm/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './sqb-adapter.js';
2
+ export * from './base-entity-resource.js';
2
3
  export * from './base-entity-service.js';
package/esm/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './sqb-adapter.js';
2
+ export * from './base-entity-resource.js';
2
3
  export * from './base-entity-service.js';
@@ -1,6 +1,6 @@
1
- import { OpraAnyQuery } from '@opra/schema';
1
+ import { OpraQuery } from '@opra/schema';
2
2
  export declare namespace SQBAdapter {
3
- function prepare(query: OpraAnyQuery): {
3
+ function prepare(query: OpraQuery): {
4
4
  method: 'create' | 'count' | 'findByPk' | 'findAll' | 'update' | 'updateAll' | 'destroy' | 'destroyAll';
5
5
  options: any;
6
6
  keyValue?: any;
@@ -29,7 +29,7 @@ export var SQBAdapter;
29
29
  };
30
30
  }
31
31
  case 'get': {
32
- if (query.kind === 'GetInstanceQuery') {
32
+ if (query.kind === 'CollectionGetQuery') {
33
33
  const options = _.omitBy({
34
34
  pick: query.pick?.length ? query.pick : undefined,
35
35
  omit: query.omit?.length ? query.omit : undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/sqb",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Opra SQB adapter package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -26,21 +26,21 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "lodash": "^4.17.21",
29
- "ts-gems": "^2.2.0"
29
+ "ts-gems": "^2.3.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@sqb/builder": "^4.5.3",
33
- "@sqb/connect": "^4.5.3",
34
- "@faker-js/faker": "^7.5.0",
35
- "@sqb/postgres": "^4.5.4",
32
+ "@faker-js/faker": "^7.6.0",
33
+ "@sqb/builder": "^4.5.5",
34
+ "@sqb/connect": "^4.5.5",
35
+ "@sqb/postgres": "^4.5.5",
36
36
  "async-mutex": "^0.4.0",
37
37
  "postgresql-client": "^2.5.1"
38
38
  },
39
39
  "peerDependencies": {
40
- "@opra/core": "^0.3.0",
41
- "@opra/exception": "^0.3.0",
42
- "@opra/optionals": "^0.3.0",
43
- "@opra/url": "^0.3.0",
40
+ "@opra/core": "^0.4.0",
41
+ "@opra/exception": "^0.4.0",
42
+ "@opra/optionals": "^0.4.0",
43
+ "@opra/url": "^0.4.0",
44
44
  "@sqb/connect": ">= 4.5.4"
45
45
  },
46
46
  "type": "module",