@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
74 lines • 2.67 kB
TypeScript
import type { UseMutationResult } from "@tanstack/react-query";
import type { QueryResult, ReadResultBase, SuspenseQueryResult, SuspenseResultBase } from "../shared/hook-result-types";
import type { MutationOptions } from "../shared/hook-types";
import type { QueryKey } from "../shared/query-keys";
export type ReviewCustomerBase = {
first_name?: null | string;
last_name?: null | string;
};
export type ReviewBase = {
content: string;
created_at?: string;
customer?: null | ReviewCustomerBase;
id: string;
rating: number;
title: string;
};
export type ReviewSummary = {
average_rating: number;
count: number;
};
export type ProductReviewListInputBase = {
productId?: string;
limit?: number;
offset?: number;
page?: number;
enabled?: boolean;
};
export type ProductReviewListResponse<TReview> = {
count: number;
limit: number;
offset: number;
reviews: TReview[];
summary: ReviewSummary;
};
export type CreateProductReviewInput = {
content: string;
first_name?: string;
last_name?: string;
name?: string;
product_id: string;
rating: number;
review_token?: string;
title?: string;
turnstileToken?: string;
};
export type ProductReviewService<TReview, TListParams, TCreateInput extends CreateProductReviewInput = CreateProductReviewInput> = {
listProductReviews: (params: TListParams, signal?: AbortSignal) => Promise<ProductReviewListResponse<TReview>>;
createProductReview: (input: TCreateInput) => Promise<TReview>;
};
export type ProductReviewQueryKeys<TListParams> = {
all: () => QueryKey;
productList: (params: TListParams) => QueryKey;
};
export type UseProductReviewsResult<TReview> = ReadResultBase<QueryResult<ProductReviewListResponse<TReview>>> & {
currentPage: number;
hasNextPage: boolean;
hasPrevPage: boolean;
reviews: TReview[];
summary: ReviewSummary;
totalCount: number;
totalPages: number;
};
export type UseSuspenseProductReviewsResult<TReview> = SuspenseResultBase<SuspenseQueryResult<ProductReviewListResponse<TReview>>> & {
currentPage: number;
hasNextPage: boolean;
hasPrevPage: boolean;
reviews: TReview[];
summary: ReviewSummary;
totalCount: number;
totalPages: number;
};
export type ProductReviewMutationOptions<TReview, TCreateInput extends CreateProductReviewInput, TContext = unknown> = MutationOptions<TReview, TCreateInput, TContext>;
export type UseCreateProductReviewResult<TReview, TCreateInput extends CreateProductReviewInput, TContext = unknown> = UseMutationResult<TReview, unknown, TCreateInput, TContext>;
//# sourceMappingURL=types.d.ts.map