@opra/sqb 0.2.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,40 +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 'destroy':
23
- return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
24
- case 'destroyAll':
25
- return this.deleteMany(prepared.options, ctx.userContext);
26
- case 'findAll':
27
- return this.search(prepared.options, ctx.userContext);
28
- case 'findByPk':
29
- return this.get(prepared.keyValue, prepared.options, ctx.userContext);
30
- case 'update':
31
- return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
32
- case 'updateAll':
33
- return this.updateMany(prepared.values, prepared.options, ctx.userContext);
34
- default:
35
- throw new TypeError(`Unimplemented method (${prepared.method})`);
36
- }
37
- }
38
- async get(keyValue, options, userContext) {
16
+ async create(data, options, userContext) {
39
17
  const conn = await this.getConnection(userContext);
40
18
  const repo = conn.getRepository(this.resourceType);
41
19
  let out;
42
20
  try {
43
- out = await repo.findByPk(keyValue, options);
21
+ out = await repo.create(data, options);
44
22
  }
45
23
  catch (e) {
46
24
  await this._onError(e);
47
25
  throw new exception_1.BadRequestError(e);
48
26
  }
49
27
  if (out && this.onTransformRow)
50
- out = this.onTransformRow(out, userContext, 'findByPk');
28
+ out = this.onTransformRow(out, userContext, 'create');
51
29
  return out;
52
30
  }
53
31
  async count(options, userContext) {
@@ -61,85 +39,85 @@ class BaseEntityService {
61
39
  throw new exception_1.BadRequestError(e);
62
40
  }
63
41
  }
64
- async search(options, userContext) {
42
+ async delete(keyValue, options, userContext) {
65
43
  const conn = await this.getConnection(userContext);
66
44
  const repo = conn.getRepository(this.resourceType);
67
- let items;
68
45
  try {
69
- items = await repo.findAll(options);
46
+ return await repo.destroy(keyValue, options);
70
47
  }
71
48
  catch (e) {
72
49
  await this._onError(e);
73
50
  throw new exception_1.BadRequestError(e);
74
51
  }
75
- if (items.length && this.onTransformRow) {
76
- const newItems = [];
77
- for (const item of items) {
78
- const v = this.onTransformRow(item, userContext, 'search');
79
- if (v)
80
- newItems.push(v);
81
- }
82
- return newItems;
83
- }
84
- return items;
85
52
  }
86
- async create(data, options, userContext) {
53
+ async deleteMany(options, userContext) {
87
54
  const conn = await this.getConnection(userContext);
88
55
  const repo = conn.getRepository(this.resourceType);
89
- let out;
90
56
  try {
91
- out = await repo.create(data, options);
57
+ return await repo.destroyAll(options);
92
58
  }
93
59
  catch (e) {
94
60
  await this._onError(e);
95
61
  throw new exception_1.BadRequestError(e);
96
62
  }
97
- if (out && this.onTransformRow)
98
- out = this.onTransformRow(out, userContext, 'create');
99
- return out;
100
63
  }
101
- async update(keyValue, data, options, userContext) {
64
+ async get(keyValue, options, userContext) {
102
65
  const conn = await this.getConnection(userContext);
103
66
  const repo = conn.getRepository(this.resourceType);
104
67
  let out;
105
68
  try {
106
- out = await repo.update(keyValue, data, options);
69
+ out = await repo.findByPk(keyValue, options);
107
70
  }
108
71
  catch (e) {
109
72
  await this._onError(e);
110
73
  throw new exception_1.BadRequestError(e);
111
74
  }
112
75
  if (out && this.onTransformRow)
113
- out = this.onTransformRow(out, userContext, 'create');
76
+ out = this.onTransformRow(out, userContext, 'findByPk');
114
77
  return out;
115
78
  }
116
- async updateMany(data, options, userContext) {
79
+ async search(options, userContext) {
117
80
  const conn = await this.getConnection(userContext);
118
81
  const repo = conn.getRepository(this.resourceType);
82
+ let items;
119
83
  try {
120
- return await repo.updateAll(data, options);
84
+ items = await repo.findAll(options);
121
85
  }
122
86
  catch (e) {
123
87
  await this._onError(e);
124
88
  throw new exception_1.BadRequestError(e);
125
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;
126
100
  }
127
- async delete(keyValue, options, userContext) {
101
+ async update(keyValue, data, options, userContext) {
128
102
  const conn = await this.getConnection(userContext);
129
103
  const repo = conn.getRepository(this.resourceType);
104
+ let out;
130
105
  try {
131
- return await repo.destroy(keyValue, options);
106
+ out = await repo.update(keyValue, data, options);
132
107
  }
133
108
  catch (e) {
134
109
  await this._onError(e);
135
110
  throw new exception_1.BadRequestError(e);
136
111
  }
112
+ if (out && this.onTransformRow)
113
+ out = this.onTransformRow(out, userContext, 'create');
114
+ return out;
137
115
  }
138
- async deleteMany(options, userContext) {
116
+ async updateMany(data, options, userContext) {
139
117
  const conn = await this.getConnection(userContext);
140
118
  const repo = conn.getRepository(this.resourceType);
141
119
  try {
142
- return await repo.destroyAll(options);
120
+ return await repo.updateAll(data, options);
143
121
  }
144
122
  catch (e) {
145
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);
@@ -22,8 +22,18 @@ var SQBAdapter;
22
22
  args: [data, options]
23
23
  };
24
24
  }
25
+ case 'count': {
26
+ const options = lodash_1.default.omitBy({
27
+ filter: (0, convert_filter_js_1.convertFilter)(query.filter)
28
+ }, lodash_1.default.isNil);
29
+ return {
30
+ method: 'count',
31
+ options,
32
+ args: [options]
33
+ };
34
+ }
25
35
  case 'get': {
26
- if (query.kind === 'GetInstanceQuery') {
36
+ if (query.kind === 'CollectionGetQuery') {
27
37
  const options = lodash_1.default.omitBy({
28
38
  pick: query.pick?.length ? query.pick : undefined,
29
39
  omit: query.omit?.length ? query.omit : undefined,
@@ -80,6 +90,7 @@ var SQBAdapter;
80
90
  const { data } = query;
81
91
  return {
82
92
  method: 'updateAll',
93
+ values: data,
83
94
  options,
84
95
  args: [data, options]
85
96
  };
@@ -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,10 +1,9 @@
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
- type SearchOptions = Repository.FindAllOptions & {
6
- total?: boolean;
7
- };
5
+ type SearchOptions = Repository.FindAllOptions;
6
+ type CountOptions = Repository.CountOptions;
8
7
  type GetOptions = Repository.GetOptions;
9
8
  type CreateOptions = Repository.CreateOptions;
10
9
  type UpdateOptions = Repository.UpdateOptions;
@@ -12,21 +11,20 @@ export declare namespace BaseEntityService {
12
11
  type DeleteOptions = Repository.DestroyOptions;
13
12
  type DeleteManyOptions = Repository.DestroyOptions;
14
13
  }
15
- export declare abstract class BaseEntityService<T> implements IEntityService {
14
+ export declare abstract class BaseEntityService<T, TOutput = PartialOutput<T>> {
16
15
  readonly resourceType: Type<T>;
17
16
  protected _metadata: EntityMetadata;
18
17
  protected constructor(resourceType: Type<T>);
19
- processRequest(ctx: QueryContext): Promise<number | boolean | 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; }> | 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; }>[]>;
20
- get(keyValue: any, options?: BaseEntityService.GetOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>>;
21
- count(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<Maybe<number>>;
22
- search(options?: BaseEntityService.SearchOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>[]>;
23
- create(data: EntityInput<T>, options?: BaseEntityService.CreateOptions, userContext?: any): Promise<EntityOutput<T>>;
24
- update(keyValue: any, data: EntityInput<T>, options?: BaseEntityService.UpdateOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>>;
25
- 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>;
26
20
  delete(keyValue: any, options?: BaseEntityService.DeleteOptions, userContext?: any): Promise<boolean>;
27
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>;
28
26
  private _onError;
29
27
  protected abstract getConnection(userContext?: any): SqbConnection | SqbClient | Promise<SqbConnection | SqbClient>;
30
28
  protected onError?(e: unknown): void | Promise<void>;
31
- protected onTransformRow?(row: EntityOutput<T>, userContext: any, method: string): EntityOutput<T>;
29
+ protected onTransformRow?(row: TOutput, userContext: any, method: string): TOutput;
32
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,40 +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 'destroy':
20
- return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
21
- case 'destroyAll':
22
- return this.deleteMany(prepared.options, ctx.userContext);
23
- case 'findAll':
24
- return this.search(prepared.options, ctx.userContext);
25
- case 'findByPk':
26
- return this.get(prepared.keyValue, prepared.options, ctx.userContext);
27
- case 'update':
28
- return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
29
- case 'updateAll':
30
- return this.updateMany(prepared.values, prepared.options, ctx.userContext);
31
- default:
32
- throw new TypeError(`Unimplemented method (${prepared.method})`);
33
- }
34
- }
35
- async get(keyValue, options, userContext) {
13
+ async create(data, options, userContext) {
36
14
  const conn = await this.getConnection(userContext);
37
15
  const repo = conn.getRepository(this.resourceType);
38
16
  let out;
39
17
  try {
40
- out = await repo.findByPk(keyValue, options);
18
+ out = await repo.create(data, options);
41
19
  }
42
20
  catch (e) {
43
21
  await this._onError(e);
44
22
  throw new BadRequestError(e);
45
23
  }
46
24
  if (out && this.onTransformRow)
47
- out = this.onTransformRow(out, userContext, 'findByPk');
25
+ out = this.onTransformRow(out, userContext, 'create');
48
26
  return out;
49
27
  }
50
28
  async count(options, userContext) {
@@ -58,85 +36,85 @@ export class BaseEntityService {
58
36
  throw new BadRequestError(e);
59
37
  }
60
38
  }
61
- async search(options, userContext) {
39
+ async delete(keyValue, options, userContext) {
62
40
  const conn = await this.getConnection(userContext);
63
41
  const repo = conn.getRepository(this.resourceType);
64
- let items;
65
42
  try {
66
- items = await repo.findAll(options);
43
+ return await repo.destroy(keyValue, options);
67
44
  }
68
45
  catch (e) {
69
46
  await this._onError(e);
70
47
  throw new BadRequestError(e);
71
48
  }
72
- if (items.length && this.onTransformRow) {
73
- const newItems = [];
74
- for (const item of items) {
75
- const v = this.onTransformRow(item, userContext, 'search');
76
- if (v)
77
- newItems.push(v);
78
- }
79
- return newItems;
80
- }
81
- return items;
82
49
  }
83
- async create(data, options, userContext) {
50
+ async deleteMany(options, userContext) {
84
51
  const conn = await this.getConnection(userContext);
85
52
  const repo = conn.getRepository(this.resourceType);
86
- let out;
87
53
  try {
88
- out = await repo.create(data, options);
54
+ return await repo.destroyAll(options);
89
55
  }
90
56
  catch (e) {
91
57
  await this._onError(e);
92
58
  throw new BadRequestError(e);
93
59
  }
94
- if (out && this.onTransformRow)
95
- out = this.onTransformRow(out, userContext, 'create');
96
- return out;
97
60
  }
98
- async update(keyValue, data, options, userContext) {
61
+ async get(keyValue, options, userContext) {
99
62
  const conn = await this.getConnection(userContext);
100
63
  const repo = conn.getRepository(this.resourceType);
101
64
  let out;
102
65
  try {
103
- out = await repo.update(keyValue, data, options);
66
+ out = await repo.findByPk(keyValue, options);
104
67
  }
105
68
  catch (e) {
106
69
  await this._onError(e);
107
70
  throw new BadRequestError(e);
108
71
  }
109
72
  if (out && this.onTransformRow)
110
- out = this.onTransformRow(out, userContext, 'create');
73
+ out = this.onTransformRow(out, userContext, 'findByPk');
111
74
  return out;
112
75
  }
113
- async updateMany(data, options, userContext) {
76
+ async search(options, userContext) {
114
77
  const conn = await this.getConnection(userContext);
115
78
  const repo = conn.getRepository(this.resourceType);
79
+ let items;
116
80
  try {
117
- return await repo.updateAll(data, options);
81
+ items = await repo.findAll(options);
118
82
  }
119
83
  catch (e) {
120
84
  await this._onError(e);
121
85
  throw new BadRequestError(e);
122
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;
123
97
  }
124
- async delete(keyValue, options, userContext) {
98
+ async update(keyValue, data, options, userContext) {
125
99
  const conn = await this.getConnection(userContext);
126
100
  const repo = conn.getRepository(this.resourceType);
101
+ let out;
127
102
  try {
128
- return await repo.destroy(keyValue, options);
103
+ out = await repo.update(keyValue, data, options);
129
104
  }
130
105
  catch (e) {
131
106
  await this._onError(e);
132
107
  throw new BadRequestError(e);
133
108
  }
109
+ if (out && this.onTransformRow)
110
+ out = this.onTransformRow(out, userContext, 'create');
111
+ return out;
134
112
  }
135
- async deleteMany(options, userContext) {
113
+ async updateMany(data, options, userContext) {
136
114
  const conn = await this.getConnection(userContext);
137
115
  const repo = conn.getRepository(this.resourceType);
138
116
  try {
139
- return await repo.destroyAll(options);
117
+ return await repo.updateAll(data, options);
140
118
  }
141
119
  catch (e) {
142
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,7 +1,7 @@
1
- import { OpraAnyQuery } from '@opra/schema';
1
+ import { OpraQuery } from '@opra/schema';
2
2
  export declare namespace SQBAdapter {
3
- function prepare(query: OpraAnyQuery): {
4
- method: 'create' | 'findByPk' | 'findAll' | 'update' | 'updateAll' | 'destroy' | 'destroyAll';
3
+ function prepare(query: OpraQuery): {
4
+ method: 'create' | 'count' | 'findByPk' | 'findAll' | 'update' | 'updateAll' | 'destroy' | 'destroyAll';
5
5
  options: any;
6
6
  keyValue?: any;
7
7
  values?: any;
@@ -18,8 +18,18 @@ export var SQBAdapter;
18
18
  args: [data, options]
19
19
  };
20
20
  }
21
+ case 'count': {
22
+ const options = _.omitBy({
23
+ filter: convertFilter(query.filter)
24
+ }, _.isNil);
25
+ return {
26
+ method: 'count',
27
+ options,
28
+ args: [options]
29
+ };
30
+ }
21
31
  case 'get': {
22
- if (query.kind === 'GetInstanceQuery') {
32
+ if (query.kind === 'CollectionGetQuery') {
23
33
  const options = _.omitBy({
24
34
  pick: query.pick?.length ? query.pick : undefined,
25
35
  omit: query.omit?.length ? query.omit : undefined,
@@ -76,6 +86,7 @@ export var SQBAdapter;
76
86
  const { data } = query;
77
87
  return {
78
88
  method: 'updateAll',
89
+ values: data,
79
90
  options,
80
91
  args: [data, options]
81
92
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/sqb",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Opra SQB adapter package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -26,18 +26,22 @@
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/connect": "^4.5.1"
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
+ "async-mutex": "^0.4.0",
37
+ "postgresql-client": "^2.5.1"
33
38
  },
34
39
  "peerDependencies": {
35
- "@opra/core": "^0.2.0",
36
- "@opra/exception": "^0.2.0",
37
- "@opra/optionals": "^0.2.0",
38
- "@opra/url": "^0.2.0",
39
- "@sqb/connect": ">= 4.5.0",
40
- "@sqb/sqljs": "^4.5.1"
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
+ "@sqb/connect": ">= 4.5.4"
41
45
  },
42
46
  "type": "module",
43
47
  "types": "esm/index.d.ts",