@infrab4a/connect 3.4.0-beta.0 → 3.4.0-beta.10

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 +316 -163
  2. package/bundles/infrab4a-connect.umd.js.map +1 -1
  3. package/domain/catalog/models/category-filter.d.ts +8 -0
  4. package/domain/catalog/models/category.d.ts +3 -2
  5. package/domain/catalog/models/filter-option.d.ts +1 -1
  6. package/domain/catalog/models/filter.d.ts +2 -1
  7. package/domain/catalog/models/index.d.ts +1 -0
  8. package/domain/catalog/models/types/index.d.ts +0 -1
  9. package/domain/catalog/repositories/category-filter.repository.d.ts +4 -0
  10. package/domain/catalog/repositories/index.d.ts +1 -0
  11. package/esm2015/domain/catalog/models/category-filter.js +10 -0
  12. package/esm2015/domain/catalog/models/category.js +8 -1
  13. package/esm2015/domain/catalog/models/filter-option.js +1 -1
  14. package/esm2015/domain/catalog/models/filter.js +1 -1
  15. package/esm2015/domain/catalog/models/index.js +2 -1
  16. package/esm2015/domain/catalog/models/types/index.js +1 -2
  17. package/esm2015/domain/catalog/repositories/category-filter.repository.js +2 -0
  18. package/esm2015/domain/catalog/repositories/index.js +2 -1
  19. package/esm2015/infra/hasura-graphql/mixins/helpers/attribute-option.helper.js +2 -2
  20. package/esm2015/infra/hasura-graphql/models/index.js +1 -3
  21. package/esm2015/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.js +24 -0
  22. package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +76 -4
  23. package/esm2015/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.js +67 -48
  24. package/esm2015/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.js +11 -31
  25. package/esm2015/infra/hasura-graphql/repositories/catalog/index.js +2 -1
  26. package/esm2015/infra/hasura-graphql/types/hasura-graphql-fields.type.js +1 -1
  27. package/esm2015/utils/index.js +6 -6
  28. package/fesm2015/infrab4a-connect.js +197 -96
  29. package/fesm2015/infrab4a-connect.js.map +1 -1
  30. package/infra/hasura-graphql/models/index.d.ts +0 -2
  31. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +11 -0
  32. package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +4 -1
  33. package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +12 -12
  34. package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +5 -10
  35. package/infra/hasura-graphql/repositories/catalog/index.d.ts +1 -0
  36. package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +1 -1
  37. package/package.json +1 -1
  38. package/utils/index.d.ts +5 -5
  39. package/domain/catalog/models/types/category-filter.type.d.ts +0 -4
  40. package/esm2015/domain/catalog/models/types/category-filter.type.js +0 -2
  41. package/esm2015/infra/hasura-graphql/models/filter-hasura-graphql.js +0 -4
  42. package/esm2015/infra/hasura-graphql/models/filter-option-hasura-graphql.js +0 -4
  43. package/infra/hasura-graphql/models/filter-hasura-graphql.d.ts +0 -3
  44. package/infra/hasura-graphql/models/filter-option-hasura-graphql.d.ts +0 -3
@@ -832,8 +832,6 @@
832
832
  return Address;
833
833
  }(BaseModel));
834
834
 
835
- var isUUID = function (value) { return lodash.isString(value) && /[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}/.test(value); };
836
-
837
835
  var Base = /** @class */ (function () {
838
836
  function Base() {
839
837
  var args = [];
@@ -845,6 +843,8 @@
845
843
  return Base;
846
844
  }());
847
845
 
846
+ var isUUID = function (value) { return lodash.isString(value) && /[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}/.test(value); };
847
+
848
848
  var parseDateTime = function (value) {
849
849
  if (!lodash.isString(value))
850
850
  return value;
@@ -1252,6 +1252,24 @@
1252
1252
  return RecoveryPassword;
1253
1253
  }());
1254
1254
 
