feat: 개별 다국어파일 호출 composables 추가
This commit is contained in:
59
layers/composables/useGetMultilingual.ts
Normal file
59
layers/composables/useGetMultilingual.ts
Normal file
@@ -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<string, any> = (await commonFetch('GET', url)) as {
|
||||||
|
gnb?: object[]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data != null) {
|
||||||
|
// locale 소문자 처리
|
||||||
|
const lowerCasedResult: Record<string, any> = {}
|
||||||
|
Object.keys(data).forEach(key => {
|
||||||
|
lowerCasedResult[key.toLowerCase()] = data[key]
|
||||||
|
})
|
||||||
|
data = lowerCasedResult
|
||||||
|
|
||||||
|
res = {
|
||||||
|
code: 0,
|
||||||
|
message: 'OK',
|
||||||
|
value: {
|
||||||
|
multilingual: (data as Map<string, object>) || {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
} 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
|
||||||
|
}
|
||||||
58
layers/types/MultilingualType.ts
Normal file
58
layers/types/MultilingualType.ts
Normal file
@@ -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,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user