couchset 0.0.11 → 0.0.12

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.
@@ -17,7 +17,7 @@ var generateClient = function (props) {
17
17
  // TODO fields mapping
18
18
  var name = props.name, fields = props.fields;
19
19
  var nameCamel = (0, camelCase_1.default)(name);
20
- var fragmentName = name + "Fragment";
20
+ var fragmentName = "".concat(name, "Fragment");
21
21
  var fieldsJoined = (fields || []).join(',');
22
22
  var FRAGMENT = (0, lodash_1.isEmpty)(fields)
23
23
  ? null
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/automate/model/client.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,+DAAyC;AACzC,4DAA8B;AAC9B,iCAA+B;AAE/B,uCAA6C;AAOtC,IAAM,cAAc,GAAG,UAAC,KAAY;IACvC,uBAAuB;IACvB,sBAAsB;IACf,IAAA,IAAI,GAAY,KAAK,KAAjB,EAAE,MAAM,GAAI,KAAK,OAAT,CAAU;IAE7B,IAAM,SAAS,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;IAClC,IAAM,YAAY,GAAM,IAAI,aAAU,CAAC;IAEvC,IAAM,YAAY,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAM,QAAQ,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,IAAI;QACN,CAAC,KAAC,qBAAG,4HAAA,iBACE,EAAY,MAAO,EAAI,cAC5B,EAAY,aAEnB,KAHY,YAAY,EAAO,IAAI,EAC5B,YAAY,CAEnB,CAAC;IAEA,IAAM,IAAI,OAAG,qBAAG,wMAAA,kBACJ,EAAI,kCACJ,EAAS,wCACR,EAAY,0BAGvB,EAAQ,MACX,KANa,IAAI,EACJ,SAAS,EACR,YAAY,EAGvB,QAAQ,CACX,CAAC;IAEA,IAAM,GAAG,OAAG,qBAAG,wLAAA,iBACJ,EAAI,gCACL,EAAS,6BACV,EAAY,wBAGnB,EAAQ,MACX,KANY,IAAI,EACL,SAAS,EACV,YAAY,EAGnB,QAAQ,CACX,CAAC;IAEA,IAAM,MAAM,OAAG,qBAAG,uNAAA,wBACA,EAAI,kCACV,EAAS,4EAInB,EAAe,OACjB,KANkB,IAAI,EACV,SAAS,EAInB,wBAAe,CACjB,CAAC;IAED,IAAM,MAAM,OAAG,qBAAG,8NAAA,uBACD,EAAI,UAAW,EAAI,2BACxB,EAAS,+EAInB,EAAe,OACjB,KANiB,IAAI,EAAW,IAAI,EACxB,SAAS,EAInB,wBAAe,CACjB,CAAC;IAED,OAAO,EAAC,QAAQ,UAAA,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,IAAI,MAAA,EAAC,CAAC;AACjD,CAAC,CAAC;AAvDW,QAAA,cAAc,kBAuDzB","sourcesContent":["import camelCase from 'lodash/camelCase';\nimport gql from 'graphql-tag';\nimport {isEmpty} from 'lodash';\n\nimport {ResTypeFragment} from '../../shared';\n\ninterface Props {\n name: string;\n fields: string[];\n}\n\nexport const generateClient = (props: Props) => {\n // TODO inner fragments\n // TODO fields mapping\n const {name, fields} = props;\n\n const nameCamel = camelCase(name);\n const fragmentName = `${name}Fragment`;\n\n const fieldsJoined = (fields || []).join(',');\n\n const FRAGMENT = isEmpty(fields)\n ? null\n : gql`\n fragment ${fragmentName} on ${name} {\n ${fieldsJoined}\n }\n `;\n\n const PAGE = gql`\n query Page${name}($id: String!) {\n data: ${nameCamel}Pagination(id: $id) {\n ...${fragmentName}\n }\n }\n ${FRAGMENT}\n `;\n\n const GET = gql`\n query Get${name}($id: String!) {\n data: ${nameCamel}Get(id: $id) {\n ...${fragmentName}\n }\n }\n ${FRAGMENT}\n `;\n\n const DELETE = gql`\n mutation Delete${name}($id: String!) {\n data: ${nameCamel}Delete(id: $id) {\n ...ResTypeFragment\n }\n }\n ${ResTypeFragment}\n `;\n\n const CREATE = gql`\n mutation Create${name}($args: ${name}Input!) {\n data: ${nameCamel}Create(args: $args) {\n ...ResTypeFragment\n }\n }\n ${ResTypeFragment}\n `;\n\n return {FRAGMENT, GET, DELETE, CREATE, PAGE};\n};\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/automate/model/client.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,+DAAyC;AACzC,4DAA8B;AAC9B,iCAA+B;AAE/B,uCAA6C;AAOtC,IAAM,cAAc,GAAG,UAAC,KAAY;IACvC,uBAAuB;IACvB,sBAAsB;IACf,IAAA,IAAI,GAAY,KAAK,KAAjB,EAAE,MAAM,GAAI,KAAK,OAAT,CAAU;IAE7B,IAAM,SAAS,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;IAClC,IAAM,YAAY,GAAG,UAAG,IAAI,aAAU,CAAC;IAEvC,IAAM,YAAY,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAM,QAAQ,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,IAAI;QACN,CAAC,KAAC,qBAAG,4HAAA,iBACE,EAAY,MAAO,EAAI,cAC5B,EAAY,aAEnB,KAHY,YAAY,EAAO,IAAI,EAC5B,YAAY,CAEnB,CAAC;IAEA,IAAM,IAAI,OAAG,qBAAG,wMAAA,kBACJ,EAAI,kCACJ,EAAS,wCACR,EAAY,0BAGvB,EAAQ,MACX,KANa,IAAI,EACJ,SAAS,EACR,YAAY,EAGvB,QAAQ,CACX,CAAC;IAEA,IAAM,GAAG,OAAG,qBAAG,wLAAA,iBACJ,EAAI,gCACL,EAAS,6BACV,EAAY,wBAGnB,EAAQ,MACX,KANY,IAAI,EACL,SAAS,EACV,YAAY,EAGnB,QAAQ,CACX,CAAC;IAEA,IAAM,MAAM,OAAG,qBAAG,uNAAA,wBACA,EAAI,kCACV,EAAS,4EAInB,EAAe,OACjB,KANkB,IAAI,EACV,SAAS,EAInB,wBAAe,CACjB,CAAC;IAED,IAAM,MAAM,OAAG,qBAAG,8NAAA,uBACD,EAAI,UAAW,EAAI,2BACxB,EAAS,+EAInB,EAAe,OACjB,KANiB,IAAI,EAAW,IAAI,EACxB,SAAS,EAInB,wBAAe,CACjB,CAAC;IAED,OAAO,EAAC,QAAQ,UAAA,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,IAAI,MAAA,EAAC,CAAC;AACjD,CAAC,CAAC;AAvDW,QAAA,cAAc,kBAuDzB","sourcesContent":["import camelCase from 'lodash/camelCase';\nimport gql from 'graphql-tag';\nimport {isEmpty} from 'lodash';\n\nimport {ResTypeFragment} from '../../shared';\n\ninterface Props {\n name: string;\n fields: string[];\n}\n\nexport const generateClient = (props: Props) => {\n // TODO inner fragments\n // TODO fields mapping\n const {name, fields} = props;\n\n const nameCamel = camelCase(name);\n const fragmentName = `${name}Fragment`;\n\n const fieldsJoined = (fields || []).join(',');\n\n const FRAGMENT = isEmpty(fields)\n ? null\n : gql`\n fragment ${fragmentName} on ${name} {\n ${fieldsJoined}\n }\n `;\n\n const PAGE = gql`\n query Page${name}($id: String!) {\n data: ${nameCamel}Pagination(id: $id) {\n ...${fragmentName}\n }\n }\n ${FRAGMENT}\n `;\n\n const GET = gql`\n query Get${name}($id: String!) {\n data: ${nameCamel}Get(id: $id) {\n ...${fragmentName}\n }\n }\n ${FRAGMENT}\n `;\n\n const DELETE = gql`\n mutation Delete${name}($id: String!) {\n data: ${nameCamel}Delete(id: $id) {\n ...ResTypeFragment\n }\n }\n ${ResTypeFragment}\n `;\n\n const CREATE = gql`\n mutation Create${name}($args: ${name}Input!) {\n data: ${nameCamel}Create(args: $args) {\n ...ResTypeFragment\n }\n }\n ${ResTypeFragment}\n `;\n\n return {FRAGMENT, GET, DELETE, CREATE, PAGE};\n};\n"]}
@@ -126,8 +126,8 @@ var automateImplementation = function (ClassModelType, options) {
126
126
  (0, type_graphql_1.Field)(function (type) { return graphql_type_json_1.default; }, { nullable: true })
127
127
  ], PaginationClass.prototype, "params", void 0);
128
128
  PaginationClass = __decorate([
129
- (0, type_graphql_1.InputType)(nameCamel + "PaginationInput"),
130
- (0, type_graphql_1.ObjectType)(nameCamel + "Pagination")
129
+ (0, type_graphql_1.InputType)("".concat(nameCamel, "PaginationInput")),
130
+ (0, type_graphql_1.ObjectType)("".concat(nameCamel, "Pagination"))
131
131
  ], PaginationClass);
132
132
  return PaginationClass;
133
133
  }());