1255
+ var Filter = /** @class */ (function (_super) {
1256
+ __extends(Filter, _super);
1257
+ function Filter() {
1258
+ return _super !== null && _super.apply(this, arguments) || this;
1259
+ }
1260
+ Filter.prototype.identifierFields = function () {
1261
+ return ['id'];
1262
+ };
1263
+ Object.defineProperty(Filter, "identifiersFields", {
1264
+ get: function () {
1265
+ return ['id'];
1266
+ },
1267
+ enumerable: false,
1268
+ configurable: true
1269
+ });
1270
+ return Filter;
1271
+ }(BaseModel));
1272
+
1255
1273
  var Category = /** @class */ (function (_super) {
1256
1274
  __extends(Category, _super);
1257
1275
  function Category() {
@@ -1268,6 +1286,28 @@
1268
1286
  configurable: true
1269
1287
  });
1270
1288
  return Category;
1289
+ }(BaseModel));
1290
+ __decorate([
1291
+ classTransformer.Type(function () { return Filter; }),
1292
+ __metadata("design:type", Array)
1293
+ ], Category.prototype, "filters", void 0);
1294
+
1295
+ var CategoryFilter = /** @class */ (function (_super) {
1296
+ __extends(CategoryFilter, _super);
1297
+ function CategoryFilter() {
1298
+ return _super !== null && _super.apply(this, arguments) || this;
1299
+ }
1300
+ CategoryFilter.prototype.identifierFields = function () {
1301
+ return ['id'];
1302
+ };
1303
+ Object.defineProperty(CategoryFilter, "identifiersFields", {
1304
+ get: function () {
1305
+ return ['id'];
1306
+ },
1307
+ enumerable: false,
1308
+ configurable: true
1309
+ });
1310
+ return CategoryFilter;
1271
1311
  }(BaseModel));
1272
1312
 
1273
1313
  exports.GenderDestination = void 0;
@@ -1285,24 +1325,6 @@
1285
1325
  Shops["ALL"] = "ALL";
1286
1326
  })(exports.Shops || (exports.Shops = {}));
1287
1327
 
1288
- var Filter = /** @class */ (function (_super) {
1289
- __extends(Filter, _super);
1290
- function Filter() {
1291
- return _super !== null && _super.apply(this, arguments) || this;
1292
- }
1293
- Filter.prototype.identifierFields = function () {
1294
- return ['id'];
1295
- };
1296
- Object.defineProperty(Filter, "identifiersFields", {
1297
- get: function () {
1298
- return ['id'];
1299
- },
1300
- enumerable: false,
1301
- configurable: true
1302
- });
1303
- return Filter;
1304
- }(BaseModel));
1305
-
1306
1328
  var FilterOption = /** @class */ (function (_super) {
1307
1329
  __extends(FilterOption, _super);
1308
1330
  function FilterOption() {
@@ -3042,7 +3064,7 @@
3042
3064
  }());
3043
3065
  AttributeOptionHelper.FindByAttribute = function (attributeName, fields) {
3044
3066
  if (fields.includes(attributeName))
3045
- return { columnName: attributeName.toString(), attributeName: attributeName };
3067
+ return { columnName: attributeName.toString(), attributeName: attributeName, to: function (value) { return value; }, from: function (value) { return value; } };
3046
3068
  var field = fields.find(function (columnOption) { return lodash.isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()); });
3047
3069
  var fieldOption = field === null || field === void 0 ? void 0 : field[attributeName.toString()];
3048
3070
  if (lodash.isNil(fieldOption))
@@ -3697,22 +3719,6 @@
3697
3719
  return CategoryHasuraGraphQL;
3698
3720
  }(Category));
3699
3721
 
