summaryrefslogtreecommitdiff
path: root/src-migrate/services/product.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src-migrate/services/product.ts')
-rw-r--r--src-migrate/services/product.ts52
1 files changed, 52 insertions, 0 deletions
diff --git a/src-migrate/services/product.ts b/src-migrate/services/product.ts
index 77b645f0..fa9dae54 100644
--- a/src-migrate/services/product.ts
+++ b/src-migrate/services/product.ts
@@ -64,3 +64,55 @@ export const getProductCategoryBreadcrumb = async (
): Promise<ICategoryBreadcrumb[]> => {
return await odooApi('GET', `/api/v1/product/${id}/category-breadcrumb`);
};
+
+// =================================================================
+// TAMBAHAN BARU: SERVICE FETCH BY LIST ID (UNTUK UPSELL/RELATED)
+// =================================================================
+
+export interface GetProductsByIdsProps {
+ ids: number[];
+}
+
+export const getProductsByIds = async ({
+ ids,
+}: GetProductsByIdsProps): Promise<GetProductSimilarRes> => {
+ if (!ids || ids.length === 0) {
+ return { products: [], num_found: 0, num_found_exact: true, start: 0 };
+ }
+
+ const idQuery = ids.join(' OR ');
+
+ const query = [
+ `q=*`,
+ `fq=(id:(${idQuery}) OR product_id_i:(${idQuery}))`,
+ 'rows=20',
+ `source=upsell`,
+ ];
+
+ const url = `${SELF_HOST}/api/shop/search?${query.join('&')}`;
+
+ // Request
+ const res = await fetch(url).then((res) => res.json());
+
+ // LOG 2: Hasil Pencarian SOLR
+ console.group("🔍 2. [Solr Search Result]");
+ console.log("Request URL:", url);
+ console.log("Requested IDs:", ids);
+
+ const foundDocs = res.response?.docs || [];
+ const foundIds = foundDocs.map((doc: any) => doc.id || doc.product_id_i);
+
+ console.log("Found Products Count:", res.response?.numFound);
+ console.log("Found IDs:", foundIds);
+
+ // Cek ID mana yang hilang
+ const missingIds = ids.filter((reqId) => !foundIds.includes(String(reqId)) && !foundIds.includes(Number(reqId)));
+ if (missingIds.length > 0) {
+ console.warn("⚠️ MISSING / NOT FOUND IDs:", missingIds);
+ } else {
+ console.log("✅ All IDs Found!");
+ }
+ console.groupEnd();
+
+ return snakeCase(res.response);
+}; \ No newline at end of file