@infrab4a/connect 4.3.10-beta.1 → 4.3.10-beta.2

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.
package/index.cjs.js CHANGED
@@ -3169,6 +3169,9 @@ class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFires
3169
3169
  });
3170
3170
  this.reviews = {};
3171
3171
  }
3172
+ fetchProductReviews(filters) {
3173
+ throw new Error('Method not implemented.');
3174
+ }
3172
3175
  async getBySlug(slug) {
3173
3176
  var _a;
3174
3177
  const result = await this.find({
@@ -3210,6 +3213,9 @@ class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFires
3210
3213
  findCatalog(params) {
3211
3214
  return this.find(params);
3212
3215
  }
3216
+ async fetchPaginatedReviews() {
3217
+ return Promise.resolve([]);
3218
+ }
3213
3219
  }
3214
3220
 
3215
3221
  class ProductVariantFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
@@ -5066,6 +5072,30 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
5066
5072
  product.metadata = metadata && (await this.updateMetadata(+id, { metadata }));
5067
5073
  return product;
5068
5074
  }
5075
+ async fetchProductReviews() {
5076
+ let data = [];
5077
+ let count = 0;
5078
+ let offset = 0;
5079
+ const limit = 500;
5080
+ do {
5081
+ const result = await super.find(Object.assign({ fields: ['id', 'name', 'sku', 'reviews'] }, ({
5082
+ limits: {
5083
+ offset,
5084
+ limit,
5085
+ },
5086
+ })));
5087
+ data = data.concat(result.data);
5088
+ count = result.data.length;
5089
+ offset += limit;
5090
+ } while (count === limit);
5091
+ return data.reduce((reviews, product) => [
5092
+ ...reviews,
5093
+ ...product.reviews.map((review) => (Object.assign(Object.assign({}, review), { reviewStatus: this.getReviewStatus(review), productId: product.id, productName: product.name, productSku: product.sku }))),
5094
+ ], []);
5095
+ }
5096
+ getReviewStatus(review) {
5097
+ return review.status === true ? 'approved' : review.status === false ? 'rejected' : 'pending';
5098
+ }
5069
5099
  async fetchReviews(status) {
5070
5100
  const reviewsExpression = {
5071
5101
  status: status === 'pending'
package/index.esm.js CHANGED
@@ -3163,6 +3163,9 @@ class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFires
3163
3163
  });
3164
3164
  this.reviews = {};
3165
3165
  }