3700
- var FilterHasuraGraphQL = /** @class */ (function (_super) {
3701
- __extends(FilterHasuraGraphQL, _super);
3702
- function FilterHasuraGraphQL() {
3703
- return _super !== null && _super.apply(this, arguments) || this;
3704
- }
3705
- return FilterHasuraGraphQL;
3706
- }(Filter));
3707
-
3708
- var FilterOptionHasuraGraphQL = /** @class */ (function (_super) {
3709
- __extends(FilterOptionHasuraGraphQL, _super);
3710
- function FilterOptionHasuraGraphQL() {
3711
- return _super !== null && _super.apply(this, arguments) || this;
3712
- }
3713
- return FilterOptionHasuraGraphQL;
3714
- }(FilterOption));
3715
-
3716
3722
  var ProductHasuraGraphQL = /** @class */ (function (_super) {
3717
3723
  __extends(ProductHasuraGraphQL, _super);
3718
3724
  function ProductHasuraGraphQL() {
@@ -3752,9 +3758,32 @@
3752
3758
  return VariantHasuraGraphQL;
3753
3759
  }(Variant));
3754
3760
 
3761
+ var CategoryFilterHasuraGraphQLRepository = /** @class */ (function (_super) {
3762
+ __extends(CategoryFilterHasuraGraphQLRepository, _super);
3763
+ function CategoryFilterHasuraGraphQLRepository(endpoint, authOptions) {
3764
+ return _super.call(this, {
3765
+ tableName: 'category_filter',
3766
+ model: CategoryFilter,
3767
+ endpoint: endpoint,
3768
+ authOptions: authOptions,
3769
+ fields: ['id', { filterId: { columnName: 'filter_id' } }, { categoryId: { columnName: 'category_id' } }],
3770
+ }) || this;
3771
+ }
3772
+ CategoryFilterHasuraGraphQLRepository.prototype.deleteByCategoryAndFilter = function (categoryId, filterId) {
3773
+ return this.mutation('delete_category_filter', ['affected_rows'], {
3774
+ where: {
3775
+ type: 'category_filter_bool_exp',
3776
+ required: true,
3777
+ value: { category_id: { _eq: categoryId }, filterId: { _eq: filterId } },
3778
+ },
3779
+ });
3780
+ };
3781
+ return CategoryFilterHasuraGraphQLRepository;
3782
+ }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
3783
+
3755
3784
  var CategoryHasuraGraphQLRepository = /** @class */ (function (_super_1) {
3756
3785
  __extends(CategoryHasuraGraphQLRepository, _super_1);
3757
- function CategoryHasuraGraphQLRepository(endpoint, authOptions, productRepository) {
3786
+ function CategoryHasuraGraphQLRepository(endpoint, authOptions, productRepository, categoryFilterRepository) {
3758
3787
  var _this = _super_1.call(this, {
3759
3788
  tableName: 'category',
3760
3789
  model: Category,
@@ -3790,7 +3819,17 @@
3790
3819
  },
3791
3820
  },
3792
3821
  },
3793
- 'filters',
3822
+ {
3823
+ filters: {
3824
+ columnName: 'filters',
3825
+ foreignKeyColumn: { filter_id: 'id' },
3826
+ fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],
3827
+ bindPersistData: function (value) { return ({
3828
+ filters: { data: value.map(function (filter) { return ({ filter_id: filter.id }); }) },
3829
+ }); },
3830
+ 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; })) || []; },
3831
+ },
3832
+ },
3794
3833
  { createdAt: { columnName: 'created_at' } },
3795
3834
  { updatedAt: { columnName: 'updated_at' } },
3796
3835
  {
@@ -3815,6 +3854,7 @@
3815
3854
  ],
3816
3855
  }) || this;
3817
3856
  _this.productRepository = productRepository;
3857
+ _this.categoryFilterRepository = categoryFilterRepository;
3818
3858
  return _this;
3819
3859
  }
3820
3860
  CategoryHasuraGraphQLRepository.prototype.create = function (params) {
@@ -3857,25 +3897,25 @@
3857
3897
  update: { get: function () { return _super_1.prototype.update; } }
3858
3898
  });
3859
3899
  return __awaiter(this, void 0, void 0, function () {
3860
- var products, checkId, metadata, data, plainData, id, category, _c, _d, _e, _f;
3861
- return __generator(this, function (_g) {
3862
- switch (_g.label) {
3900
+ var products, checkId, metadata, filters, data, plainData, id, category, _c, _d, _e, _f, _g, _h;
3901
+ return __generator(this, function (_j) {
3902
+ switch (_j.label) {
3863
3903
  case 0:
3864
- products = params.products, checkId = params.id, metadata = params.metadata, data = __rest(params, ["products", "id", "metadata"]);
3904
+ products = params.products, checkId = params.id, metadata = params.metadata, filters = params.filters, data = __rest(params, ["products", "id", "metadata", "filters"]);
3865
3905
  plainData = this.paramsToPlain({ id: checkId });
3866
3906
  return [4 /*yield*/, this.getId(plainData.id)];
3867
3907
  case 1:
3868
- id = _g.sent();
3908
+ id = _j.sent();
3869
3909
  return [4 /*yield*/, _super.update.call(this, Object.assign({ id: id }, data))];
3870
3910
  case 2:
3871
- category = _g.sent();
3911
+ category = _j.sent();
3872
3912
  _c = category;
3873
3913
  _d = products;
3874
3914
  if (!_d) return [3 /*break*/, 4];
3875
3915
  return [4 /*yield*/, this.updateProducts(+id, { products: products })];
3876
3916
  case 3:
3877
- _d = (_g.sent());
3878
- _g.label = 4;
3917
+ _d = (_j.sent());
3918
+ _j.label = 4;
3879
3919
  case 4:
3880
3920
  _c.products = _d;
3881
3921
  _e = category;
@@ -3883,10 +3923,19 @@
3883
3923
  if (!_f) return [3 /*break*/, 6];
3884
3924
  return [4 /*yield*/, this.updateMetadata(+id, { metadata: metadata })];
3885
3925
  case 5:
3886
- _f = (_g.sent());
3887
- _g.label = 6;
3926
+ _f = (_j.sent());
3927
+ _j.label = 6;
3888
3928
  case 6:
3889
3929
  _e.metadata = _f;
3930
+ _g = category;
3931
+ _h = filters;
3932
+ if (!_h) return [3 /*break*/, 8];
3933
+ return [4 /*yield*/, this.updateFilters(+id, { filters: filters })];
3934
+ case 7:
3935
+ _h = (_j.sent());
3936
+ _j.label = 8;
3937
+ case 8:
3938
+ _g.filters = _h;
3890
3939
  return [2 /*return*/, category];
3891
3940
  }
3892
3941
  });
@@ -4112,23 +4161,123 @@
4112
4161
  });
4113
4162
  });
4114
4163
  };
