Compare commits
1 Commits
develop/fo
...
d82afe5a5f
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d82afe5a5f |
@@ -3,11 +3,11 @@ import type { NextRequest } from 'next/server';
|
||||
import { logger } from 'src/utils/logger';
|
||||
import { STATUS, response, handleError } from 'src/utils/response';
|
||||
|
||||
import { _products } from 'src/_mock/_product';
|
||||
import { getProductBySkuOrName } from 'src/app/services/product.service';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
export const runtime = 'edge';
|
||||
// export const runtime = 'edge';
|
||||
|
||||
/** **************************************
|
||||
* GET - Search products
|
||||
@@ -21,14 +21,11 @@ export async function GET(req: NextRequest) {
|
||||
return response({ results: [] }, STATUS.OK);
|
||||
}
|
||||
|
||||
const products = _products();
|
||||
const testResult = await getProductBySkuOrName(query);
|
||||
|
||||
// Accept search by name or sku
|
||||
const results = products.filter(({ name, sku }) => name.toLowerCase().includes(query) || sku?.toLowerCase().includes(query));
|
||||
logger('[Product] search-results', testResult?.length);
|
||||
|
||||
logger('[Product] search-results', results.length);
|
||||
|
||||
return response({ results }, STATUS.OK);
|
||||
return response({ testResult }, STATUS.OK);
|
||||
} catch (error) {
|
||||
return handleError('Product - Get search', error);
|
||||
}
|
||||
|
@@ -0,0 +1,5 @@
|
||||
###
|
||||
GET http://localhost:7272/api/product/search?query=B
|
||||
|
||||
###
|
||||
GET http://localhost:7272/api/product/search?query=Classic
|
@@ -68,9 +68,7 @@ type UpdateProduct = {
|
||||
|
||||
async function listProducts(): Promise<ProductItem[]> {
|
||||
return prisma.productItem.findMany({
|
||||
include: {
|
||||
reviews: true,
|
||||
},
|
||||
include: { reviews: true },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -82,6 +80,14 @@ async function getProduct(productId: string): Promise<ProductItem | null> {
|
||||
});
|
||||
}
|
||||
|
||||
async function getProductBySkuOrName(searchText: string): Promise<ProductItem[] | null> {
|
||||
return prisma.productItem.findMany({
|
||||
where: { OR: [{ sku: { contains: searchText, mode: 'insensitive' } }, { name: { contains: searchText, mode: 'insensitive' } }] },
|
||||
include: { reviews: true },
|
||||
//
|
||||
});
|
||||
}
|
||||
|
||||
async function createProduct(productData: any) {
|
||||
return await prisma.productItem.create({ data: productData });
|
||||
}
|
||||
@@ -97,4 +103,4 @@ async function deleteProduct(productId: string) {
|
||||
return prisma.productItem.delete({ where: { id: productId } });
|
||||
}
|
||||
|
||||
export { getProduct, listProducts, createProduct, updateProduct, deleteProduct, type CreateProduct, type UpdateProduct };
|
||||
export { getProduct, listProducts, createProduct, updateProduct, deleteProduct, getProductBySkuOrName, type CreateProduct, type UpdateProduct };
|
||||
|
Reference in New Issue
Block a user