CREATE OR REPLACE PROCEDURE UNIVCOOP_DEV.PROC_TABLE_TO_CONTROLLER
(
V_TABLE_NAME IN VARCHAR2,
V_BASE_URL IN VARCHAR2,
SQL_DESC OUT VARCHAR2
)
IS
V_BASE_CLASS VARCHAR(20) := '';
V_TABLE_COMMENT VARCHAR(50) := '';
BEGIN
SQL_DESC := '';
SELECT B.COMMENTS INTO V_TABLE_COMMENT
FROM ALL_TABLES A, ALL_TAB_COMMENTS B
WHERE A.TABLE_NAME = B.TABLE_NAME
AND A.TABLE_NAME = V_TABLE_NAME
ORDER BY A.TABLE_NAME;
SELECT REPLACE(INITCAP( V_TABLE_NAME ),'_','') INTO V_BASE_CLASS FROM DUAL;
SQL_DESC := SQL_DESC || '/** ' || V_BASE_CLASS || 'Controller */';
SQL_DESC := SQL_DESC || '@Api(tags = { "' || V_TABLE_COMMENT || '" }, value = "' || V_BASE_CLASS || 'Controller")' || CHR(13);
SQL_DESC := SQL_DESC || '@Slf4j' || CHR(13);
SQL_DESC := SQL_DESC || '@RequestMapping("' || V_BASE_URL || '/")' || CHR(13);
SQL_DESC := SQL_DESC || '@RestController' || CHR(13);
SQL_DESC := SQL_DESC || 'public class ' || V_BASE_CLASS || 'Controller implements BossDBController<' || V_BASE_CLASS || 'DtoReq, ' || V_BASE_CLASS || 'Dto> {' || CHR(13);
SQL_DESC := SQL_DESC || ' private final ' || V_BASE_CLASS || 'Service service;' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || ' public ' || V_BASE_CLASS || 'Controller(' || V_BASE_CLASS || 'Service service) {' || CHR(13);
SQL_DESC := SQL_DESC || ' this.service = service;' || CHR(13);
SQL_DESC := SQL_DESC || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || ' @ApiOperation(value = "' || V_TABLE_COMMENT || ' 조회 ", notes = "' || V_TABLE_COMMENT || ' 조회입니다.")' || CHR(13);
SQL_DESC := SQL_DESC || ' @PostMapping("getList")' || CHR(13);
SQL_DESC := SQL_DESC || ' public BossResponseEntityList<' || V_BASE_CLASS || 'Dto> getList(@RequestBody ' || V_BASE_CLASS || 'DtoReq req) throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || ' Global.getLogInfo().info(log, "' || V_TABLE_COMMENT || ' 조회" , "' || V_BASE_URL || 'getList >>> " + req);' || CHR(13);
SQL_DESC := SQL_DESC || ' return new BossResponseEntityList(service.getList(req), HttpStatus.OK);' || CHR(13);
SQL_DESC := SQL_DESC || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || ' @ApiOperation(value = "' || V_TABLE_COMMENT || ' 저장 ", notes = "' || V_TABLE_COMMENT || ' 저장입니다.")' || CHR(13);
SQL_DESC := SQL_DESC || ' @PostMapping("insert")' || CHR(13);
SQL_DESC := SQL_DESC || ' @Override' || CHR(13);
SQL_DESC := SQL_DESC || ' public BossResponseEntityData<ApiDto> insert(@RequestBody ' || V_BASE_CLASS || 'Dto data) throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || ' Global.getLogInfo().info(log, "' || V_TABLE_COMMENT || ' 저장" , "' || V_BASE_URL || 'insert >>> " + data);' || CHR(13);
SQL_DESC := SQL_DESC || ' return new BossResponseEntityData(service.insert(data), HttpStatus.OK);' || CHR(13);
SQL_DESC := SQL_DESC || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || ' @ApiOperation(value = "' || V_TABLE_COMMENT || ' 수정 ", notes = "' || V_TABLE_COMMENT || ' 수정입니다.")' || CHR(13);
SQL_DESC := SQL_DESC || ' @PostMapping("update")' || CHR(13);
SQL_DESC := SQL_DESC || ' @Override' || CHR(13);
SQL_DESC := SQL_DESC || ' public BossResponseEntityData<ApiDto> update(@RequestBody ' || V_BASE_CLASS || 'Dto data) throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || ' Global.getLogInfo().info(log, "' || V_TABLE_COMMENT || ' 수정" , "' || V_BASE_URL || 'update >>> " + data);' || CHR(13);
SQL_DESC := SQL_DESC || ' return new BossResponseEntityData(service.update(data), HttpStatus.OK);' || CHR(13);
SQL_DESC := SQL_DESC || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || ' @ApiOperation(value = "' || V_TABLE_COMMENT || ' 삭제 ", notes = "' || V_TABLE_COMMENT || ' 삭제입니다.")' || CHR(13);
SQL_DESC := SQL_DESC || ' @PostMapping("delete")' || CHR(13);
SQL_DESC := SQL_DESC || ' @Override' || CHR(13);
SQL_DESC := SQL_DESC || ' public BossResponseEntityData<ApiDto> delete(@RequestBody ' || V_BASE_CLASS || 'DtoReq req) throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || ' Global.getLogInfo().info(log, "' || V_TABLE_COMMENT || ' 삭제" , "' || V_BASE_URL || 'delete >>> " + req);' || CHR(13);
SQL_DESC := SQL_DESC || ' return new BossResponseEntityData(service.delete(req), HttpStatus.OK);' || CHR(13);
SQL_DESC := SQL_DESC || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '}' || CHR(13);
END;