4164
+ CategoryHasuraGraphQLRepository.prototype.updateFilters = function (categoryId, _c) {
4165
+ var filters = _c.filters;
4166
+ return __awaiter(this, void 0, void 0, function () {
4167
+ var i, filtersList, i, hasFilter, error_1, newCategoryFilter, filtersList, i, hasFilter, error_2, newCategoryFilter;
4168
+ return __generator(this, function (_c) {
4169
+ switch (_c.label) {
4170
+ case 0:
4171
+ if (!('action' in filters && filters.action === 'remove' && filters.value.length)) return [3 /*break*/, 5];
4172
+ i = 0;
4173
+ _c.label = 1;
4174
+ case 1:
4175
+ if (!(i < filters.value.length)) return [3 /*break*/, 4];
4176
+ return [4 /*yield*/, this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id)];
4177
+ case 2:
4178
+ _c.sent();
4179
+ _c.label = 3;
4180
+ case 3:
4181
+ i++;
4182
+ return [3 /*break*/, 1];
4183
+ case 4: return [2 /*return*/, []];
4184
+ case 5:
4185
+ if (!('action' in filters && filters.action === 'merge' && filters.value.length)) return [3 /*break*/, 13];
4186
+ filtersList = [];
4187
+ i = 0;
4188
+ _c.label = 6;
4189
+ case 6:
4190
+ if (!(i < filters.value.length)) return [3 /*break*/, 12];
4191
+ _c.label = 7;
4192
+ case 7:
4193
+ _c.trys.push([7, 9, , 11]);
4194
+ return [4 /*yield*/, this.categoryFilterRepository
4195
+ .find({
4196
+ filters: {
4197
+ categoryId: categoryId,
4198
+ filterId: filters[i].id,
4199
+ },
4200
+ })
4201
+ .then(function (data) { return data.data.shift(); })];
4202
+ case 8:
4203
+ hasFilter = _c.sent();
4204
+ if (hasFilter)
4205
+ filtersList.push(hasFilter);
4206
+ return [3 /*break*/, 11];
4207
+ case 9:
4208
+ error_1 = _c.sent();
4209
+ return [4 /*yield*/, this.categoryFilterRepository.create({
4210
+ filterId: filters.value[i].id,
4211
+ categoryId: categoryId,
4212
+ })];
4213
+ case 10:
4214
+ newCategoryFilter = _c.sent();
4215
+ filtersList.push(newCategoryFilter);
4216
+ return [3 /*break*/, 11];
4217
+ case 11:
4218
+ i++;
4219
+ return [3 /*break*/, 6];
4220
+ case 12: return [2 /*return*/, filtersList];
4221
+ case 13:
4222
+ if (!(Array.isArray(filters) && filters.length)) return [3 /*break*/, 21];
4223
+ filtersList = [];
4224
+ i = 0;
4225
+ _c.label = 14;
4226
+ case 14:
4227
+ if (!(i < filters.length)) return [3 /*break*/, 20];
4228
+ _c.label = 15;
4229
+ case 15:
4230
+ _c.trys.push([15, 17, , 19]);
4231
+ return [4 /*yield*/, this.categoryFilterRepository
4232
+ .find({
4233
+ filters: {
4234
+ categoryId: categoryId,
4235
+ filterId: filters[i].id,
4236
+ },
4237
+ })
4238
+ .then(function (data) { return data.data.shift(); })];
4239
+ case 16:
4240
+ hasFilter = _c.sent();
4241
+ if (hasFilter)
4242
+ filtersList.push(hasFilter);
4243
+ return [3 /*break*/, 19];
4244
+ case 17:
4245
+ error_2 = _c.sent();
4246
+ return [4 /*yield*/, this.categoryFilterRepository.create({
4247
+ filterId: filters[i].id,
4248
+ categoryId: categoryId,
4249
+ })];
4250
+ case 18:
4251
+ newCategoryFilter = _c.sent();
4252
+ filtersList.push(newCategoryFilter);
4253
+ return [3 /*break*/, 19];
4254
+ case 19:
4255
+ i++;
4256
+ return [3 /*break*/, 14];
4257
+ case 20: return [2 /*return*/, filtersList];
4258
+ case 21: return [2 /*return*/];
4259
+ }
4260
+ });
4261
+ });
4262
+ };
4115
4263
  return CategoryHasuraGraphQLRepository;
