@infrab4a/connect 3.6.0-beta.0 → 3.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/bundles/infrab4a-connect.umd.js +519 -18
  2. package/bundles/infrab4a-connect.umd.js.map +1 -1
  3. package/domain/catalog/models/category-filter.d.ts +9 -0
  4. package/domain/catalog/models/category.d.ts +3 -2
  5. package/domain/catalog/models/filter-option.d.ts +10 -0
  6. package/domain/catalog/models/filter.d.ts +13 -0
  7. package/domain/catalog/models/index.d.ts +3 -0
  8. package/domain/catalog/models/product.d.ts +1 -0
  9. package/domain/catalog/models/types/index.d.ts +0 -1
  10. package/domain/catalog/repositories/category-filter.repository.d.ts +5 -0
  11. package/domain/catalog/repositories/filter-option.repository.d.ts +4 -0
  12. package/domain/catalog/repositories/filter.repository.d.ts +4 -0
  13. package/domain/catalog/repositories/index.d.ts +3 -0
  14. package/esm2015/domain/catalog/models/category-filter.js +10 -0
  15. package/esm2015/domain/catalog/models/category.js +8 -1
  16. package/esm2015/domain/catalog/models/filter-option.js +10 -0
  17. package/esm2015/domain/catalog/models/filter.js +10 -0
  18. package/esm2015/domain/catalog/models/index.js +4 -1
  19. package/esm2015/domain/catalog/models/product.js +1 -1
  20. package/esm2015/domain/catalog/models/types/index.js +1 -2
  21. package/esm2015/domain/catalog/repositories/category-filter.repository.js +2 -0
  22. package/esm2015/domain/catalog/repositories/filter-option.repository.js +2 -0
  23. package/esm2015/domain/catalog/repositories/filter.repository.js +2 -0
  24. package/esm2015/domain/catalog/repositories/index.js +4 -1
  25. package/esm2015/infra/elasticsearch/indexes/products-index.js +3 -2
  26. package/esm2015/infra/hasura-graphql/mixins/helpers/attribute-option.helper.js +2 -2
  27. package/esm2015/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.js +24 -0
  28. package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +84 -4
  29. package/esm2015/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.js +123 -0
  30. package/esm2015/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.js +21 -0
  31. package/esm2015/infra/hasura-graphql/repositories/catalog/index.js +4 -1
  32. package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +2 -1
  33. package/esm2015/infra/hasura-graphql/types/hasura-graphql-fields.type.js +1 -1
  34. package/fesm2015/infrab4a-connect.js +277 -6
  35. package/fesm2015/infrab4a-connect.js.map +1 -1
  36. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +11 -0
  37. package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +4 -1
  38. package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -0
  39. package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -0
  40. package/infra/hasura-graphql/repositories/catalog/index.d.ts +3 -0
  41. package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/domain/catalog/models/types/category-filter.type.d.ts +0 -4
  44. package/esm2015/domain/catalog/models/types/category-filter.type.js +0 -2
@@ -289,7 +289,7 @@
289
289
  Status["CANCELLED"] = "Cancelado";
290
290
  })(exports.Status || (exports.Status = {}));
291
291
 