@@ -135,7 +135,7 @@ var automateImplementation = function (ClassModelType, options) {
135
135
  var ResolverClass = /** @class */ (function () {
136
136
  function ResolverClass() {
137
137
  }
138
- ResolverClass.prototype[_e = nameCamel + "Pagination"] = function (filter, sort, before, after, limitArg) {
138
+ ResolverClass.prototype[_e = "".concat(nameCamel, "Pagination")] = function (filter, sort, before, after, limitArg) {
139
139
  return __awaiter(this, void 0, void 0, function () {
140
140
  var limit, copyParams, bucket, query, _a, errorFetching, _b, data, _c, _d, rows, _j, options_1, dataToSend, error_1;
141
141
  return __generator(this, function (_k) {
@@ -149,7 +149,7 @@ var automateImplementation = function (ClassModelType, options) {
149
149
  after: after,
150
150
  limit: limit,
151
151
  }, lodash_1.identity);
152
- (0, utils_1.log)(nameCamel + "Pagination -->", copyParams);
152
+ (0, utils_1.log)("".concat(nameCamel, "Pagination -->"), copyParams);
153
153
  _k.label = 1;
154
154
  case 1:
155
155
  _k.trys.push([1, 5, , 6]);
@@ -158,7 +158,7 @@ var automateImplementation = function (ClassModelType, options) {
158
158
  case 2: return [2 /*return*/, _k.sent()];
159
159
  case 3:
160
160
  bucket = ClassModel.getBucketName();
161
- query = "\n SELECT " + modelKeys.join(',') + "\n FROM `" + bucket + "` " + nameCamel + "\n WHERE " + nameCamel + "._type = \"" + _type + "\"\n LIMIT " + limit + ";\n ";
161
+ query = "\n SELECT ".concat(modelKeys.join(','), "\n FROM `").concat(bucket, "` ").concat(nameCamel, "\n WHERE ").concat(nameCamel, "._type = \"").concat(_type, "\"\n LIMIT ").concat(limit, ";\n ");
162
162
  return [4 /*yield*/, (0, utils_1.awaitTo)(ClassModel.customQuery({
163
163
  limit: limit,
164
164
  query: query,
@@ -174,21 +174,21 @@ var automateImplementation = function (ClassModelType, options) {
174
174
  return [2 /*return*/, __assign({ items: dataToSend }, options_1)];
175
175
  case 5:
176
176
  error_1 = _k.sent();
177
- (0, utils_1.log)("error paginating " + nameCamel, error_1);
177
+ (0, utils_1.log)("error paginating ".concat(nameCamel), error_1);
178
178
  return [2 /*return*/, { items: [], hasNext: false, params: copyParams }];
179
179
  case 6: return [2 /*return*/];
180
180
  }
181
181
  });
182
182
  });
183
183
  };
184
- ResolverClass.prototype[_f = nameCamel + "Get"] = function (id, owner) {
184
+ ResolverClass.prototype[_f = "".concat(nameCamel, "Get")] = function (id, owner) {
185
185
  return __awaiter(this, void 0, void 0, function () {
186
186
  var foundDocument, error_2;
187
187
  return __generator(this, function (_a) {
188
188
  switch (_a.label) {
189
189
  case 0:
190
190
  _a.trys.push([0, 4, , 5]);
191
- (0, utils_1.log)(nameCamel + "Get -->", { id: id, owner: owner });
191
+ (0, utils_1.log)("".concat(nameCamel, "Get -->"), { id: id, owner: owner });
192
192
  if (!(getByIdOptions && getByIdOptions.method)) return [3 /*break*/, 2];
193
193
  return [4 /*yield*/, getByIdOptions.method({ id: id, owner: owner })];
194
194
  case 1: return [2 /*return*/, _a.sent()];
@@ -196,25 +196,25 @@ var automateImplementation = function (ClassModelType, options) {
196
196
  case 3:
197
197
  foundDocument = _a.sent();
198
198
  if (!foundDocument) {
199
- throw new Error(nameCamel + " not found");
199
+ throw new Error("".concat(nameCamel, " not found"));
200
200
  }
201
201
  return [2 /*return*/, foundDocument];
202
202
  case 4:
203
203
  error_2 = _a.sent();
204
- (0, utils_1.log)("error finding " + nameCamel, error_2);
204
+ (0, utils_1.log)("error finding ".concat(nameCamel), error_2);
205
205
  return [2 /*return*/, null];
206
206
  case 5: return [2 /*return*/];
207
207
  }
208
208
  });
209
209
  });
210
210
  };
211
- ResolverClass.prototype[_g = nameCamel + "Delete"] = function (id, owner) {
211
+ ResolverClass.prototype[_g = "".concat(nameCamel, "Delete")] = function (id, owner) {
212
212
  return __awaiter(this, void 0, void 0, function () {
213
213
  var deleted, error_3;
214
214
  return __generator(this, function (_a) {
215
215
  switch (_a.label) {
216
216
  case 0:
217
- (0, utils_1.log)(nameCamel + "Delete -->", { id: id, owner: owner });
217
+ (0, utils_1.log)("".concat(nameCamel, "Delete -->"), { id: id, owner: owner });
218
218
  _a.label = 1;
219
219
  case 1:
220
220
  _a.trys.push([1, 5, , 6]);
@@ -225,21 +225,21 @@ var automateImplementation = function (ClassModelType, options) {
225
225
  case 4:
226
226
  deleted = _a.sent();
227
227
  if (!deleted) {
228
- throw new Error(nameCamel + " not deleted");
228
+ throw new Error("".concat(nameCamel, " not deleted"));
229
229
  }
230
230
  return [2 /*return*/, {
231
231
  success: true,
232
232
  }];
233
233
  case 5:
234
234
  error_3 = _a.sent();
235
- (0, utils_1.log)("error deleting " + nameCamel, error_3);
235
+ (0, utils_1.log)("error deleting ".concat(nameCamel), error_3);
236
236
  return [2 /*return*/, { success: false, message: error_3 && error_3.message }];
237
237
  case 6: return [2 /*return*/];
238
238
  }
239
239
  });
240
240
  });
241
241
  };
242
- ResolverClass.prototype[_h = nameCamel + "Create"] = function (
242
+ ResolverClass.prototype[_h = "".concat(nameCamel, "Create")] = function (
243
243
  // @ts-ignore
244
244
  args) {
245
245
  return __awaiter(this, void 0, void 0, function () {
@@ -247,7 +247,7 @@ var automateImplementation = function (ClassModelType, options) {
247
247
  return __generator(this, function (_a) {
248
248
  switch (_a.label) {
249
249
  case 0:
250
- (0, utils_1.log)(nameCamel + "Create -->", args);
250
+ (0, utils_1.log)("".concat(nameCamel, "Create -->"), args);
251
251
  _a.label = 1;
252
252
  case 1:
253
253
  _a.trys.push([1, 5, , 6]);
@@ -260,7 +260,7 @@ var automateImplementation = function (ClassModelType, options) {
260
260
  if (createdOrUpdate) {
261
261
  return [2 /*return*/, { success: true, data: createdOrUpdate }];
262
262
  }
263
- throw new Error("error creating " + nameCamel + " method ");
263
+ throw new Error("error creating ".concat(nameCamel, " method "));
264
264
  case 5:
265
265
  err_1 = _a.sent();
266
266
  console.error(err_1 && err_1.message, err_1);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport camelCase from 'lodash/camelCase';\nimport pickBy from 'lodash/pickBy';\nimport GraphQLJSON from 'graphql-type-json';\nimport {identity} from 'lodash';\nimport {\n Field,\n Mutation,\n ObjectType,\n UseMiddleware,\n Arg,\n ClassType,\n Resolver,\n Query,\n InputType,\n} from 'type-graphql';\nimport {DocumentNode} from 'graphql';\n\nimport {awaitTo, log} from '../../utils';\nimport {Model} from '../../model';\nimport {isAuth} from '../middlewares';\nimport {createUpdate, ResType} from '../../shared';\n\nimport {generateClient} from './client';\n\ninterface PaginationResults {\n items: any[];\n hasNext: boolean;\n params: any;\n}\n\nexport interface AutomaticModelOptions extends AutomaticMethodOptions {\n model: Model;\n}\n\nexport interface AutomaticMethodOptions {\n authMiddleware?: any; // authentication middleware\n\n // Query\n pagination?: {\n public?: boolean;\n method?: (params: any) => Promise<PaginationResults>;\n };\n\n getById?: {\n public?: boolean;\n matchOwner?: boolean;\n method?: <T>(params: any) => Promise<T & any>;\n };\n\n // Mutations\n deleteById?: {\n public?: boolean; // NEVER SET IN PROD\n method?: (args: any) => Promise<ResType>;\n matchOwner?: boolean;\n };\n\n createUpdate?: {\n public?: boolean; // NEVER SET IN PROD\n method?: <T>(args: T) => Promise<ResType>;\n };\n\n // TODO in the future\n // fragmentMapping\n}\n\nexport interface AutomaticOutput {\n pagination: ClassType;\n resolver: ClassType;\n modelKeys: string[];\n client: Record<string, DocumentNode>;\n}\n\n/**\n *\n * @param c\n * @returns\n */\nexport const automateImplementation = <T>(\n ClassModelType: T & ClassType,\n options: AutomaticModelOptions\n): AutomaticOutput => {\n // createUpdate\n const createUpdateOptions = options?.createUpdate;\n const createUpdateOptionsPublic = options?.createUpdate?.public;\n\n // deleteById\n const deleteByIdOptions = options?.deleteById;\n const deleteByIdOptionsPublic = options?.deleteById?.public;\n\n // getById\n const getByIdOptions = options?.getById;\n const getByIdOptionsPublic = options?.getById?.public;\n\n // pagination\n const paginationOptions = options?.pagination;\n const paginationOptionsPublic = options?.pagination?.public;\n\n type ClassModelTYPE = typeof ClassModelType;\n\n const ClassModel = options.model;\n const name = (ClassModelType as any).name;\n const _type = ClassModel.collectionName;\n const nameCamel = camelCase(name);\n // const nameSNAKE_CASE = toUpper(snakeCase(name));\n const modelKeys: string[] = Object.getOwnPropertyNames(new ClassModelType());\n\n const authMiddleware = options.authMiddleware || isAuth;\n\n const blankMiddleware = [];\n\n @InputType(`${nameCamel}PaginationInput`)\n @ObjectType(`${nameCamel}Pagination`)\n class PaginationClass {\n @Field(() => [ClassModelType], {nullable: true})\n items: [typeof ClassModelType];\n\n @Field(() => Boolean, {nullable: true})\n hasNext?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Field((type) => GraphQLJSON, {nullable: true})\n params?: any;\n }\n // return Pagination;\n\n @Resolver()\n class ResolverClass {\n @Query(() => PaginationClass)\n @UseMiddleware(paginationOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Pagination`](\n @Arg('filter', () => String, {nullable: true}) filter?: string,\n @Arg('sort', () => String, {nullable: true}) sort?: string,\n @Arg('before', () => Date, {nullable: true}) before?: Date,\n @Arg('after', () => Date, {nullable: true}) after?: Date,\n @Arg('limit', () => Number, {nullable: true}) limitArg?: number\n ): Promise<{\n items: ClassModelTYPE[];\n hasNext: boolean;\n params: any;\n }> {\n const limit = limitArg || 10;\n\n const copyParams = pickBy(\n {\n filter,\n sort,\n before,\n after,\n limit,\n },\n identity\n );\n\n log(`${nameCamel}Pagination -->`, copyParams);\n\n try {\n // Apply it from the methods\n if (paginationOptions && paginationOptions.method) {\n return await paginationOptions.method(copyParams);\n }\n\n const bucket = ClassModel.getBucketName();\n\n const query = `\n SELECT ${modelKeys.join(',')}\n FROM \\`${bucket}\\` ${nameCamel}\n WHERE ${nameCamel}._type = \"${_type}\"\n LIMIT ${limit};\n `;\n\n const [errorFetching, data = []] = await awaitTo(\n ClassModel.customQuery<any>({\n limit,\n query,\n params: copyParams,\n })\n );\n\n if (errorFetching) {\n throw errorFetching;\n }\n\n const [rows = [], options = {hasNext: false, params: copyParams}] = data;\n\n const dataToSend = rows.map((d) => ClassModel.parse(d));\n\n return {items: dataToSend, ...options};\n } catch (error) {\n log(`error paginating ${nameCamel}`, error);\n return {items: [], hasNext: false, params: copyParams};\n }\n }\n\n @Query(() => ClassModelType)\n @UseMiddleware(getByIdOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Get`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner?: string\n ): Promise<typeof ClassModelType> {\n try {\n log(`${nameCamel}Get -->`, {id, owner});\n // Apply it from the methods\n if (getByIdOptions && getByIdOptions.method) {\n return await getByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const foundDocument = await ClassModel.findById(id);\n if (!foundDocument) {\n throw new Error(`${nameCamel} not found`);\n }\n\n return foundDocument;\n } catch (error) {\n log(`error finding ${nameCamel}`, error);\n return null;\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(deleteByIdOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Delete`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner?: string\n ): Promise<ResType> {\n log(`${nameCamel}Delete -->`, {id, owner});\n try {\n // Apply it from the methods\n if (deleteByIdOptions && deleteByIdOptions.method) {\n return await deleteByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const deleted = await ClassModel.delete(id);\n if (!deleted) {\n throw new Error(`${nameCamel} not deleted`);\n }\n\n return {\n success: true,\n };\n } catch (error) {\n log(`error deleting ${nameCamel}`, error);\n return {success: false, message: error && error.message};\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(createUpdateOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Create`](\n // @ts-ignore\n @Arg('args', () => ClassModelType) args: ClassModelType\n ): Promise<ResType> {\n log(`${nameCamel}Create -->`, args);\n\n try {\n // Apply it from the methods\n if (createUpdateOptions && createUpdateOptions.method) {\n return await createUpdateOptions.method(args);\n }\n\n // If updating\n const createdOrUpdate = await createUpdate({\n model: ClassModel,\n data: {\n ...args,\n },\n ...args, // id and owner if it exists\n });\n\n if (createdOrUpdate) {\n return {success: true, data: createdOrUpdate};\n }\n\n throw new Error(`error creating ${nameCamel} method `);\n } catch (err) {\n console.error(err && err.message, err);\n return {success: false, message: err && err.message};\n }\n }\n }\n\n // GQL\n // { FRAGMENT, GET, DELETE, CREATE, PAGE }\n const client = generateClient({\n name,\n fields: modelKeys,\n });\n\n return {\n pagination: PaginationClass,\n resolver: ResolverClass,\n modelKeys,\n client,\n };\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport camelCase from 'lodash/camelCase';\nimport pickBy from 'lodash/pickBy';\nimport GraphQLJSON from 'graphql-type-json';\nimport {identity} from 'lodash';\nimport {\n Field,\n Mutation,\n ObjectType,\n UseMiddleware,\n Arg,\n ClassType,\n Resolver,\n Query,\n InputType,\n} from 'type-graphql';\nimport {DocumentNode} from 'graphql';\n\nimport {awaitTo, log} from '../../utils';\nimport {Model} from '../../model';\nimport {isAuth} from '../middlewares';\nimport {createUpdate, ResType} from '../../shared';\n\nimport {generateClient} from './client';\n\ninterface PaginationResults {\n items: any[];\n hasNext: boolean;\n params: any;\n}\n\nexport interface AutomaticModelOptions extends AutomaticMethodOptions {\n model: Model;\n}\n\nexport interface AutomaticMethodOptions {\n authMiddleware?: any; // authentication middleware\n\n // Query\n pagination?: {\n public?: boolean;\n method?: (params: any) => Promise<PaginationResults>;\n };\n\n getById?: {\n public?: boolean;\n matchOwner?: boolean;\n method?: <T>(params: any) => Promise<T & any>;\n };\n\n // Mutations\n deleteById?: {\n public?: boolean; // NEVER SET IN PROD\n method?: (args: any) => Promise<ResType>;\n matchOwner?: boolean;\n };\n\n createUpdate?: {\n public?: boolean; // NEVER SET IN PROD\n method?: <T>(args: T) => Promise<ResType>;\n };\n\n // TODO in the future\n // fragmentMapping\n}\n\nexport interface AutomaticOutput {\n pagination: ClassType;\n resolver: ClassType;\n modelKeys: string[];\n client: Record<string, DocumentNode>;\n}\n\n/**\n *\n * @param c\n * @returns\n */\nexport const automateImplementation = <T>(\n ClassModelType: T & ClassType,\n options: AutomaticModelOptions\n): AutomaticOutput => {\n // createUpdate\n const createUpdateOptions = options?.createUpdate;\n const createUpdateOptionsPublic = options?.createUpdate?.public;\n\n // deleteById\n const deleteByIdOptions = options?.deleteById;\n const deleteByIdOptionsPublic = options?.deleteById?.public;\n\n // getById\n const getByIdOptions = options?.getById;\n const getByIdOptionsPublic = options?.getById?.public;\n\n // pagination\n const paginationOptions = options?.pagination;\n const paginationOptionsPublic = options?.pagination?.public;\n\n type ClassModelTYPE = typeof ClassModelType;\n\n const ClassModel = options.model;\n const name = (ClassModelType as any).name;\n const _type = ClassModel.collectionName;\n const nameCamel = camelCase(name);\n // const nameSNAKE_CASE = toUpper(snakeCase(name));\n const modelKeys: string[] = Object.getOwnPropertyNames(new ClassModelType());\n\n const authMiddleware = options.authMiddleware || isAuth;\n\n const blankMiddleware = [];\n\n @InputType(`${nameCamel}PaginationInput`)\n @ObjectType(`${nameCamel}Pagination`)\n class PaginationClass {\n @Field(() => [ClassModelType], {nullable: true})\n items: [typeof ClassModelType];\n\n @Field(() => Boolean, {nullable: true})\n hasNext?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Field((type) => GraphQLJSON, {nullable: true})\n params?: any;\n }\n // return Pagination;\n\n @Resolver()\n class ResolverClass {\n @Query(() => PaginationClass)\n @UseMiddleware(paginationOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Pagination`](\n @Arg('filter', () => String, {nullable: true}) filter?: string,\n @Arg('sort', () => String, {nullable: true}) sort?: string,\n @Arg('before', () => Date, {nullable: true}) before?: Date,\n @Arg('after', () => Date, {nullable: true}) after?: Date,\n @Arg('limit', () => Number, {nullable: true}) limitArg?: number\n ): Promise<{\n items: ClassModelTYPE[];\n hasNext: boolean;\n params: any;\n }> {\n const limit = limitArg || 10;\n\n const copyParams = pickBy(\n {\n filter,\n sort,\n before,\n after,\n limit,\n },\n identity\n );\n\n log(`${nameCamel}Pagination -->`, copyParams);\n\n try {\n // Apply it from the methods\n if (paginationOptions && paginationOptions.method) {\n return await paginationOptions.method(copyParams);\n }\n\n const bucket = ClassModel.getBucketName();\n\n const query = `\n SELECT ${modelKeys.join(',')}\n FROM \\`${bucket}\\` ${nameCamel}\n WHERE ${nameCamel}._type = \"${_type}\"\n LIMIT ${limit};\n `;\n\n const [errorFetching, data = []] = await awaitTo(\n ClassModel.customQuery<any>({\n limit,\n query,\n params: copyParams,\n })\n );\n\n if (errorFetching) {\n throw errorFetching;\n }\n\n const [rows = [], options = {hasNext: false, params: copyParams}] = data;\n\n const dataToSend = rows.map((d) => ClassModel.parse(d));\n\n return {items: dataToSend, ...options};\n } catch (error) {\n log(`error paginating ${nameCamel}`, error);\n return {items: [], hasNext: false, params: copyParams};\n }\n }\n\n @Query(() => ClassModelType)\n @UseMiddleware(getByIdOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Get`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner?: string\n ): Promise<typeof ClassModelType> {\n try {\n log(`${nameCamel}Get -->`, {id, owner});\n // Apply it from the methods\n if (getByIdOptions && getByIdOptions.method) {\n return await getByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const foundDocument = await ClassModel.findById(id);\n if (!foundDocument) {\n throw new Error(`${nameCamel} not found`);\n }\n\n return foundDocument;\n } catch (error) {\n log(`error finding ${nameCamel}`, error);\n return null;\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(deleteByIdOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Delete`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner?: string\n ): Promise<ResType> {\n log(`${nameCamel}Delete -->`, {id, owner});\n try {\n // Apply it from the methods\n if (deleteByIdOptions && deleteByIdOptions.method) {\n return await deleteByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const deleted = await ClassModel.delete(id);\n if (!deleted) {\n throw new Error(`${nameCamel} not deleted`);\n }\n\n return {\n success: true,\n };\n } catch (error) {\n log(`error deleting ${nameCamel}`, error);\n return {success: false, message: error && error.message};\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(createUpdateOptionsPublic ? blankMiddleware : authMiddleware)\n async [`${nameCamel}Create`](\n // @ts-ignore\n @Arg('args', () => ClassModelType) args: ClassModelType\n ): Promise<ResType> {\n log(`${nameCamel}Create -->`, args);\n\n try {\n // Apply it from the methods\n if (createUpdateOptions && createUpdateOptions.method) {\n return await createUpdateOptions.method(args);\n }\n\n // If updating\n const createdOrUpdate = await createUpdate({\n model: ClassModel,\n data: {\n ...args,\n },\n ...args, // id and owner if it exists\n });\n\n if (createdOrUpdate) {\n return {success: true, data: createdOrUpdate};\n }\n\n throw new Error(`error creating ${nameCamel} method `);\n } catch (err) {\n console.error(err && err.message, err);\n return {success: false, message: err && err.message};\n }\n }\n }\n\n // GQL\n // { FRAGMENT, GET, DELETE, CREATE, PAGE }\n const client = generateClient({\n name,\n fields: modelKeys,\n });\n\n return {\n pagination: PaginationClass,\n resolver: ResolverClass,\n modelKeys,\n client,\n };\n};\n"]}
@@ -91,18 +91,18 @@ var writeAllClientSchemas = function (_a) {
91
91
  var _b = clt.client, FRAGMENT = _b.FRAGMENT, GET = _b.GET, PAGE = _b.PAGE, DELETE = _b.DELETE, CREATE = _b.CREATE, otherClient = __rest(_b, ["FRAGMENT", "GET", "PAGE", "DELETE", "CREATE"]);
92
92
  var constStatements = [
93
93
  {
94
- name: nameSNAKE_CASE + "_FRAGMENT",
94
+ name: "".concat(nameSNAKE_CASE, "_FRAGMENT"),
95
95
  value: FRAGMENT,
96
- leadingTrivia: "/** " + nameSNAKE_CASE + " Fragment **/",
96
+ leadingTrivia: "/** ".concat(nameSNAKE_CASE, " Fragment **/"),
97
97
  },
98
98
  {
99
- name: nameSNAKE_CASE + "_CREATE",
99
+ name: "".concat(nameSNAKE_CASE, "_CREATE"),
100
100
  value: CREATE,
101
- leadingTrivia: "/** " + nameSNAKE_CASE + " Create Mutation **/",
101
+ leadingTrivia: "/** ".concat(nameSNAKE_CASE, " Create Mutation **/"),
102
102
  },
103
- { name: nameSNAKE_CASE + "_DELETE", value: DELETE },
104
- { name: nameSNAKE_CASE + "_GET", value: GET },
105
- { name: nameSNAKE_CASE + "_PAGE", value: PAGE },
103
+ { name: "".concat(nameSNAKE_CASE, "_DELETE"), value: DELETE },
104
+ { name: "".concat(nameSNAKE_CASE, "_GET"), value: GET },
105
+ { name: "".concat(nameSNAKE_CASE, "_PAGE"), value: PAGE },
106
106
  ];
107
107
  try {
108
108
  // Add other defined queries
@@ -111,7 +111,7 @@ var writeAllClientSchemas = function (_a) {
111
111
  if (!(0, isEmpty_1.default)(keyQuery)) {
112
112
  constStatements.push({
113
113
  name: keyQuery,
114
- value: otherClient["" + keyQuery],
114
+ value: otherClient["".concat(keyQuery)],
115
115
  });
116
116
  }
117
117
  }
@@ -152,7 +152,7 @@ var writeAllClientSchemas = function (_a) {
152
152
  .map(function (c) { return ({
153
153
  kind: ts_morph_1.StructureKind.ExportDeclaration,
154
154
  // namespaceExport: "*",
155
- moduleSpecifier: "./" + c,
155
+ moduleSpecifier: "./".concat(c),
156
156
  }); });
157
157
  // write final index file
158
158
  return [4 /*yield*/, (0, writer_1.writeTsFile)({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/morpheus/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Define all models that should be morphed\n */\nimport {ExportDeclarationStructure, StructureKind} from 'ts-morph';\nimport isEmpty from 'lodash/isEmpty';\nimport {DocumentNode} from 'graphql';\n\nimport {toSnakeUpper} from '../../utils';\nimport {writeTsFile} from '../writer';\nimport {isDev} from '../../config';\n\ninterface ClientModels {\n name: string;\n client: Record<string, DocumentNode>;\n}\n\ninterface IWriteClient {\n path: string;\n clients: ClientModels[];\n}\n\n/**\n * Morpheus in actions\n */\nexport const writeAllClientSchemas = async ({clients, path}: IWriteClient): Promise<void> => {\n if (!isDev) {\n return;\n }\n // write each file\n const writeFilesTasks = clients.map((clt) => {\n const modelName = clt.name;\n const nameSNAKE_CASE = toSnakeUpper(modelName);\n\n // write fragments and all queries\n const {FRAGMENT, GET, PAGE, DELETE, CREATE, ...otherClient} = clt.client;\n\n const constStatements = [\n {\n name: `${nameSNAKE_CASE}_FRAGMENT`,\n value: FRAGMENT,\n leadingTrivia: `/** ${nameSNAKE_CASE} Fragment **/`,\n },\n {\n name: `${nameSNAKE_CASE}_CREATE`,\n value: CREATE,\n leadingTrivia: `/** ${nameSNAKE_CASE} Create Mutation **/`,\n },\n {name: `${nameSNAKE_CASE}_DELETE`, value: DELETE},\n {name: `${nameSNAKE_CASE}_GET`, value: GET},\n {name: `${nameSNAKE_CASE}_PAGE`, value: PAGE},\n ];\n\n // Add other defined queries\n for (const keyQuery of Object.keys(otherClient)) {\n if (!isEmpty(keyQuery)) {\n constStatements.push({\n name: keyQuery,\n value: (otherClient as any)[`${keyQuery}`],\n });\n }\n }\n\n return {\n filename: nameSNAKE_CASE,\n task: writeTsFile({\n pathToClient: path,\n filename: nameSNAKE_CASE,\n variables: constStatements.map((con) => ({\n name: con.name,\n initializer: JSON.stringify(con.value),\n leadingTrivia: (writer) => {\n writer.writeLine('\\n');\n\n if (con?.leadingTrivia) {\n writer.writeLine(con.leadingTrivia);\n }\n },\n trailingTrivia: (writer) => writer.writeLine('\\n'),\n })),\n }),\n };\n });\n\n // write all files\n await Promise.all(writeFilesTasks.map((i) => i.task));\n\n // write all exports\n const allFileExports: ExportDeclarationStructure[] = writeFilesTasks\n .map((i) => i.filename)\n .map((c) => ({\n kind: StructureKind.ExportDeclaration,\n // namespaceExport: \"*\",\n moduleSpecifier: `./${c}`,\n }));\n\n // write final index file\n await writeTsFile({\n filename: 'index',\n exports: allFileExports,\n });\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/morpheus/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Define all models that should be morphed\n */\nimport {ExportDeclarationStructure, StructureKind} from 'ts-morph';\nimport isEmpty from 'lodash/isEmpty';\nimport {DocumentNode} from 'graphql';\n\nimport {toSnakeUpper} from '../../utils';\nimport {writeTsFile} from '../writer';\nimport {isDev} from '../../config';\n\ninterface ClientModels {\n name: string;\n client: Record<string, DocumentNode>;\n}\n\ninterface IWriteClient {\n path: string;\n clients: ClientModels[];\n}\n\n/**\n * Morpheus in actions\n */\nexport const writeAllClientSchemas = async ({clients, path}: IWriteClient): Promise<void> => {\n if (!isDev) {\n return;\n }\n // write each file\n const writeFilesTasks = clients.map((clt) => {\n const modelName = clt.name;\n const nameSNAKE_CASE = toSnakeUpper(modelName);\n\n // write fragments and all queries\n const {FRAGMENT, GET, PAGE, DELETE, CREATE, ...otherClient} = clt.client;\n\n const constStatements = [\n {\n name: `${nameSNAKE_CASE}_FRAGMENT`,\n value: FRAGMENT,\n leadingTrivia: `/** ${nameSNAKE_CASE} Fragment **/`,\n },\n {\n name: `${nameSNAKE_CASE}_CREATE`,\n value: CREATE,\n leadingTrivia: `/** ${nameSNAKE_CASE} Create Mutation **/`,\n },\n {name: `${nameSNAKE_CASE}_DELETE`, value: DELETE},\n {name: `${nameSNAKE_CASE}_GET`, value: GET},\n {name: `${nameSNAKE_CASE}_PAGE`, value: PAGE},\n ];\n\n // Add other defined queries\n for (const keyQuery of Object.keys(otherClient)) {\n if (!isEmpty(keyQuery)) {\n constStatements.push({\n name: keyQuery,\n value: (otherClient as any)[`${keyQuery}`],\n });\n }\n }\n\n return {\n filename: nameSNAKE_CASE,\n task: writeTsFile({\n pathToClient: path,\n filename: nameSNAKE_CASE,\n variables: constStatements.map((con) => ({\n name: con.name,\n initializer: JSON.stringify(con.value),\n leadingTrivia: (writer) => {\n writer.writeLine('\\n');\n\n if (con?.leadingTrivia) {\n writer.writeLine(con.leadingTrivia);\n }\n },\n trailingTrivia: (writer) => writer.writeLine('\\n'),\n })),\n }),\n };\n });\n\n // write all files\n await Promise.all(writeFilesTasks.map((i) => i.task));\n\n // write all exports\n const allFileExports: ExportDeclarationStructure[] = writeFilesTasks\n .map((i) => i.filename)\n .map((c) => ({\n kind: StructureKind.ExportDeclaration,\n // namespaceExport: \"*\",\n moduleSpecifier: `./${c}`,\n }));\n\n // write final index file\n await writeTsFile({\n filename: 'index',\n exports: allFileExports,\n });\n};\n"]}
@@ -46,10 +46,10 @@ var writeTsFile = function (props) { return __awaiter(void 0, void 0, void 0, fu
46
46
  case 0:
47
47
  filename = props.filename, variables = props.variables, interfaces = props.interfaces, exports = props.exports, _a = props.pathToClient, pathToClient = _a === void 0 ? defaultPathToTs : _a;
48
48
  project = new ts_morph_1.Project({
49
- tsConfigFilePath: pathToClient + "/tsconfig.json",
49
+ tsConfigFilePath: "".concat(pathToClient, "/tsconfig.json"),
50
50
  skipAddingFilesFromTsConfig: true,
51
51
  });
52
- sourceFile = project.createSourceFile(pathToClient + "/" + filename + ".ts", {}, { overwrite: true });
52
+ sourceFile = project.createSourceFile("".concat(pathToClient, "/").concat(filename, ".ts"), {}, { overwrite: true });
53
53
  if (variables) {
54
54
  sourceFile.addVariableStatement({
55
55
  declarationKind: ts_morph_1.VariableDeclarationKind.Const,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/writer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAQkB;AAElB,IAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAUxC,IAAM,WAAW,GAAG,UAAO,KAAqB;;;;;gBAC5C,QAAQ,GAAoE,KAAK,SAAzE,EAAE,SAAS,GAAyD,KAAK,UAA9D,EAAE,UAAU,GAA6C,KAAK,WAAlD,EAAE,OAAO,GAAoC,KAAK,QAAzC,EAAE,KAAkC,KAAK,aAAT,EAA9B,YAAY,mBAAG,eAAe,KAAA,CAAU;gBACnF,OAAO,GAAG,IAAI,kBAAO,CAAC;oBACxB,gBAAgB,EAAK,YAAY,mBAAgB;oBACjD,2BAA2B,EAAE,IAAI;iBACpC,CAAC,CAAC;gBAEG,UAAU,GAAG,OAAO,CAAC,gBAAgB,CACpC,YAAY,SAAI,QAAQ,QAAK,EAChC,EAAE,EACF,EAAC,SAAS,EAAE,IAAI,EAAC,CACpB,CAAC;gBAEF,IAAI,SAAS,EAAE;oBACX,UAAU,CAAC,oBAAoB,CAAC;wBAC5B,eAAe,EAAE,kCAAuB,CAAC,KAAK;wBAC9C,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,SAAS;qBAC1B,CAAC,CAAC;iBACN;gBAED,IAAI,UAAU,EAAE;oBACZ,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;iBACxC;gBAED,IAAI,OAAO,EAAE;oBACT,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;iBAC7C;gBAEM,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;oBAA9B,sBAAO,SAAuB,EAAC;;;KAClC,CAAC;AA9BW,QAAA,WAAW,eA8BtB","sourcesContent":["import {\n Project,\n StatementedNodeStructure,\n VariableDeclarationKind,\n VariableDeclarationStructure,\n OptionalKind,\n InterfaceDeclarationStructure,\n ExportDeclarationStructure,\n} from 'ts-morph';\n\nconst defaultPathToTs = __dirname + '/client/';\n\ninterface WriteFileProps extends StatementedNodeStructure {\n filename: string;\n variables?: OptionalKind<VariableDeclarationStructure>[];\n interfaces?: OptionalKind<InterfaceDeclarationStructure>[];\n exports?: OptionalKind<ExportDeclarationStructure>[];\n pathToClient?: string;\n}\n\nexport const writeTsFile = async (props: WriteFileProps): Promise<any> => {\n const {filename, variables, interfaces, exports, pathToClient = defaultPathToTs} = props;\n const project = new Project({\n tsConfigFilePath: `${pathToClient}/tsconfig.json`,\n skipAddingFilesFromTsConfig: true,\n });\n\n const sourceFile = project.createSourceFile(\n `${pathToClient}/${filename}.ts`,\n {},\n {overwrite: true}\n );\n\n if (variables) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const, // defaults to \"let\"\n isExported: true,\n declarations: variables,\n });\n }\n\n if (interfaces) {\n sourceFile.addInterfaces(interfaces);\n }\n\n if (exports) {\n sourceFile.addExportDeclarations(exports);\n }\n\n return await sourceFile.save();\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/writer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAQkB;AAElB,IAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAUxC,IAAM,WAAW,GAAG,UAAO,KAAqB;;;;;gBAC5C,QAAQ,GAAoE,KAAK,SAAzE,EAAE,SAAS,GAAyD,KAAK,UAA9D,EAAE,UAAU,GAA6C,KAAK,WAAlD,EAAE,OAAO,GAAoC,KAAK,QAAzC,EAAE,KAAkC,KAAK,aAAT,EAA9B,YAAY,mBAAG,eAAe,KAAA,CAAU;gBACnF,OAAO,GAAG,IAAI,kBAAO,CAAC;oBACxB,gBAAgB,EAAE,UAAG,YAAY,mBAAgB;oBACjD,2BAA2B,EAAE,IAAI;iBACpC,CAAC,CAAC;gBAEG,UAAU,GAAG,OAAO,CAAC,gBAAgB,CACvC,UAAG,YAAY,cAAI,QAAQ,QAAK,EAChC,EAAE,EACF,EAAC,SAAS,EAAE,IAAI,EAAC,CACpB,CAAC;gBAEF,IAAI,SAAS,EAAE;oBACX,UAAU,CAAC,oBAAoB,CAAC;wBAC5B,eAAe,EAAE,kCAAuB,CAAC,KAAK;wBAC9C,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,SAAS;qBAC1B,CAAC,CAAC;iBACN;gBAED,IAAI,UAAU,EAAE;oBACZ,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;iBACxC;gBAED,IAAI,OAAO,EAAE;oBACT,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;iBAC7C;gBAEM,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;oBAA9B,sBAAO,SAAuB,EAAC;;;KAClC,CAAC;AA9BW,QAAA,WAAW,eA8BtB","sourcesContent":["import {\n Project,\n StatementedNodeStructure,\n VariableDeclarationKind,\n VariableDeclarationStructure,\n OptionalKind,\n InterfaceDeclarationStructure,\n ExportDeclarationStructure,\n} from 'ts-morph';\n\nconst defaultPathToTs = __dirname + '/client/';\n\ninterface WriteFileProps extends StatementedNodeStructure {\n filename: string;\n variables?: OptionalKind<VariableDeclarationStructure>[];\n interfaces?: OptionalKind<InterfaceDeclarationStructure>[];\n exports?: OptionalKind<ExportDeclarationStructure>[];\n pathToClient?: string;\n}\n\nexport const writeTsFile = async (props: WriteFileProps): Promise<any> => {\n const {filename, variables, interfaces, exports, pathToClient = defaultPathToTs} = props;\n const project = new Project({\n tsConfigFilePath: `${pathToClient}/tsconfig.json`,\n skipAddingFilesFromTsConfig: true,\n });\n\n const sourceFile = project.createSourceFile(\n `${pathToClient}/${filename}.ts`,\n {},\n {overwrite: true}\n );\n\n if (variables) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const, // defaults to \"let\"\n isExported: true,\n declarations: variables,\n });\n }\n\n if (interfaces) {\n sourceFile.addInterfaces(interfaces);\n }\n\n if (exports) {\n sourceFile.addExportDeclarations(exports);\n }\n\n return await sourceFile.save();\n};\n"]}
@@ -1,8 +1,8 @@
1
- import { Collection } from 'couchbase';
2
- import CouchbaseConnection from '../connection';
3
- import { SchemaTypes } from '../utils';
4
- import { CustomQueryPagination } from '../search';
1
+ import { Collection, GetOptions, RemoveOptions, ReplaceOptions, UpsertOptions } from 'couchbase';
5
2
  import { AutomaticMethodOptions, AutomaticOutput } from '../automate';
3
+ import { CustomQueryPagination } from '../search';
4
+ import { SchemaTypes } from '../utils';
5
+ import CouchbaseConnection from '../connection';
6
6
  export interface AutoModelFields {
7
7
  id: string;
8
8
  createdAt: Date;
@@ -50,22 +50,22 @@ export declare class Model {
50
50
  /**
51
51
  * create
52
52
  */
53
- create<T>(data: T): Promise<T & AutoModelFields>;
53
+ create<T>(data: T, options?: UpsertOptions): Promise<T & AutoModelFields>;
54
54
  /**
55
55
  * findById
56
56
  */
57
- findById(id: string): Promise<any & AutoModelFields>;
57
+ findById(id: string, options?: GetOptions): Promise<any & AutoModelFields>;
58
58
  /**
59
59
  * update
60
60
  */
61
- updateById<T>(id: string, data: T): Promise<T>;
61
+ updateById<T>(id: string, data: T, options?: ReplaceOptions): Promise<T>;
62
62
  /**
63
63
  * save
64
64
  */
65
65
  save<T>(data: T & {
66
66
  id: string;
67
- }): Promise<T>;
68
- delete(id: string): Promise<boolean>;
67
+ }, options?: ReplaceOptions): Promise<T>;
68
+ delete(id: string, options?: RemoveOptions): Promise<boolean>;
69
69
  /**
70
70
  * Pagination
71
71
  *
@@ -51,12 +51,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.Model = void 0;
54
+ var automate_1 = require("../automate");
55
+ var search_1 = require("../search");
56
+ var utils_1 = require("../utils");
54
57
  var connection_1 = __importDefault(require("../connection"));
55
58
  var pagination_1 = require("../pagination");
56
59
  var uuid_1 = require("../uuid");
57
- var utils_1 = require("../utils");
58
- var search_1 = require("../search");
59
- var automate_1 = require("../automate");
60
60
  var Model = /** @class */ (function () {
61
61
  function Model(name, options) {
62
62
  this.scope = '_default';
@@ -116,7 +116,7 @@ var Model = /** @class */ (function () {
116
116
  /**
117
117
  * create
118
118
  */
119
- Model.prototype.create = function (data) {
119
+ Model.prototype.create = function (data, options) {
120
120
  return __awaiter(this, void 0, void 0, function () {
121
121
  var id, createdData, error_1;
122
122
  return __generator(this, function (_a) {
@@ -128,7 +128,7 @@ var Model = /** @class */ (function () {
128
128
  _a.label = 1;
129
129
  case 1:
130
130
  _a.trys.push([1, 3, , 4]);
131
- return [4 /*yield*/, this.collection.upsert(createdData.id, createdData)];
131
+ return [4 /*yield*/, this.collection.upsert(createdData.id, createdData, options)];
132
132
  case 2:
133
133
  _a.sent();
134
134
  return [2 /*return*/, (0, utils_1.parseSchema)(this.schema, createdData)];
@@ -143,7 +143,7 @@ var Model = /** @class */ (function () {
143
143
  /**
144
144
  * findById
145
145
  */
146
- Model.prototype.findById = function (id) {
146
+ Model.prototype.findById = function (id, options) {
147
147
  return __awaiter(this, void 0, void 0, function () {
148
148
  var data, error_2;
149
149
  return __generator(this, function (_a) {
@@ -153,7 +153,7 @@ var Model = /** @class */ (function () {
153
153
  _a.label = 1;
154
154
  case 1:
155
155
  _a.trys.push([1, 3, , 4]);
156
- return [4 /*yield*/, this.collection.get(id)];
156
+ return [4 /*yield*/, this.collection.get(id, options)];
157
157
  case 2:
158
158
  data = _a.sent();
159
159
  return [2 /*return*/, (0, utils_1.parseSchema)(this.schema, data.content)];
@@ -168,7 +168,7 @@ var Model = /** @class */ (function () {
168
168
  /**
169
169
  * update
170
170
  */
171
- Model.prototype.updateById = function (id, data) {
171
+ Model.prototype.updateById = function (id, data, options) {
172
172
  return __awaiter(this, void 0, void 0, function () {
173
173
  var updatedDocument, error_3;
174
174
  return __generator(this, function (_a) {
@@ -179,7 +179,7 @@ var Model = /** @class */ (function () {
179
179
  _a.label = 1;
180
180
  case 1:
181
181
  _a.trys.push([1, 3, , 4]);
182
- return [4 /*yield*/, this.collection.replace(id, updatedDocument)];
182
+ return [4 /*yield*/, this.collection.replace(id, updatedDocument, options)];
183
183
  case 2:
184
184
  _a.sent();
185
185
  return [2 /*return*/, (0, utils_1.parseSchema)(this.schema, updatedDocument)];
@@ -194,7 +194,7 @@ var Model = /** @class */ (function () {
194
194
  /**
195
195
  * save
196
196
  */
197
- Model.prototype.save = function (data) {
197
+ Model.prototype.save = function (data, options) {
198
198
  return __awaiter(this, void 0, void 0, function () {
199
199
  var id, updatedDocument, error_4;
200
200
  return __generator(this, function (_a) {
@@ -209,7 +209,7 @@ var Model = /** @class */ (function () {
209
209
  if (!id) {
210
210
  throw new Error('document must have id');
211
211
  }
212
- return [4 /*yield*/, this.collection.replace(id, updatedDocument)];
212
+ return [4 /*yield*/, this.collection.replace(id, updatedDocument, options)];
213
213
  case 2:
214
214
  _a.sent();
215
215
  return [2 /*return*/, (0, utils_1.parseSchema)(this.schema, updatedDocument)];
@@ -222,7 +222,7 @@ var Model = /** @class */ (function () {
222
222
  });
223
223
  });
224
224
  };
225
- Model.prototype.delete = function (id) {
225
+ Model.prototype.delete = function (id, options) {
226
226
  return __awaiter(this, void 0, void 0, function () {
227
227
  var error_5;
228
228
  return __generator(this, function (_a) {
@@ -232,7 +232,7 @@ var Model = /** @class */ (function () {
232
232
  _a.label = 1;
233
233
  case 1:
234
234
  _a.trys.push([1, 3, , 4]);
235
- return [4 /*yield*/, this.collection.remove(id)];
235
+ return [4 /*yield*/, this.collection.remove(id, options)];
236
236
  case 2:
237
237
  _a.sent();
238
238
  return [2 /*return*/, true];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {Collection} from 'couchbase';\n\nimport CouchbaseConnection from '../connection';\nimport {Pagination} from '../pagination';\nimport {generateUUID} from '../uuid';\nimport {parseSchema, SchemaTypes} from '../utils';\nimport {CustomQuery, CustomQueryPagination} from '../search';\nimport {automateImplementation, AutomaticMethodOptions, AutomaticOutput} from '../automate';\n\nexport interface AutoModelFields {\n id: string;\n createdAt: Date;\n updatedAt?: Date;\n deleted?: Date;\n _type: string; // type for models/collections\n _scope: string; // scope for collections\n}\n\ninterface ModalOptions {\n scope?: string;\n schema?: Record<string, SchemaTypes>;\n graphqlType?: any;\n}\n\nexport class Model {\n collection: Collection;\n collectionName: string;\n scope = '_default';\n schema: Record<string, SchemaTypes> = {\n createdAt: 'date',\n updatedAt: 'date',\n };\n graphqlType = null;\n\n constructor(name: string, options?: ModalOptions) {\n // this.collection = CouchbaseConnection.Instance.getCollection();\n this.collectionName = name;\n if (options) {\n this.graphqlType = (options && options.graphqlType) || null;\n this.scope = (options && options.scope) || '_default';\n this.schema = {\n ...((options && options.schema) || {}),\n createdAt: 'date',\n updatedAt: 'date',\n };\n }\n }\n\n /**\n * Set setGraphqlType\n * setGraphqlType\n */\n public setGraphqlType(gqlType: any): Model {\n this.graphqlType = gqlType;\n return this;\n }\n\n /**\n * Refresh and get default collection from CouchbaseConnection\n * Because CouchbaseConnection is a singleton, sometimes it might be undefined depending when model was created\n * So we have to call it from all model methods\n * to avoid error `Cannot read property 'defaultCollection' of null`\n */\n public fresh(): void {\n // if couchbase connection has been init\n if (CouchbaseConnection.Instance.bucketName) {\n this.collection = CouchbaseConnection.Instance.getCollection();\n }\n }\n\n /** Get this collection\n * getCollection\n */\n public getBucketName(): string {\n return CouchbaseConnection.Instance?.getBucket();\n }\n\n /** Get this collection\n * getCollection\n */\n public couchbaseConnection(): CouchbaseConnection {\n return CouchbaseConnection.Instance;\n }\n\n /** Get this collection\n * getCollection\n */\n public getCollection(): Collection {\n this.fresh();\n return this.collection;\n }\n\n /**\n * create\n */\n public async create<T>(data: T): Promise<T & AutoModelFields> {\n this.fresh();\n const id = generateUUID();\n const createdData = {\n id, // let id be override\n ...data,\n createdAt: new Date(),\n updatedAt: new Date(), // same as created at\n _type: this.collectionName,\n _scope: this.scope,\n };\n\n try {\n await this.collection.upsert(createdData.id, createdData);\n return parseSchema(this.schema, createdData);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * findById\n */\n public async findById(id: string): Promise<any & AutoModelFields> {\n this.fresh();\n try {\n const data = await this.collection.get(id);\n return parseSchema(this.schema, data.content);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * update\n */\n public async updateById<T>(id: string, data: T): Promise<T> {\n this.fresh();\n const updatedDocument = {\n ...data,\n id,\n updatedAt: new Date(),\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n try {\n await this.collection.replace(id, updatedDocument);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * save\n */\n public async save<T>(data: T & {id: string}): Promise<T> {\n this.fresh();\n\n const id = data && data.id;\n\n const updatedDocument = {\n ...data,\n id, // id's must match\n updatedAt: new Date(),\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n try {\n if (!id) {\n throw new Error('document must have id');\n }\n await this.collection.replace(id, updatedDocument);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n public async delete(id: string): Promise<boolean> {\n this.fresh();\n try {\n await this.collection.remove(id);\n return true;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Pagination\n * \n select = ['id', 'createdAt']\n where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\n public async pagination({\n select,\n where,\n orderBy,\n limit,\n page,\n customQuery = {},\n }: {\n select?: any[] | string;\n where?: any;\n orderBy?: any;\n limit?: number;\n page?: number;\n customQuery?: any; // can be $and or any other valid quries\n }): Promise<any[]> {\n this.fresh(); // refresh\n // Where begins here\n let whereEx = {_type: {$eq: this.collectionName}};\n\n if (where) {\n whereEx = {\n ...whereEx,\n ...where,\n };\n }\n\n const bucketName = CouchbaseConnection.Instance.bucketName;\n\n const rows = await Pagination({\n bucketName,\n select,\n where: {where: whereEx, ...customQuery},\n limit,\n page,\n orderBy,\n });\n\n return rows.map((r) => parseSchema(this.schema, r));\n }\n\n /**\n * Run a custom query with model parsing\n * @param { select, query }\n * @returns\n */\n public async customQuery<T>({\n params,\n limit,\n query,\n }: {\n params: any;\n limit: number;\n query: string;\n }): Promise<[T[], CustomQueryPagination]> {\n this.fresh(); // refresh\n // Where begins here\n\n const response = await CustomQuery<T>({\n limit,\n params,\n query,\n });\n\n return response;\n }\n\n public parse<T>(data: T): T {\n this.fresh(); // refresh\n return parseSchema(this.schema, data);\n }\n\n /**\n *\n * @param args AutomaticModelOptions\n * @returns\n */\n public automate(args?: Partial<AutomaticMethodOptions>): AutomaticOutput {\n this.fresh(); // refresh\n return automateImplementation(this.graphqlType, {model: this, ...args});\n }\n}\n\nexport default Model;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {Collection, GetOptions, RemoveOptions, ReplaceOptions, UpsertOptions} from 'couchbase';\n\nimport {AutomaticMethodOptions, AutomaticOutput, automateImplementation} from '../automate';\nimport {CustomQuery, CustomQueryPagination} from '../search';\nimport {SchemaTypes, parseSchema} from '../utils';\nimport CouchbaseConnection from '../connection';\nimport {Pagination} from '../pagination';\nimport {generateUUID} from '../uuid';\n\nexport interface AutoModelFields {\n id: string;\n createdAt: Date;\n updatedAt?: Date;\n deleted?: Date;\n _type: string; // type for models/collections\n _scope: string; // scope for collections\n}\n\ninterface ModalOptions {\n scope?: string;\n schema?: Record<string, SchemaTypes>;\n graphqlType?: any;\n}\n\nexport class Model {\n collection: Collection;\n collectionName: string;\n scope = '_default';\n schema: Record<string, SchemaTypes> = {\n createdAt: 'date',\n updatedAt: 'date',\n };\n graphqlType = null;\n\n constructor(name: string, options?: ModalOptions) {\n // this.collection = CouchbaseConnection.Instance.getCollection();\n this.collectionName = name;\n if (options) {\n this.graphqlType = (options && options.graphqlType) || null;\n this.scope = (options && options.scope) || '_default';\n this.schema = {\n ...((options && options.schema) || {}),\n createdAt: 'date',\n updatedAt: 'date',\n };\n }\n }\n\n /**\n * Set setGraphqlType\n * setGraphqlType\n */\n public setGraphqlType(gqlType: any): Model {\n this.graphqlType = gqlType;\n return this;\n }\n\n /**\n * Refresh and get default collection from CouchbaseConnection\n * Because CouchbaseConnection is a singleton, sometimes it might be undefined depending when model was created\n * So we have to call it from all model methods\n * to avoid error `Cannot read property 'defaultCollection' of null`\n */\n public fresh(): void {\n // if couchbase connection has been init\n if (CouchbaseConnection.Instance.bucketName) {\n this.collection = CouchbaseConnection.Instance.getCollection();\n }\n }\n\n /** Get this collection\n * getCollection\n */\n public getBucketName(): string {\n return CouchbaseConnection.Instance?.getBucket();\n }\n\n /** Get this collection\n * getCollection\n */\n public couchbaseConnection(): CouchbaseConnection {\n return CouchbaseConnection.Instance;\n }\n\n /** Get this collection\n * getCollection\n */\n public getCollection(): Collection {\n this.fresh();\n return this.collection;\n }\n\n /**\n * create\n */\n public async create<T>(data: T, options?: UpsertOptions): Promise<T & AutoModelFields> {\n this.fresh();\n const id = generateUUID();\n const createdData = {\n id, // let id be override\n ...data,\n createdAt: new Date(),\n updatedAt: new Date(), // same as created at\n _type: this.collectionName,\n _scope: this.scope,\n };\n\n try {\n await this.collection.upsert(createdData.id, createdData, options);\n return parseSchema(this.schema, createdData);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * findById\n */\n public async findById(id: string, options?: GetOptions): Promise<any & AutoModelFields> {\n this.fresh();\n try {\n const data = await this.collection.get(id, options);\n return parseSchema(this.schema, data.content);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * update\n */\n public async updateById<T>(id: string, data: T, options?: ReplaceOptions): Promise<T> {\n this.fresh();\n const updatedDocument = {\n ...data,\n id,\n updatedAt: new Date(),\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n try {\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * save\n */\n public async save<T>(data: T & {id: string}, options?: ReplaceOptions): Promise<T> {\n this.fresh();\n\n const id = data && data.id;\n\n const updatedDocument = {\n ...data,\n id, // id's must match\n updatedAt: new Date(),\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n try {\n if (!id) {\n throw new Error('document must have id');\n }\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n public async delete(id: string, options?: RemoveOptions): Promise<boolean> {\n this.fresh();\n try {\n await this.collection.remove(id, options);\n return true;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Pagination\n * \n select = ['id', 'createdAt']\n where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\n public async pagination({\n select,\n where,\n orderBy,\n limit,\n page,\n customQuery = {},\n }: {\n select?: any[] | string;\n where?: any;\n orderBy?: any;\n limit?: number;\n page?: number;\n customQuery?: any; // can be $and or any other valid quries\n }): Promise<any[]> {\n this.fresh(); // refresh\n // Where begins here\n let whereEx = {_type: {$eq: this.collectionName}};\n\n if (where) {\n whereEx = {\n ...whereEx,\n ...where,\n };\n }\n\n const bucketName = CouchbaseConnection.Instance.bucketName;\n\n const rows = await Pagination({\n bucketName,\n select,\n where: {where: whereEx, ...customQuery},\n limit,\n page,\n orderBy,\n });\n\n return rows.map((r) => parseSchema(this.schema, r));\n }\n\n /**\n * Run a custom query with model parsing\n * @param { select, query }\n * @returns\n */\n public async customQuery<T>({\n params,\n limit,\n query,\n }: {\n params: any;\n limit: number;\n query: string;\n }): Promise<[T[], CustomQueryPagination]> {\n this.fresh(); // refresh\n // Where begins here\n\n const response = await CustomQuery<T>({\n limit,\n params,\n query,\n });\n\n return response;\n }\n\n public parse<T>(data: T): T {\n this.fresh(); // refresh\n return parseSchema(this.schema, data);\n }\n\n /**\n *\n * @param args AutomaticModelOptions\n * @returns\n */\n public automate(args?: Partial<AutomaticMethodOptions>): AutomaticOutput {\n this.fresh(); // refresh\n return automateImplementation(this.graphqlType, {model: this, ...args});\n }\n}\n\nexport default Model;\n"]}
@@ -46,7 +46,7 @@ exports.InWithinOperatorExceptions = InWithinOperatorExceptions;
46
46
  var MultipleQueryTypesException = /** @class */ (function (_super) {
47
47
  __extends(MultipleQueryTypesException, _super);
48
48
  function MultipleQueryTypesException(type1, type2) {
49
- return _super.call(this, "Cannot combine multiple query types (ex: " + type1 + " with " + type2) || this;
49
+ return _super.call(this, "Cannot combine multiple query types (ex: ".concat(type1, " with ").concat(type2)) || this;
50
50
  }
51
51
  return MultipleQueryTypesException;
52
52
  }(Error));
@@ -55,7 +55,7 @@ var QueryOperatorNotFoundException = /** @class */ (function (_super) {
55
55
  __extends(QueryOperatorNotFoundException, _super);
56
56
  function QueryOperatorNotFoundException(operator) {
57
57
  var _this = _super.call(this) || this;
58
- _this.message = "Operator not found: " + operator;
58
+ _this.message = "Operator not found: ".concat(operator);
59
59
  return _this;
60
60
  }
61
61
  return QueryOperatorNotFoundException;
@@ -74,7 +74,7 @@ exports.QueryGroupByParamsException = QueryGroupByParamsException;
74
74
  var IndexParamsOnExceptions = /** @class */ (function (_super) {
75
75
  __extends(IndexParamsOnExceptions, _super);
76
76
  function IndexParamsOnExceptions(clause) {
77
- return _super.call(this, "The ON parameter can only be applied in the following clauses: " + JSON.stringify(clause)) || this;
77
+ return _super.call(this, "The ON parameter can only be applied in the following clauses: ".concat(JSON.stringify(clause))) || this;
78
78
  }
79
79
  return IndexParamsOnExceptions;
80
80
  }(Error));
@@ -82,7 +82,7 @@ exports.IndexParamsOnExceptions = IndexParamsOnExceptions;
82
82
  var IndexParamsUsingGSIExceptions = /** @class */ (function (_super) {
83
83
  __extends(IndexParamsUsingGSIExceptions, _super);
84
84
  function IndexParamsUsingGSIExceptions(clause) {
85
- return _super.call(this, "The USING GSI parameter can only be applied in the following clauses: " + JSON.stringify(clause)) || this;
85
+ return _super.call(this, "The USING GSI parameter can only be applied in the following clauses: ".concat(JSON.stringify(clause))) || this;
86
86
  }
87
87
  return IndexParamsUsingGSIExceptions;
88
88
  }(Error));
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/query/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAA2C,yCAAK;IAC5C;QACI,sBAAsB;eACtB,kBAAM,sDAAsD,CAAC;IACjE,CAAC;IACL,4BAAC;AAAD,CAAC,AALD,CAA2C,KAAK,GAK/C;AALY,sDAAqB;AAOlC;IAA0C,wCAAK;IAC3C;eACI,kBAAM,qDAAqD,CAAC;IAChE,CAAC;IACL,2BAAC;AAAD,CAAC,AAJD,CAA0C,KAAK,GAI9C;AAJY,oDAAoB;AAMjC;IAAgD,8CAAoB;IAChE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,uGAAuG,CAAC;;IAC3H,CAAC;IACL,iCAAC;AAAD,CAAC,AALD,CAAgD,oBAAoB,GAKnE;AALY,gEAA0B;AAMvC;IAAiD,+CAAK;IAClD,qCAAY,KAAa,EAAE,KAAa;eACpC,kBAAM,8CAA4C,KAAK,cAAS,KAAO,CAAC;IAC5E,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,KAAK,GAIrD;AAJY,kEAA2B;AAMxC;IAAoD,kDAAoB;IACpE,wCAAY,QAAgB;QAA5B,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,yBAAuB,QAAU,CAAC;;IACrD,CAAC;IACL,qCAAC;AAAD,CAAC,AALD,CAAoD,oBAAoB,GAKvE;AALY,wEAA8B;AAO3C;IAAiD,+CAAoB;IACjE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,2EAA2E,CAAC;;IAC/F,CAAC;IACL,kCAAC;AAAD,CAAC,AALD,CAAiD,oBAAoB,GAKpE;AALY,kEAA2B;AAOxC;IAA6C,2CAAK;IAC9C,iCAAY,MAAgB;eACxB,kBACI,oEAAkE,IAAI,CAAC,SAAS,CAC5E,MAAM,CACP,CACN;IACL,CAAC;IACL,8BAAC;AAAD,CAAC,AARD,CAA6C,KAAK,GAQjD;AARY,0DAAuB;AAUpC;IAAmD,iDAAK;IACpD,uCAAY,MAAgB;eACxB,kBACI,2EAAyE,IAAI,CAAC,SAAS,CACnF,MAAM,CACP,CACN;IACL,CAAC;IACL,oCAAC;AAAD,CAAC,AARD,CAAmD,KAAK,GAQvD;AARY,sEAA6B","sourcesContent":["export class SelectClauseException extends Error {\n constructor() {\n // todo update message\n super('The SELECT clause does not have the proper structure');\n }\n}\n\nexport class WhereClauseException extends Error {\n constructor() {\n super('The WHERE clause does not have the proper structure');\n }\n}\n\nexport class InWithinOperatorExceptions extends WhereClauseException {\n constructor() {\n super();\n this.message = `The search_expr, target_expr and operator (IN | WITHIN) values are required for collection operators.`;\n }\n}\nexport class MultipleQueryTypesException extends Error {\n constructor(type1: string, type2: string) {\n super(`Cannot combine multiple query types (ex: ${type1} with ${type2}`);\n }\n}\n\nexport class QueryOperatorNotFoundException extends WhereClauseException {\n constructor(operator: string) {\n super();\n this.message = `Operator not found: ${operator}`;\n }\n}\n\nexport class QueryGroupByParamsException extends WhereClauseException {\n constructor() {\n super();\n this.message = `The GROUP BY clause must be defined to use the LETTING and HAVING clauses`;\n }\n}\n\nexport class IndexParamsOnExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The ON parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n\nexport class IndexParamsUsingGSIExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The USING GSI parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n"]}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/query/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAA2C,yCAAK;IAC5C;QACI,sBAAsB;eACtB,kBAAM,sDAAsD,CAAC;IACjE,CAAC;IACL,4BAAC;AAAD,CAAC,AALD,CAA2C,KAAK,GAK/C;AALY,sDAAqB;AAOlC;IAA0C,wCAAK;IAC3C;eACI,kBAAM,qDAAqD,CAAC;IAChE,CAAC;IACL,2BAAC;AAAD,CAAC,AAJD,CAA0C,KAAK,GAI9C;AAJY,oDAAoB;AAMjC;IAAgD,8CAAoB;IAChE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,uGAAuG,CAAC;;IAC3H,CAAC;IACL,iCAAC;AAAD,CAAC,AALD,CAAgD,oBAAoB,GAKnE;AALY,gEAA0B;AAMvC;IAAiD,+CAAK;IAClD,qCAAY,KAAa,EAAE,KAAa;eACpC,kBAAM,mDAA4C,KAAK,mBAAS,KAAK,CAAE,CAAC;IAC5E,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,KAAK,GAIrD;AAJY,kEAA2B;AAMxC;IAAoD,kDAAoB;IACpE,wCAAY,QAAgB;QAA5B,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,8BAAuB,QAAQ,CAAE,CAAC;;IACrD,CAAC;IACL,qCAAC;AAAD,CAAC,AALD,CAAoD,oBAAoB,GAKvE;AALY,wEAA8B;AAO3C;IAAiD,+CAAoB;IACjE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,2EAA2E,CAAC;;IAC/F,CAAC;IACL,kCAAC;AAAD,CAAC,AALD,CAAiD,oBAAoB,GAKpE;AALY,kEAA2B;AAOxC;IAA6C,2CAAK;IAC9C,iCAAY,MAAgB;eACxB,kBACI,yEAAkE,IAAI,CAAC,SAAS,CAC5E,MAAM,CACT,CAAE,CACN;IACL,CAAC;IACL,8BAAC;AAAD,CAAC,AARD,CAA6C,KAAK,GAQjD;AARY,0DAAuB;AAUpC;IAAmD,iDAAK;IACpD,uCAAY,MAAgB;eACxB,kBACI,gFAAyE,IAAI,CAAC,SAAS,CACnF,MAAM,CACT,CAAE,CACN;IACL,CAAC;IACL,oCAAC;AAAD,CAAC,AARD,CAAmD,KAAK,GAQvD;AARY,sEAA6B","sourcesContent":["export class SelectClauseException extends Error {\n constructor() {\n // todo update message\n super('The SELECT clause does not have the proper structure');\n }\n}\n\nexport class WhereClauseException extends Error {\n constructor() {\n super('The WHERE clause does not have the proper structure');\n }\n}\n\nexport class InWithinOperatorExceptions extends WhereClauseException {\n constructor() {\n super();\n this.message = `The search_expr, target_expr and operator (IN | WITHIN) values are required for collection operators.`;\n }\n}\nexport class MultipleQueryTypesException extends Error {\n constructor(type1: string, type2: string) {\n super(`Cannot combine multiple query types (ex: ${type1} with ${type2}`);\n }\n}\n\nexport class QueryOperatorNotFoundException extends WhereClauseException {\n constructor(operator: string) {\n super();\n this.message = `Operator not found: ${operator}`;\n }\n}\n\nexport class QueryGroupByParamsException extends WhereClauseException {\n constructor() {\n super();\n this.message = `The GROUP BY clause must be defined to use the LETTING and HAVING clauses`;\n }\n}\n\nexport class IndexParamsOnExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The ON parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n\nexport class IndexParamsUsingGSIExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The USING GSI parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n"]}