4116
4264
  }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4117
4265
 
4118
4266
  var FilterHasuraGraphQLRepository = /** @class */ (function (_super_1) {
4119
4267
  __extends(FilterHasuraGraphQLRepository, _super_1);
4120
- function FilterHasuraGraphQLRepository(endpoint, authOptions, filterOptionRepository) {
4268
+ function FilterHasuraGraphQLRepository(endpoint, authOptions, filterOptionRepository, categoryFilterRepository) {
4121
4269
  var _this = _super_1.call(this, {
4122
4270
  tableName: 'filter',
4123
- model: FilterHasuraGraphQL,
4271
+ model: Filter,
4124
4272
  endpoint: endpoint,
4125
4273
  authOptions: authOptions,
4126
4274
  fields: [
4127
4275
  'id',
4128
4276
  'description',
4277
+ 'slug',
4129
4278
  'enabled',
4130
- 'createdAt',
4131
- 'updatedAt',
4279
+ { createdAt: { columnName: 'created_at' } },
4280
+ { updatedAt: { columnName: 'updated_at' } },
4132
4281
  {
4133
4282
  options: {
4134
4283
  columnName: 'options',
@@ -4137,66 +4286,17 @@
4137
4286
  'id',
4138
4287
  { filterId: { columnName: 'filter_id' } },
4139
4288
  'description',
4140
- 'createdAt',
4141
- 'updatedAt'
4289
+ { createdAt: { columnName: 'created_at' } },
4290
+ { updatedAt: { columnName: 'updated_at' } },
4142
4291
  ],
4143
4292
  },
4144
- }
4293
+ },
4145
4294
  ],
4146
4295
  }) || this;
4147
4296
  _this.filterOptionRepository = filterOptionRepository;
4297
+ _this.categoryFilterRepository = categoryFilterRepository;
4148
4298
  return _this;
4149
4299
  }
4150
- FilterHasuraGraphQLRepository.prototype.get = function (identifiers) {
4151
- var _super = Object.create(null, {
4152
- get: { get: function () { return _super_1.prototype.get; } }
4153
- });
4154
- return __awaiter(this, void 0, void 0, function () {
4155
- var filter;
4156
- return __generator(this, function (_a) {
4157
- switch (_a.label) {
4158
- case 0: return [4 /*yield*/, _super.get.call(this, identifiers)];
4159
- case 1:
4160
- filter = _a.sent();
4161
- if (!filter)
4162
- throw new NotFoundError('Filter not found');
4163
- return [2 /*return*/, filter];
4164
- }
4165
- });
4166
- });
4167
- };
4168
- FilterHasuraGraphQLRepository.prototype.find = function (options) {
4169
- var _super = Object.create(null, {
4170
- find: { get: function () { return _super_1.prototype.find; } }
4171
- });
4172
- return __awaiter(this, void 0, void 0, function () {
4173
- var filter;
4174
- return __generator(this, function (_a) {
4175
- switch (_a.label) {
4176
- case 0: return [4 /*yield*/, _super.find.call(this, options)];
4177
- case 1:
4178
- filter = _a.sent();
4179
- return [2 /*return*/, filter];
4180
- }
4181
- });
4182
- });
4183
- };
4184
- FilterHasuraGraphQLRepository.prototype.create = function (params) {
4185
- var _super = Object.create(null, {
4186
- create: { get: function () { return _super_1.prototype.create; } }
4187
- });
4188
- return __awaiter(this, void 0, void 0, function () {
4189
- var filter;
4190
- return __generator(this, function (_a) {
4191
- switch (_a.label) {
4192
- case 0: return [4 /*yield*/, _super.create.call(this, params)];
4193
- case 1:
4194
- filter = _a.sent();
4195
- return [2 /*return*/, filter];
4196
- }
4197
- });
4198
- });
4199
- };
4200
4300
  FilterHasuraGraphQLRepository.prototype.update = function (params) {
4201
4301
  var _super = Object.create(null, {
4202
4302
  update: { get: function () { return _super_1.prototype.update; } }
@@ -4219,17 +4319,16 @@
4219
4319
  });
4220
4320
  });