292
- /*! *****************************************************************************
292
+ /******************************************************************************
293
293
  Copyright (c) Microsoft Corporation.
294
294
 
295
295
  Permission to use, copy, modify, and/or distribute this software for any
@@ -356,6 +356,64 @@
356
356
  function __param(paramIndex, decorator) {
357
357
  return function (target, key) { decorator(target, key, paramIndex); };
358
358
  }
359
+ function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
360
+ function accept(f) { if (f !== void 0 && typeof f !== "function")
361
+ throw new TypeError("Function expected"); return f; }
362
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
363
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
364
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
365
+ var _, done = false;
366
+ for (var i = decorators.length - 1; i >= 0; i--) {
367
+ var context = {};
368
+ for (var p in contextIn)
369
+ context[p] = p === "access" ? {} : contextIn[p];
370
+ for (var p in contextIn.access)
371
+ context.access[p] = contextIn.access[p];
372
+ context.addInitializer = function (f) { if (done)
373
+ throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
374
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
375
+ if (kind === "accessor") {
376
+ if (result === void 0)
377
+ continue;
378
+ if (result === null || typeof result !== "object")
379
+ throw new TypeError("Object expected");
380
+ if (_ = accept(result.get))
381
+ descriptor.get = _;
382
+ if (_ = accept(result.set))
383
+ descriptor.set = _;
384
+ if (_ = accept(result.init))
385
+ initializers.push(_);
386
+ }
387
+ else if (_ = accept(result)) {
388
+ if (kind === "field")
389
+ initializers.push(_);
390
+ else
391
+ descriptor[key] = _;
392
+ }
393
+ }
394
+ if (target)
395
+ Object.defineProperty(target, contextIn.name, descriptor);
396
+ done = true;
397
+ }
398
+ ;
399
+ function __runInitializers(thisArg, initializers, value) {
400
+ var useValue = arguments.length > 2;
401
+ for (var i = 0; i < initializers.length; i++) {
402
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
403
+ }
404
+ return useValue ? value : void 0;
405
+ }
406
+ ;
407
+ function __propKey(x) {
408
+ return typeof x === "symbol" ? x : "".concat(x);
409
+ }
410
+ ;
411
+ function __setFunctionName(f, name, prefix) {
412
+ if (typeof name === "symbol")
413
+ name = name.description ? "[".concat(name.description, "]") : "";
414
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
415
+ }
416
+ ;
359
417
  function __metadata(metadataKey, metadataValue) {
360
418
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
361
419
  return Reflect.metadata(metadataKey, metadataValue);
@@ -387,7 +445,7 @@
387
445
  function step(op) {
388
446
  if (f)
389
447
  throw new TypeError("Generator is already executing.");
390
- while (_)
448
+ while (g && (g = 0, op[0] && (_ = 0)), _)
391
449
  try {
392
450
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
393
451
  return t;
@@ -451,7 +509,11 @@
451
509
  var __createBinding = Object.create ? (function (o, m, k, k2) {
452
510
  if (k2 === undefined)
453
511
  k2 = k;
454
- Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
512
+ var desc = Object.getOwnPropertyDescriptor(m, k);
513
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
514
+ desc = { enumerable: true, get: function () { return m[k]; } };
515
+ }
516
+ Object.defineProperty(o, k2, desc);
455
517
  }) : (function (o, m, k, k2) {
456
518
  if (k2 === undefined)
457
519
  k2 = k;
@@ -551,7 +613,7 @@
551
613
  function __asyncDelegator(o) {
552
614
  var i, p;
553
615
  return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
554
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
616
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
555
617
  }
556
618
  function __asyncValues(o) {
557
619
  if (!Symbol.asyncIterator)
@@ -605,6 +667,11 @@
605
667
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
606
668
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
607
669
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
670
+ }
671
+ function __classPrivateFieldIn(state, receiver) {
672
+ if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function"))
673
+ throw new TypeError("Cannot use 'in' operator on non-object");
674
+ return typeof state === "function" ? receiver === state : state.has(receiver);
608
675
  }
609
676
 
610
677
  var Edition = /** @class */ (function (_super) {
@@ -1251,6 +1318,24 @@
1251
1318
  return RecoveryPassword;
1252
1319
  }());
1253
1320
 
1321
+ var Filter = /** @class */ (function (_super) {
1322
+ __extends(Filter, _super);
1323
+ function Filter() {
1324
+ return _super !== null && _super.apply(this, arguments) || this;
1325
+ }
1326
+ Filter.prototype.identifierFields = function () {
1327
+ return ['id'];
1328
+ };
1329
+ Object.defineProperty(Filter, "identifiersFields", {
1330
+ get: function () {
1331
+ return ['id'];
1332
+ },
1333
+ enumerable: false,
1334
+ configurable: true
1335
+ });
1336
+ return Filter;
1337
+ }(BaseModel));
1338
+
1254
1339
  var Category = /** @class */ (function (_super) {
1255
1340
  __extends(Category, _super);
1256
1341
  function Category() {
@@ -1267,6 +1352,28 @@
1267
1352
  configurable: true
1268
1353
  });
1269
1354
  return Category;
1355
+ }(BaseModel));
1356
+ __decorate([
1357
+ classTransformer.Type(function () { return Filter; }),
1358
+ __metadata("design:type", Array)
1359
+ ], Category.prototype, "filters", void 0);
1360
+
1361
+ var CategoryFilter = /** @class */ (function (_super) {
1362
+ __extends(CategoryFilter, _super);
1363
+ function CategoryFilter() {
1364
+ return _super !== null && _super.apply(this, arguments) || this;
1365
+ }
1366
+ Object.defineProperty(CategoryFilter, "identifiersFields", {
1367
+ // identifierFields(): NonFunctionPropertyNames<CategoryFilter>[] {
1368
+ // return ['id']
1369
+ // }
1370
+ get: function () {
1371
+ return ['id', 'filterId', 'categoryId'];
1372
+ },
1373
+ enumerable: false,
1374
+ configurable: true
1375
+ });
1376
+ return CategoryFilter;
1270
1377
  }(BaseModel));