3166
+ fetchProductReviews(filters) {
3167
+ throw new Error('Method not implemented.');
3168
+ }
3166
3169
  async getBySlug(slug) {
3167
3170
  var _a;
3168
3171
  const result = await this.find({
@@ -3204,6 +3207,9 @@ class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFires
3204
3207
  findCatalog(params) {
3205
3208
  return this.find(params);
3206
3209
  }
3210
+ async fetchPaginatedReviews() {
3211
+ return Promise.resolve([]);
3212
+ }
3207
3213
  }
3208
3214
 
3209
3215
  class ProductVariantFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
@@ -5060,6 +5066,30 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
5060
5066
  product.metadata = metadata && (await this.updateMetadata(+id, { metadata }));
5061
5067
  return product;
5062
5068
  }
5069
+ async fetchProductReviews() {
5070
+ let data = [];
5071
+ let count = 0;
5072
+ let offset = 0;
5073
+ const limit = 500;
5074
+ do {
5075
+ const result = await super.find(Object.assign({ fields: ['id', 'name', 'sku', 'reviews'] }, ({
5076
+ limits: {
5077
+ offset,
5078
+ limit,
5079
+ },
5080
+ })));
5081
+ data = data.concat(result.data);
5082
+ count = result.data.length;
5083
+ offset += limit;
5084
+ } while (count === limit);
5085
+ return data.reduce((reviews, product) => [
5086
+ ...reviews,
5087
+ ...product.reviews.map((review) => (Object.assign(Object.assign({}, review), { reviewStatus: this.getReviewStatus(review), productId: product.id, productName: product.name, productSku: product.sku }))),
5088
+ ], []);
5089
+ }
5090
+ getReviewStatus(review) {
5091
+ return review.status === true ? 'approved' : review.status === false ? 'rejected' : 'pending';
5092
+ }
5063
5093
  async fetchReviews(status) {
5064
5094
  const reviewsExpression = {
5065
5095
  status: status === 'pending'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infrab4a/connect",
3
- "version": "4.3.10-beta.1",
3
+ "version": "4.3.10-beta.2",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -6,10 +6,23 @@ export type ReviewWithProductData = ProductReview & {
6
6
  productId: string;
7
7
  productName: string;
8
8
  productSku: string;
9
+ reviewStatus?: 'pending' | 'approved' | 'rejected';
10
+ };
11
+ export type PaginatedReviewFilters = {
12
+ sku?: string;
13
+ status: ReviewStatusParams;
14
+ email?: string;
15
+ rate?: number;
16
+ period?: {
17
+ start: Date;
18
+ end: Date;
19
+ };
20
+ limit?: number;
9
21
  };
10
22
  export interface ProductRepository extends CrudRepository<Product> {
11
23
  getBySlug(slug: string): Promise<Product>;
12
24
  fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]>;
25
+ fetchProductReviews(filters: PaginatedReviewFilters): Promise<ReviewWithProductData[]>;
13
26
  cleanShoppingCountFromIds(ids: string[]): Promise<any>;
14
27
  findCatalog(params: FindRepositoryParams<Product>, mainGender?: Extract<ProductGender, 'female' | 'male' | 'unisex'>): Promise<RepositoryFindResult<Product>>;
15
28
  }
@@ -1,12 +1,14 @@
1
- import { FindRepositoryParams, Product, ProductRepository, RepositoryFindResult, ReviewStatusParams, ReviewWithProductData } from '../../../../../domain';
1
+ import { FindRepositoryParams, PaginatedReviewFilters, Product, ProductRepository, RepositoryFindResult, ReviewStatusParams, ReviewWithProductData } from '../../../../../domain';
2
2
  import { FirestoreConstructorParams } from '../../mixins';
3
3
  declare const ProductFirestoreRepository_base: import("../../../../../utils").MixinCtor<import("../..").FirestoreRepository<Product> & import("../../../../../domain").CrudRepository<Product, import("../../../../../domain").CrudParams<Product>> & import("../..").FirestoreHelpers, [FirestoreConstructorParams<Product>, ...any[]]>;
4
4
  export declare class ProductFirestoreRepository extends ProductFirestoreRepository_base implements ProductRepository {
5
5
  private reviews;
6
6
  constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Product>, 'firestore' | 'interceptors'>);
7
+ fetchProductReviews(filters: PaginatedReviewFilters): Promise<ReviewWithProductData[]>;
7
8
  getBySlug(slug: string): Promise<Product>;
8
9
  fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]>;
9
10
  cleanShoppingCountFromIds(): Promise<void>;
10
11
  findCatalog(params: FindRepositoryParams<Product>): Promise<RepositoryFindResult<Product>>;
12
+ fetchPaginatedReviews(): Promise<ReviewWithProductData[]>;
11
13
  }
12
14
  export {};
@@ -12,6 +12,8 @@ export declare class ProductHasuraGraphQLRepository extends ProductHasuraGraphQL
12
12
  find(params?: FindRepositoryParams<ProductHasuraGraphQL>): Promise<RepositoryFindResult<ProductHasuraGraphQL>>;
13
13
  getBySlug(slug: string): Promise<ProductHasuraGraphQL>;
14
14
  update(params: UpdateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL>;
15
+ fetchProductReviews(): Promise<ReviewWithProductData[]>;
16
+ private getReviewStatus;
15
17
  fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]>;
16
18
  findCatalog(params: FindRepositoryParams<ProductHasuraGraphQL>, mainGender?: Extract<ProductGender, 'female' | 'male'>): Promise<RepositoryFindResult<ProductHasuraGraphQL>>;
17
19
  private updateCategories;