4221
4321
  };
4222
- ;
4223
4322
  FilterHasuraGraphQLRepository.prototype.updateOptions = function (filterId, _a) {
4224
4323
  var options = _a.options;
4225
4324
  return __awaiter(this, void 0, void 0, function () {
4226
- var i, filterOptions, i, hasFilter, newOption;
4325
+ var i, filterOptions, i, hasFilter, error_1, newOption, filterOptions, i, hasFilter, error_2, newOption;
4227
4326
  return __generator(this, function (_a) {
4228
4327
  switch (_a.label) {
4229
4328
  case 0:
4230
4329
  if (!options)
4231
4330
  return [2 /*return*/, []];
4232
- if (!('action' in options && options.action === 'remove')) return [3 /*break*/, 5];
4331
+ if (!('action' in options && options.action === 'remove' && options.value.length)) return [3 /*break*/, 5];
4233
4332
  i = 0;
4234
4333
  _a.label = 1;
4235
4334
  case 1:
@@ -4243,86 +4342,144 @@
4243
4342
  return [3 /*break*/, 1];
4244
4343
  case 4: return [2 /*return*/, []];
4245
4344
  case 5:
4246
- if (!('action' in options && options.action === 'update')) return [3 /*break*/, 12];
4345
+ if (!('action' in options && options.action === 'merge' && options.value.length)) return [3 /*break*/, 13];
4247
4346
  filterOptions = [];
4248
4347
  i = 0;
4249
4348
  _a.label = 6;
4250
4349
  case 6:
4251
- if (!(i < options.value.length)) return [3 /*break*/, 11];
4252
- return [4 /*yield*/, this.filterOptionRepository.get({ id: options.value[i].id })];
4350
+ if (!(i < options.value.length)) return [3 /*break*/, 12];
4351
+ _a.label = 7;
4253
4352
  case 7:
4254
- hasFilter = _a.sent();
4255
- if (!!hasFilter) return [3 /*break*/, 9];
4256
- return [4 /*yield*/, this.filterOptionRepository.create(options.value[i])];
4353
+ _a.trys.push([7, 9, , 11]);
4354
+ return [4 /*yield*/, this.filterOptionRepository.get({ id: options.value[i].id })];
4257
4355
  case 8:
4258
- newOption = _a.sent();
4259
- filterOptions.push(newOption);
4260
- return [3 /*break*/, 10];
4356
+ hasFilter = _a.sent();
4357
+ if (hasFilter)
4358
+ filterOptions.push(hasFilter);
4359
+ return [3 /*break*/, 11];
4261
4360
  case 9:
4262
- filterOptions.push(hasFilter);
4263
- _a.label = 10;
4361
+ error_1 = _a.sent();
4362
+ return [4 /*yield*/, this.filterOptionRepository.create(Object.assign(Object.assign({}, options.value[i]), { filterId: filterId }))];
4264
4363
  case 10:
4364
+ newOption = _a.sent();
4365
+ filterOptions.push(newOption);
4366
+ return [3 /*break*/, 11];
4367
+ case 11:
4265
4368
  i++;
4266
4369
  return [3 /*break*/, 6];
4267
- case 11: return [2 /*return*/, filterOptions];
4268
- case 12: return [2 /*return*/];
4370
+ case 12: return [2 /*return*/, filterOptions];
4371
+ case 13:
4372
+ if (!(Array.isArray(options) && options.length)) return [3 /*break*/, 20];
4373
+ filterOptions = [];
4374
+ i = 0;
4375
+ _a.label = 14;
4376
+ case 14:
4377
+ if (!(i < options.length)) return [3 /*break*/, 20];
4378
+ _a.label = 15;
4379
+ case 15:
4380
+ _a.trys.push([15, 17, , 19]);
4381
+ return [4 /*yield*/, this.filterOptionRepository.get({ id: options[i].id })];
4382
+ case 16:
4383
+ hasFilter = _a.sent();
4384
+ if (hasFilter)
4385
+ filterOptions.push(hasFilter);
4386
+ return [3 /*break*/, 19];
4387
+ case 17:
4388
+ error_2 = _a.sent();
4389
+ return [4 /*yield*/, this.filterOptionRepository.create(Object.assign(Object.assign({}, options[i]), { filterId: filterId }))];
4390
+ case 18:
4391
+ newOption = _a.sent();
4392
+ filterOptions.push(newOption);
4393
+ return [3 /*break*/, 19];
4394
+ case 19:
4395
+ i++;
4396
+ return [3 /*break*/, 14];
4397
+ case 20: return [2 /*return*/, []];
4269
4398
  }
4270
4399
  });
4271
4400
  });
4272
4401
  };
