공통 테이블에 대한 상수 처리
공통 테이블의 값을 상수로 변환해는 방식을 고민 하다 SQL을 이용해서 처리해 보았습니다.
테이블 구조
-- bemypet.cmm_code_m definition
CREATE TABLE `cmm_code_m` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`reg_sytm_nm` varchar(100) NOT NULL COMMENT '등록시스템명',
`mod_sytm_nm` varchar(100) NOT NULL COMMENT '수정시스템명',
`cmm_grp_cd` varchar(50) DEFAULT NULL COMMENT '공통그룹코드',
`cmm_cd_nm` varchar(100) DEFAULT NULL COMMENT '공통코드명',
`cmm_cd_val` varchar(300) DEFAULT NULL COMMENT '공통코드값',
`reg_dtm` varchar(14) DEFAULT NULL COMMENT '등록일시',
`mod_dtm` varchar(14) DEFAULT NULL COMMENT '수정일시',
`upr_cmm_grp_cd` varchar(50) DEFAULT NULL COMMENT '상위공통그룹코드',
`seq` int DEFAULT NULL COMMENT '순서',
`exps_yn` varchar(1) DEFAULT NULL COMMENT '노출여부',
`adm_admin_m_id` int NOT NULL,
`use_yn` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '사용여부',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cmm_code_m` (`cmm_grp_cd`,`cmm_cd_nm`)
) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COMMENT='공통코드마스터';
위와 같은 구조를 가진 공통 코드 테이블이며, cmm_grp_cd을 변수명으로 { cmm_cd_nm: cmm_cd_val } 형식으로 만들려고 합니다.
SQL
select
concat('export const ', upper(cmm_grp_cd), ' = ', ' {' , group_concat(concat(cmm_cd_nm, ': \'', cmm_cd_nm), ' \' /* ', cmm_cd_val, ' */'), '} as const;' ) from cmm_code_m ccm
group by cmm_grp_cd
위의 SQL을 실행하면 아래와 같은 결과를 확인 할 수 있습니다.
결과
export const ACTV_TCD = {
LIN: 'LIN ' /* 로그인 */,
LOUT: 'LOUT ' /* 로그아웃 */,
TRFS: 'TRFS ' /* 토큰재발급 */,
} as const;
export const PET_DCD = {
CAT: 'CAT ' /* 고양이 */,
DOG: 'DOG ' /* 강아지 */,
} as const;
한줄로 나오는 결과를 포멧팅하였습니다.