1271
1378
 
1272
1379
  exports.GenderDestination = void 0;
@@ -1284,6 +1391,24 @@
1284
1391
  Shops["ALL"] = "ALL";
1285
1392
  })(exports.Shops || (exports.Shops = {}));
1286
1393
 
1394
+ var FilterOption = /** @class */ (function (_super) {
1395
+ __extends(FilterOption, _super);
1396
+ function FilterOption() {
1397
+ return _super !== null && _super.apply(this, arguments) || this;
1398
+ }
1399
+ FilterOption.prototype.identifierFields = function () {
1400
+ return ['id'];
1401
+ };
1402
+ Object.defineProperty(FilterOption, "identifiersFields", {
1403
+ get: function () {
1404
+ return ['id'];
1405
+ },
1406
+ enumerable: false,
1407
+ configurable: true
1408
+ });
1409
+ return FilterOption;
1410
+ }(BaseModel));
1411
+
1287
1412
  var Product = /** @class */ (function (_super) {
1288
1413
  __extends(Product, _super);
1289
1414
  function Product() {
@@ -1781,8 +1906,9 @@
1781
1906
  'stock',
1782
1907
  'weight',
1783
1908
  'tags',
1909
+ 'filters',
1784
1910
  'hasVariants',
1785
- 'type'
1911
+ 'type',
1786
1912
  ];
1787
1913
  return [4 /*yield*/, this.adapter.query('products/_search', Object.assign({ _source: fields, query: {
1788
1914
  bool: {
@@ -3034,7 +3160,7 @@
3034
3160
  }());
3035
3161
  AttributeOptionHelper.FindByAttribute = function (attributeName, fields) {
3036
3162
  if (fields.includes(attributeName))
3037
- return { columnName: attributeName.toString(), attributeName: attributeName };
3163
+ return { columnName: attributeName.toString(), attributeName: attributeName, to: function (value) { return value; }, from: function (value) { return value; } };
3038
3164
  var field = fields.find(function (columnOption) { return lodash.isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()); });
3039
3165
  var fieldOption = field === null || field === void 0 ? void 0 : field[attributeName.toString()];
3040
3166
  if (lodash.isNil(fieldOption))
@@ -3730,9 +3856,32 @@
3730
3856
  return VariantHasuraGraphQL;
3731
3857
  }(Variant));
3732
3858
 
3859
+ var CategoryFilterHasuraGraphQLRepository = /** @class */ (function (_super) {
3860
+ __extends(CategoryFilterHasuraGraphQLRepository, _super);
3861
+ function CategoryFilterHasuraGraphQLRepository(endpoint, authOptions) {
3862
+ return _super.call(this, {
3863
+ tableName: 'category_filter',
3864
+ model: CategoryFilter,
3865
+ endpoint: endpoint,
3866
+ authOptions: authOptions,
3867
+ fields: ['id', { filterId: { columnName: 'filter_id' } }, { categoryId: { columnName: 'category_id' } }],
3868
+ }) || this;
3869
+ }
3870
+ CategoryFilterHasuraGraphQLRepository.prototype.deleteByCategoryAndFilter = function (categoryId, filterId) {
3871
+ return this.mutation('delete_category_filter', ['affected_rows'], {
3872
+ where: {
3873
+ type: 'category_filter_bool_exp',
3874
+ required: true,
3875
+ value: { category_id: { _eq: categoryId }, filter_id: { _eq: filterId } },
3876
+ },
3877
+ });
3878
+ };
3879
+ return CategoryFilterHasuraGraphQLRepository;
3880
+ }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
3881
+
3733
3882
  var CategoryHasuraGraphQLRepository = /** @class */ (function (_super_1) {
3734
3883
  __extends(CategoryHasuraGraphQLRepository, _super_1);
3735
- function CategoryHasuraGraphQLRepository(endpoint, authOptions, productRepository) {
3884
+ function CategoryHasuraGraphQLRepository(endpoint, authOptions, productRepository, categoryFilterRepository) {
3736
3885
  var _this = _super_1.call(this, {
3737
3886
  tableName: 'category',
3738
3887
  model: Category,
@@ -3768,7 +3917,17 @@
3768
3917
  },
3769
3918
  },
3770
3919
  },
3771
- 'filters',
3920
+ {
3921
+ filters: {
3922
+ columnName: 'filters',
3923
+ foreignKeyColumn: { filter_id: 'id' },
3924
+ fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],
3925
+ bindPersistData: function (value) { return ({
3926
+ filters: { data: value.map(function (filter) { return ({ filter_id: filter.id }); }) },
3927
+ }); },
3928
+ from: function (filters) { return (filters === null || filters === void 0 ? void 0 : filters.map(function (filter) { return filter === null || filter === void 0 ? void 0 : filter.filter; })) || []; },
3929
+ },
3930
+ },
3772
3931
  { createdAt: { columnName: 'created_at' } },
3773
3932
  { updatedAt: { columnName: 'updated_at' } },
3774
3933
  {
@@ -3793,6 +3952,7 @@
3793
3952
  ],
3794
3953
  }) || this;
3795
3954
  _this.productRepository = productRepository;
3955
+ _this.categoryFilterRepository = categoryFilterRepository;
3796
3956
  return _this;
3797
3957
  }
3798
3958
  CategoryHasuraGraphQLRepository.prototype.create = function (params) {
@@ -3835,25 +3995,25 @@
3835
3995
  update: { get: function () { return _super_1.prototype.update; } }
3836
3996
  });
3837
3997
  return __awaiter(this, void 0, void 0, function () {
3838
- var products, checkId, metadata, data, plainData, id, category, _c, _d, _e, _f;
3839
- return __generator(this, function (_g) {
3840
- switch (_g.label) {
3998
+ var products, checkId, metadata, filters, data, plainData, id, category, _c, _d, _e, _f, _g, _h;
3999
+ return __generator(this, function (_j) {
4000
+ switch (_j.label) {
3841
4001
  case 0:
3842
- products = params.products, checkId = params.id, metadata = params.metadata, data = __rest(params, ["products", "id", "metadata"]);
4002
+ products = params.products, checkId = params.id, metadata = params.metadata, filters = params.filters, data = __rest(params, ["products", "id", "metadata", "filters"]);
3843
4003
  plainData = this.paramsToPlain({ id: checkId });
3844
4004
  return [4 /*yield*/, this.getId(plainData.id)];
3845
4005
  case 1:
3846
- id = _g.sent();
4006
+ id = _j.sent();
3847
4007
  return [4 /*yield*/, _super.update.call(this, Object.assign({ id: id }, data))];
3848
4008
  case 2:
3849
- category = _g.sent();
4009
+ category = _j.sent();
3850
4010
  _c = category;
3851
4011
  _d = products;
3852
4012
  if (!_d) return [3 /*break*/, 4];
3853
4013
  return [4 /*yield*/, this.updateProducts(+id, { products: products })];
3854
4014
  case 3:
3855
- _d = (_g.sent());
3856
- _g.label = 4;
4015
+ _d = (_j.sent());
4016
+ _j.label = 4;
3857
4017
  case 4:
3858
4018
  _c.products = _d;
3859
4019
  _e = category;
@@ -3861,10 +4021,19 @@
3861
4021
  if (!_f) return [3 /*break*/, 6];
3862
4022
  return [4 /*yield*/, this.updateMetadata(+id, { metadata: metadata })];
3863
4023
  case 5:
3864
- _f = (_g.sent());
3865
- _g.label = 6;
4024
+ _f = (_j.sent());
4025
+ _j.label = 6;
3866
4026
  case 6:
3867
4027
  _e.metadata = _f;
4028
+ _g = category;
4029
+ _h = filters;
4030
+ if (!_h) return [3 /*break*/, 8];
4031
+ return [4 /*yield*/, this.updateFilters(+id, { filters: filters })];
4032
+ case 7:
4033
+ _h = (_j.sent());
4034
+ _j.label = 8;
4035
+ case 8:
4036
+ _g.filters = _h;
3868
4037
  return [2 /*return*/, category];
3869
4038
  }
3870
4039
  });
@@ -4090,9 +4259,334 @@
4090
4259
  });
4091
4260
  });
4092
4261
  };
4262
+ CategoryHasuraGraphQLRepository.prototype.updateFilters = function (categoryId, _c) {
4263
+ var filters = _c.filters;
4264
+ return __awaiter(this, void 0, void 0, function () {
4265
+ var i, filtersList, i, hasFilter, newCategoryFilter, error_1, filtersList, i, hasFilter, newCategoryFilter, error_2;
4266
+ return __generator(this, function (_c) {
4267
+ switch (_c.label) {
4268
+ case 0:
4269
+ if (!('action' in filters && filters.action === 'remove' && filters.value.length)) return [3 /*break*/, 5];
4270
+ i = 0;
4271
+ _c.label = 1;
4272
+ case 1:
4273
+ if (!(i < filters.value.length)) return [3 /*break*/, 4];
4274
+ return [4 /*yield*/, this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id)];
4275
+ case 2:
4276
+ _c.sent();
4277
+ _c.label = 3;
4278
+ case 3:
4279
+ i++;
4280
+ return [3 /*break*/, 1];
4281
+ case 4: return [2 /*return*/, []];
4282
+ case 5:
4283
+ if (!('action' in filters && filters.action === 'merge' && filters.value.length)) return [3 /*break*/, 15];
4284
+ filtersList = [];
4285
+ i = 0;
4286
+ _c.label = 6;
4287
+ case 6:
4288
+ if (!(i < filters.value.length)) return [3 /*break*/, 14];
4289
+ _c.label = 7;
4290
+ case 7:
4291
+ _c.trys.push([7, 12, , 13]);
4292
+ return [4 /*yield*/, this.categoryFilterRepository
4293
+ .find({
4294
+ filters: {
4295
+ categoryId: categoryId,
4296
+ filterId: filters.value[i].id,
4297
+ },
4298
+ })
4299
+ .then(function (data) { return data.data.shift(); })];
4300
+ case 8:
4301
+ hasFilter = _c.sent();
4302
+ if (!hasFilter) return [3 /*break*/, 9];
4303
+ filtersList.push(hasFilter);
4304
+ return [3 /*break*/, 11];
4305
+ case 9: return [4 /*yield*/, this.categoryFilterRepository.create({
4306
+ filterId: filters.value[i].id,
4307
+ categoryId: categoryId,
4308
+ })];
4309
+ case 10:
4310
+ newCategoryFilter = _c.sent();
4311
+ filtersList.push(newCategoryFilter);
4312
+ _c.label = 11;
4313
+ case 11: return [3 /*break*/, 13];
4314
+ case 12:
4315
+ error_1 = _c.sent();
4316
+ console.log('catch error: ', error_1);
4317
+ return [3 /*break*/, 13];
4318
+ case 13:
4319
+ i++;
4320
+ return [3 /*break*/, 6];
4321
+ case 14: return [2 /*return*/, filtersList];
4322
+ case 15:
4323
+ if (!(Array.isArray(filters) && filters.length)) return [3 /*break*/, 25];
4324
+ filtersList = [];
4325
+ i = 0;
4326
+ _c.label = 16;
4327
+ case 16:
4328
+ if (!(i < filters.length)) return [3 /*break*/, 24];
4329
+ _c.label = 17;
4330
+ case 17:
4331
+ _c.trys.push([17, 22, , 23]);
4332
+ return [4 /*yield*/, this.categoryFilterRepository
4333
+ .find({
4334
+ filters: {
4335
+ categoryId: categoryId,
4336
+ filterId: filters[i].id,
4337
+ },
4338
+ })
4339
+ .then(function (data) { return data.data.shift(); })];
4340
+ case 18:
4341
+ hasFilter = _c.sent();
4342
+ if (!hasFilter) return [3 /*break*/, 19];
4343
+ filtersList.push(hasFilter);
4344
+ return [3 /*break*/, 21];
4345
+ case 19: return [4 /*yield*/, this.categoryFilterRepository.create({
4346
+ filterId: filters[i].id,
4347
+ categoryId: categoryId,
4348
+ })];
4349
+ case 20:
4350
+ newCategoryFilter = _c.sent();
4351
+ filtersList.push(newCategoryFilter);
4352
+ _c.label = 21;
4353
+ case 21: return [3 /*break*/, 23];
4354
+ case 22:
4355
+ error_2 = _c.sent();
4356
+ console.log('catch error: ', error_2);
4357
+ return [3 /*break*/, 23];
4358
+ case 23:
4359
+ i++;
4360
+ return [3 /*break*/, 16];
4361
+ case 24: return [2 /*return*/, filtersList];
4362
+ case 25: return [2 /*return*/];
4363
+ }
4364
+ });
4365
+ });
4366
+ };
4093
4367
  return CategoryHasuraGraphQLRepository;
4094
4368
  }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4095
4369
 
4370
+ var FilterHasuraGraphQLRepository = /** @class */ (function (_super_1) {
4371
+ __extends(FilterHasuraGraphQLRepository, _super_1);
4372
+ function FilterHasuraGraphQLRepository(endpoint, authOptions, filterOptionRepository, categoryFilterRepository) {
4373
+ var _this = _super_1.call(this, {
4374
+ tableName: 'filter',
4375
+ model: Filter,
4376
+ endpoint: endpoint,
4377
+ authOptions: authOptions,
4378
+ fields: [
4379
+ 'id',
4380
+ 'description',
4381
+ 'slug',
4382
+ 'enabled',
4383
+ { createdAt: { columnName: 'created_at' } },
4384
+ { updatedAt: { columnName: 'updated_at' } },
4385
+ {
4386
+ options: {
4387
+ columnName: 'options',
4388
+ foreignKeyColumn: { filterId: 'id' },
4389
+ fields: [
4390
+ 'id',
4391
+ { filterId: { columnName: 'filter_id' } },
4392
+ 'description',
4393
+ { createdAt: { columnName: 'created_at' } },
4394
+ { updatedAt: { columnName: 'updated_at' } },
4395
+ ],
4396
+ },
4397
+ },
4398
+ ],
4399
+ }) || this;
4400
+ _this.filterOptionRepository = filterOptionRepository;
4401
+ _this.categoryFilterRepository = categoryFilterRepository;
4402
+ return _this;
4403
+ }
4404
+ FilterHasuraGraphQLRepository.prototype.update = function (params) {
4405
+ var _super = Object.create(null, {
4406
+ update: { get: function () { return _super_1.prototype.update; } }
4407
+ });
4408
+ return __awaiter(this, void 0, void 0, function () {
4409
+ var options, data, filter, _a;
4410
+ return __generator(this, function (_b) {
4411
+ switch (_b.label) {
4412
+ case 0:
4413
+ options = params.options, data = __rest(params, ["options"]);
4414
+ return [4 /*yield*/, _super.update.call(this, data)];
4415
+ case 1:
4416
+ filter = _b.sent();
4417
+ _a = filter;
4418
+ return [4 /*yield*/, this.updateOptions(+data.id, { options: options })];
4419
+ case 2:
4420
+ _a.options = _b.sent();
4421
+ return [2 /*return*/, filter];
4422
+ }
4423
+ });
4424
+ });
4425
+ };
4426
+ FilterHasuraGraphQLRepository.prototype.updateOptions = function (filterId, _a) {
4427
+ var options = _a.options;
4428
+ return __awaiter(this, void 0, void 0, function () {
4429
+ var i, filterOptions, i, hasFilter, error_1, newOption, filterOptions, i, hasFilter, error_2, newOption;
4430
+ return __generator(this, function (_a) {
4431
+ switch (_a.label) {
4432
+ case 0:
4433
+ if (!options)
4434
+ return [2 /*return*/, []];
4435
+ if (!('action' in options && options.action === 'remove' && options.value.length)) return [3 /*break*/, 5];
4436
+ i = 0;
4437
+ _a.label = 1;
4438
+ case 1:
4439
+ if (!(i < options.value.length)) return [3 /*break*/, 4];
4440
+ return [4 /*yield*/, this.filterOptionRepository.delete({ id: options.value[i].id })];
4441
+ case 2:
4442
+ _a.sent();
4443
+ _a.label = 3;
4444
+ case 3:
4445
+ i++;
4446
+ return [3 /*break*/, 1];
4447
+ case 4: return [2 /*return*/, []];
4448
+ case 5:
4449
+ if (!('action' in options && options.action === 'merge' && options.value.length)) return [3 /*break*/, 13];
4450
+ filterOptions = [];
4451
+ i = 0;
4452
+ _a.label = 6;
4453
+ case 6:
4454
+ if (!(i < options.value.length)) return [3 /*break*/, 12];
4455
+ _a.label = 7;
4456
+ case 7:
4457
+ _a.trys.push([7, 9, , 11]);
4458
+ return [4 /*yield*/, this.filterOptionRepository.get({ id: options.value[i].id })];
4459
+ case 8:
4460
+ hasFilter = _a.sent();
4461
+ if (hasFilter)
4462
+ filterOptions.push(hasFilter);
4463
+ return [3 /*break*/, 11];
4464
+ case 9:
4465
+ error_1 = _a.sent();
4466
+ return [4 /*yield*/, this.filterOptionRepository.create(Object.assign(Object.assign({}, options.value[i]), { filterId: filterId }))];
4467
+ case 10:
4468
+ newOption = _a.sent();
4469
+ filterOptions.push(newOption);
4470
+ return [3 /*break*/, 11];
4471
+ case 11:
4472
+ i++;
4473
+ return [3 /*break*/, 6];
4474
+ case 12: return [2 /*return*/, filterOptions];
4475
+ case 13:
4476
+ if (!(Array.isArray(options) && options.length)) return [3 /*break*/, 20];
4477
+ filterOptions = [];
4478
+ i = 0;
4479
+ _a.label = 14;
4480
+ case 14:
4481
+ if (!(i < options.length)) return [3 /*break*/, 20];
4482
+ _a.label = 15;
4483
+ case 15:
4484
+ _a.trys.push([15, 17, , 19]);
4485
+ return [4 /*yield*/, this.filterOptionRepository.get({ id: options[i].id })];
4486
+ case 16:
4487
+ hasFilter = _a.sent();
4488
+ if (hasFilter)
4489
+ filterOptions.push(hasFilter);
4490
+ return [3 /*break*/, 19];
4491
+ case 17:
4492
+ error_2 = _a.sent();
4493
+ return [4 /*yield*/, this.filterOptionRepository.create(Object.assign(Object.assign({}, options[i]), { filterId: filterId }))];
4494
+ case 18:
4495
+ newOption = _a.sent();
4496
+ filterOptions.push(newOption);
4497
+ return [3 /*break*/, 19];
4498
+ case 19:
4499
+ i++;
4500
+ return [3 /*break*/, 14];
4501
+ case 20: return [2 /*return*/, []];
4502
+ }
4503
+ });
4504
+ });
4505
+ };
4506
+ FilterHasuraGraphQLRepository.prototype.delete = function (params) {
4507
+ var _super = Object.create(null, {
4508
+ delete: { get: function () { return _super_1.prototype.delete; } }
4509
+ });
4510
+ return __awaiter(this, void 0, void 0, function () {
4511
+ var options, data, categoryFilters;
4512
+ return __generator(this, function (_a) {
4513
+ switch (_a.label) {
4514
+ case 0:
4515
+ options = params.options, data = __rest(params, ["options"]);
4516
+ return [4 /*yield*/, this.categoryFilterRepository
4517
+ .find({
4518
+ filters: {
4519
+ filterId: +data.id,
4520
+ },
4521
+ })
4522
+ .then(function (result) { return result.data; })];
4523
+ case 1:
4524
+ categoryFilters = _a.sent();
4525
+ if (categoryFilters.length)
4526
+ throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)');
4527
+ return [4 /*yield*/, this.deleteOptions(options)];
4528
+ case 2:
4529
+ _a.sent();
4530
+ return [4 /*yield*/, _super.delete.call(this, { id: +data.id })];
4531
+ case 3:
4532
+ _a.sent();
4533
+ return [2 /*return*/];
4534
+ }
4535
+ });
4536
+ });
4537
+ };
4538
+ FilterHasuraGraphQLRepository.prototype.deleteOptions = function (options) {
4539
+ return __awaiter(this, void 0, void 0, function () {
4540
+ var i, error_3;
4541
+ return __generator(this, function (_a) {
4542
+ switch (_a.label) {
4543
+ case 0:
4544
+ i = 0;
4545
+ _a.label = 1;
4546
+ case 1:
4547
+ if (!(i < options.length)) return [3 /*break*/, 6];
4548
+ _a.label = 2;
4549
+ case 2:
4550
+ _a.trys.push([2, 4, , 5]);
4551
+ return [4 /*yield*/, this.filterOptionRepository.delete({ id: options[i].id })];
4552
+ case 3:
4553
+ _a.sent();
4554
+ return [3 /*break*/, 5];
4555
+ case 4:
4556
+ error_3 = _a.sent();
4557
+ console.log(error_3);
4558
+ return [3 /*break*/, 5];
4559
+ case 5:
4560
+ i++;
4561
+ return [3 /*break*/, 1];
4562
+ case 6: return [2 /*return*/];
4563
+ }
4564
+ });
4565
+ });
4566
+ };
4567
+ return FilterHasuraGraphQLRepository;
4568
+ }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4569
+
4570
+ var FilterOptionHasuraGraphQLRepository = /** @class */ (function (_super) {
4571
+ __extends(FilterOptionHasuraGraphQLRepository, _super);
4572
+ function FilterOptionHasuraGraphQLRepository(endpoint, authOptions) {
4573
+ return _super.call(this, {
4574
+ tableName: 'filter_option',
4575
+ model: FilterOption,
4576
+ endpoint: endpoint,
4577
+ authOptions: authOptions,
4578
+ fields: [
4579
+ 'id',
4580
+ 'description',
4581
+ { filterId: { columnName: 'filter_id' } },
4582
+ { createdAt: { columnName: 'created_at' } },
4583
+ { updatedAt: { columnName: 'updated_at' } },
4584
+ ],
4585
+ }) || this;
4586
+ }
4587
+ return FilterOptionHasuraGraphQLRepository;
4588
+ }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4589
+
4096
4590
  var ProductHasuraGraphQLRepository = /** @class */ (function (_super_1) {
4097
4591
  __extends(ProductHasuraGraphQLRepository, _super_1);
4098
4592
  function ProductHasuraGraphQLRepository(endpoint, authOptions) {
@@ -4197,6 +4691,7 @@
4197
4691
  'weight',
4198
4692
  'gender',
4199
4693
  { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },
4694
+ { filters: { columnName: 'filters', type: HasuraGraphQLColumnType.Jsonb } },
4200
4695
  { isKit: { columnName: 'is_kit' } },
4201
4696
  { createdAt: { columnName: 'created_at' } },
4202
4697
  { updatedAt: { columnName: 'updated_at' } },
@@ -5024,6 +5519,8 @@
5024
5519
  exports.Buy2Win = Buy2Win;
5025
5520
  exports.Buy2WinFirestoreRepository = Buy2WinFirestoreRepository;
5026
5521
  exports.Category = Category;
5522
+ exports.CategoryFilter = CategoryFilter;
5523
+ exports.CategoryFilterHasuraGraphQLRepository = CategoryFilterHasuraGraphQLRepository;
5027
5524
  exports.CategoryFirestoreRepository = CategoryFirestoreRepository;
5028
5525
  exports.CategoryHasuraGraphQL = CategoryHasuraGraphQL;
5029
5526
  exports.CategoryHasuraGraphQLRepository = CategoryHasuraGraphQLRepository;
@@ -5035,6 +5532,10 @@
5035
5532
  exports.CouponFirestoreRepository = CouponFirestoreRepository;
5036
5533
  exports.DuplicatedResultsError = DuplicatedResultsError;
5037
5534
  exports.Edition = Edition;
5535
+ exports.Filter = Filter;
5536
+ exports.FilterHasuraGraphQLRepository = FilterHasuraGraphQLRepository;
5537
+ exports.FilterOption = FilterOption;
5538
+ exports.FilterOptionHasuraGraphQLRepository = FilterOptionHasuraGraphQLRepository;
5038
5539
  exports.Home = Home;
5039
5540
  exports.HomeFirestoreRepository = HomeFirestoreRepository;
5040
5541
  exports.InvalidArgumentError = InvalidArgumentError;