4273
- return FilterHasuraGraphQLRepository;
4274
- }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4275
-
4276
- var FilterOptionHasuraGraphQLRepository = /** @class */ (function (_super_1) {
4277
- __extends(FilterOptionHasuraGraphQLRepository, _super_1);
4278
- function FilterOptionHasuraGraphQLRepository(endpoint, authOptions) {
4279
- return _super_1.call(this, {
4280
- tableName: 'filter-option',
4281
- model: FilterOptionHasuraGraphQL,
4282
- endpoint: endpoint,
4283
- authOptions: authOptions,
4284
- fields: [],
4285
- }) || this;
4286
- }
4287
- FilterOptionHasuraGraphQLRepository.prototype.create = function (params) {
4288
- return _super_1.prototype.create.call(this, params);
4289
- };
4290
- FilterOptionHasuraGraphQLRepository.prototype.find = function (options) {
4402
+ FilterHasuraGraphQLRepository.prototype.delete = function (params) {
4291
4403
  var _super = Object.create(null, {
4292
- find: { get: function () { return _super_1.prototype.find; } }
4404
+ delete: { get: function () { return _super_1.prototype.delete; } }
4293
4405
  });
4294
4406
  return __awaiter(this, void 0, void 0, function () {
4295
- var filterOptions;
4407
+ var options, data, categoryFilters;
4296
4408
  return __generator(this, function (_a) {
4297
4409
  switch (_a.label) {
4298
- case 0: return [4 /*yield*/, _super.find.call(this, options)];
4410
+ case 0:
4411
+ options = params.options, data = __rest(params, ["options"]);
4412
+ return [4 /*yield*/, this.categoryFilterRepository
4413
+ .find({
4414
+ filters: {
4415
+ filterId: +data.id,
4416
+ },
4417
+ })
4418
+ .then(function (result) { return result.data; })];
4299
4419
  case 1:
4300
- filterOptions = _a.sent();
4301
- return [2 /*return*/, filterOptions];
4420
+ categoryFilters = _a.sent();
4421
+ if (categoryFilters.length)
4422
+ throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)');
4423
+ return [4 /*yield*/, this.deleteOptions(options)];
4424
+ case 2:
4425
+ _a.sent();
4426
+ return [4 /*yield*/, _super.delete.call(this, { id: +data.id })];
4427
+ case 3:
4428
+ _a.sent();
4429
+ return [2 /*return*/];
4302
4430
  }
4303
4431
  });
4304
4432
  });
4305
4433
  };
4306
- FilterOptionHasuraGraphQLRepository.prototype.delete = function (identifiers) {
4307
- return _super_1.prototype.delete.call(this, identifiers);
4308
- };
4309
- FilterOptionHasuraGraphQLRepository.prototype.findByFilter = function (filterId) {
4434
+ FilterHasuraGraphQLRepository.prototype.deleteOptions = function (options) {
4310
4435
  return __awaiter(this, void 0, void 0, function () {
4311
- var options;
4436
+ var i, error_3;
4312
4437
  return __generator(this, function (_a) {
4313
4438
  switch (_a.label) {
4314
- case 0: return [4 /*yield*/, this.find({
4315
- filters: {
4316
- filterId: filterId,
4317
- },
4318
- })];
4439
+ case 0:
4440
+ i = 0;
4441
+ _a.label = 1;
4319
4442
  case 1:
4320
- options = _a.sent();
4321
- return [2 /*return*/, options];
4443
+ if (!(i < options.length)) return [3 /*break*/, 6];
4444
+ _a.label = 2;
4445
+ case 2:
4446
+ _a.trys.push([2, 4, , 5]);
4447
+ return [4 /*yield*/, this.filterOptionRepository.delete({ id: options[i].id })];
4448
+ case 3:
4449
+ _a.sent();
4450
+ return [3 /*break*/, 5];
4451
+ case 4:
4452
+ error_3 = _a.sent();
4453
+ console.log(error_3);
4454
+ return [3 /*break*/, 5];
4455
+ case 5:
4456
+ i++;
4457
+ return [3 /*break*/, 1];
4458
+ case 6: return [2 /*return*/];
4322
4459
  }
4323
4460
  });
4324
4461
  });
4325
4462
  };
4463
+ return FilterHasuraGraphQLRepository;
4464
+ }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4465
+
4466
+ var FilterOptionHasuraGraphQLRepository = /** @class */ (function (_super) {
4467
+ __extends(FilterOptionHasuraGraphQLRepository, _super);
4468
+ function FilterOptionHasuraGraphQLRepository(endpoint, authOptions) {
4469
+ return _super.call(this, {
4470
+ tableName: 'filter_option',
4471
+ model: FilterOption,
4472
+ endpoint: endpoint,
4473
+ authOptions: authOptions,
4474
+ fields: [
4475
+ 'id',
4476
+ 'description',
4477
+ { filterId: { columnName: 'filter_id' } },
4478
+ { createdAt: { columnName: 'created_at' } },
4479
+ { updatedAt: { columnName: 'updated_at' } },
4480
+ ],
4481
+ }) || this;
4482
+ }
4326
4483
  return FilterOptionHasuraGraphQLRepository;
4327
4484
  }(withCrudHasuraGraphQL(withHasuraGraphQL(Base))));
4328
4485
 
@@ -5194,10 +5351,6 @@
5194
5351
  enumerable: true,
5195
5352
  get: function () { return lodash.chunk; }
5196
5353
  });
