From e05aac7622414ad3444670d2dbed21a04239d70b Mon Sep 17 00:00:00 2001 From: maneokc Date: Tue, 28 Oct 2025 17:15:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B0=9C=EB=B3=84=20=EB=8B=A4=EA=B5=AD?= =?UTF-8?q?=EC=96=B4=ED=8C=8C=EC=9D=BC=20=ED=98=B8=EC=B6=9C=20composables?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/composables/useGetMultilingual.ts | 59 ++++++++++++++++++++++++ layers/types/MultilingualType.ts | 58 +++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 layers/composables/useGetMultilingual.ts create mode 100644 layers/types/MultilingualType.ts diff --git a/layers/composables/useGetMultilingual.ts b/layers/composables/useGetMultilingual.ts new file mode 100644 index 0000000..4de5d8b --- /dev/null +++ b/layers/composables/useGetMultilingual.ts @@ -0,0 +1,59 @@ +import type { + ReqGetMultilingual, + ResGetMultilingual, +} from '#layers/types/MultilingualType' + +/** + * 공통 - 다국어 조회 + * + * @param {ReqGetMultilingual} req + */ +export const useGetMultilingual = async (req: ReqGetMultilingual) => { + let res: ResGetMultilingual + try { + const baseApiUrl = req.baseApiUrl ?? '' + const fileName = req.fileName ?? '' + const timestamp = new Date().getTime() + const serviceType = 'multilingual' + const url = `${baseApiUrl}/${serviceType}/${fileName}?${timestamp}` + + let data: Record = (await commonFetch('GET', url)) as { + gnb?: object[] + } + + if (data != null) { + // locale 소문자 처리 + const lowerCasedResult: Record = {} + Object.keys(data).forEach(key => { + lowerCasedResult[key.toLowerCase()] = data[key] + }) + data = lowerCasedResult + + res = { + code: 0, + message: 'OK', + value: { + multilingual: (data as Map) || {}, + }, + } + } else { + res = { + code: 404, + message: 'Not Found', + value: { + multilingual: {}, + }, + } + } + } catch (e) { + console.error('[Exception] useGetDataResources.useGetMultilingual: ', e) + res = { + code: 500, + message: 'error', + value: { + multilingual: {}, + }, + } + } + return res +} diff --git a/layers/types/MultilingualType.ts b/layers/types/MultilingualType.ts new file mode 100644 index 0000000..504a5f0 --- /dev/null +++ b/layers/types/MultilingualType.ts @@ -0,0 +1,58 @@ +interface MultilingualMetaType { + gameId: string + metaNo: number + metaType?: string + metaCode?: string + metaValue?: number + metaName?: string + metaOption?: string + metaDesc?: string + refMetaNo?: number + sort?: number + status?: boolean +} + +interface MultilingualCategoryType { + transCategory: string + multilingualNo: number + startDate: Date + endDate: Date + title?: string + description?: string + status: boolean + categoryType?: MultilingualMetaType + categoryVersion?: MultilingualMetaType + sort: number +} + +interface MultilingualType { + multilingualNo: number + gameId: string + transCategory: string + transCode: string + designFont: boolean + sort: number +} + +// [API] Req / Res ----- +interface ReqGetMultilingual { + baseApiUrl: string + fileName?: string +} + +interface ResGetMultilingual { + code?: number + message?: string + value: { + multilingual?: object + } +} + +export type { + MultilingualMetaType, + MultilingualCategoryType, + MultilingualType, + // Api Req / Res ----- + ReqGetMultilingual, + ResGetMultilingual, +}