diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-08-13 11:05:09 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-08-13 11:05:09 +0000 |
| commit | 33be47506f0aa62b969d82521580a29e95080268 (patch) | |
| tree | 6b7e232f2d78ef8775944ea085a36b3ccbce7d95 /lib/items | |
| parent | 2ac95090157c355ea1bd0b8eb1e1e5e2bd56faf4 (diff) | |
(대표님) 입찰, 법무검토, EDP 변경사항 대응, dolce 개선, form-data 개선, 정규업체 등록관리 추가
(최겸) pq 미사용 컴포넌트 및 페이지 제거, 파일 라우트에 pq 적용
Diffstat (limited to 'lib/items')
| -rw-r--r-- | lib/items/service.ts | 42 |
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 []; + } +} |
