package com.tqdev.crudapi.controller; import com.tqdev.crudapi.column.ColumnService; import com.tqdev.crudapi.column.reflection.ReflectedTable; import com.tqdev.crudapi.record.ErrorCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/columns") public class ColumnController { public static final Logger logger = LoggerFactory.getLogger(ColumnController.class); @Autowired Responder responder; @Autowired ColumnService service; @RequestMapping(value = "/", method = RequestMethod.GET) public ResponseEntity<?> getDatabase() { logger.info("Requesting columns meta data"); return responder.success(service.getDatabaseDefinition()); } @RequestMapping(value = "/{table}", method = RequestMethod.GET) public ResponseEntity<?> getTable(@PathVariable("table") String tableName) { logger.info("Requesting columns meta data"); if (!service.hasTable(tableName)) { return responder.error(ErrorCode.TABLE_NOT_FOUND, tableName); } return responder.success(service.getDatabaseDefinition().get(tableName)); } @RequestMapping(value = "/{table}/{column}", method = RequestMethod.GET) public ResponseEntity<?> getColumn(@PathVariable("table") String tableName, @PathVariable("column") String columnName) { logger.info("Requesting columns meta data"); if (!service.hasTable(tableName)) { return responder.error(ErrorCode.TABLE_NOT_FOUND, tableName); } ReflectedTable table = service.getTable(tableName); if (!table.exists(columnName)) { return responder.error(ErrorCode.COLUMN_NOT_FOUND, columnName); } return responder.success(table.get(columnName)); } }