5197
- Object.defineProperty(exports, 'difference', {
5198
- enumerable: true,
5199
- get: function () { return lodash.difference; }
5200
- });
5201
5354
  Object.defineProperty(exports, 'isBoolean', {
5202
5355
  enumerable: true,
5203
5356
  get: function () { return lodash.isBoolean; }
@@ -5261,6 +5414,8 @@
5261
5414
  exports.Buy2Win = Buy2Win;
5262
5415
  exports.Buy2WinFirestoreRepository = Buy2WinFirestoreRepository;
5263
5416
  exports.Category = Category;
5417
+ exports.CategoryFilter = CategoryFilter;
5418
+ exports.CategoryFilterHasuraGraphQLRepository = CategoryFilterHasuraGraphQLRepository;
5264
5419
  exports.CategoryFirestoreRepository = CategoryFirestoreRepository;
5265
5420
  exports.CategoryHasuraGraphQL = CategoryHasuraGraphQL;
5266
5421
  exports.CategoryHasuraGraphQLRepository = CategoryHasuraGraphQLRepository;
@@ -5273,10 +5428,8 @@
5273
5428
  exports.DuplicatedResultsError = DuplicatedResultsError;
5274
5429
  exports.Edition = Edition;
5275
5430
  exports.Filter = Filter;
5276
- exports.FilterHasuraGraphQL = FilterHasuraGraphQL;
5277
5431
  exports.FilterHasuraGraphQLRepository = FilterHasuraGraphQLRepository;
5278
5432
  exports.FilterOption = FilterOption;
5279
- exports.FilterOptionHasuraGraphQL = FilterOptionHasuraGraphQL;
5280
5433
  exports.FilterOptionHasuraGraphQLRepository = FilterOptionHasuraGraphQLRepository;
5281
5434
  exports.Home = Home;
5282
5435
  exports.HomeFirestoreRepository = HomeFirestoreRepository;