From 7bdca9999f09e4ab2d9a7917e2fcd63f3d37d22d Mon Sep 17 00:00:00 2001 From: LeeWxx <dnckd0903@naver.com> Date: Mon, 2 Dec 2024 00:15:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20partRepository=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/repositories/partRepository.js | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/repositories/partRepository.js b/src/repositories/partRepository.js index 43f5c04..e5553f0 100644 --- a/src/repositories/partRepository.js +++ b/src/repositories/partRepository.js @@ -17,6 +17,45 @@ const PartRepository = { const [info] = resp.rows; return info; }, + async getColumnsByType(type) { + const resp = await pool.query( + ` + SELECT column_name + FROM information_schema.columns + WHERE table_name = $1 + ORDER BY ordinal_position; + `, + [`part_info_${type}`.toLowerCase()] + ); + return resp.rows.map((row) => row.column_name); + }, + + async getFilterDataByTypeAndColumn(type, column) { + const query = ` + SELECT DISTINCT ${column} + FROM part_info_${type} + WHERE ${column} IS NOT NULL + ORDER BY ${column} + `; + const resp = await pool.query(query); + return resp.rows.map((row) => row[column]); + }, + + async getPartsByFilters(partType, whereClauses, queryValues) { + const query = ` + SELECT + parts.id AS partId, + parts.name, + parts.image_url + FROM part_info_${partType.toLowerCase()} + INNER JOIN parts + ON part_info_${partType.toLowerCase()}.part_id = parts.id + ${whereClauses ? `WHERE ${whereClauses}` : ''} + LIMIT 20; +`; + const result = await pool.query(query, queryValues); + return result.rows; + }, }; export default PartRepository; -- GitLab