summaryrefslogtreecommitdiff
path: root/lib/items/service.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-08-13 11:05:09 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-08-13 11:05:09 +0000
commit33be47506f0aa62b969d82521580a29e95080268 (patch)
tree6b7e232f2d78ef8775944ea085a36b3ccbce7d95 /lib/items/service.ts
parent2ac95090157c355ea1bd0b8eb1e1e5e2bd56faf4 (diff)
(대표님) 입찰, 법무검토, EDP 변경사항 대응, dolce 개선, form-data 개선, 정규업체 등록관리 추가
(최겸) pq 미사용 컴포넌트 및 페이지 제거, 파일 라우트에 pq 적용
Diffstat (limited to 'lib/items/service.ts')
-rw-r--r--lib/items/service.ts42
1 files changed, 41 insertions, 1 deletions
diff --git a/lib/items/service.ts b/lib/items/service.ts
index 1b6d7e09..1eab3e25 100644
--- a/lib/items/service.ts
+++ b/lib/items/service.ts
@@ -9,7 +9,7 @@ import { filterColumns } from "@/lib/filter-columns";
import { unstable_cache } from "@/lib/unstable-cache";
import { getErrorMessage } from "@/lib/handle-error";
-import { asc, desc, ilike, inArray, and, gte, lte, not, or ,eq} from "drizzle-orm";
+import { asc, desc, ilike, inArray, and, gte, lte, not, or, eq, isNull, ne, gt } from "drizzle-orm";
import { CreateItemSchema, GetItemsSchema, UpdateItemSchema } from "./validations";
import { Item, items } from "@/db/schema/items";
import { countItems, deleteItemById, deleteItemsByIds, findAllItems, insertItem, selectItems, updateItem } from "./repository";
@@ -417,3 +417,43 @@ export async function getAllItems(): Promise<Item[]> {
throw new Error("Failed to get items");
}
}
+
+// PQ용 아이템 검색 함수
+export async function searchItemsForPQ(query: string): Promise<{ itemCode: string; itemName: string }[]> {
+ unstable_noStore();
+
+ try {
+ if (!query || query.trim().length < 1) {
+ return [];
+ }
+
+ const searchQuery = `%${query.trim()}%`;
+
+ const results = await db
+ .select({
+ itemCode: items.itemCode,
+ itemName: items.itemName,
+ })
+ .from(items)
+ .where(
+ and(
+ or(
+ ilike(items.itemCode, searchQuery),
+ ilike(items.itemName, searchQuery)
+ ),
+ // 삭제되지 않은 아이템만
+ or(
+ isNull(items.deleteFlag),
+ ne(items.deleteFlag, 'Y')
+ )
+ )
+ )
+ .limit(20) // 최대 20개 결과만 반환
+ .orderBy(asc(items.itemCode));
+
+ return results;
+ } catch (err) {
+ console.error("PQ 아이템 검색 오류:", err);
+ return [];
+ }
+}