Files
SR-SYSTEM/backend/src/main/java/com/srsystem/controller/SystemConfigController.java
T

63 lines
2.2 KiB
Java

package com.srsystem.controller;
import com.srsystem.entity.SystemConfig;
import com.srsystem.repository.SystemConfigRepository;
import com.srsystem.dto.ApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/v1/admin/config")
@PreAuthorize("hasRole('ADMIN')")
@RequiredArgsConstructor
public class SystemConfigController {
private final SystemConfigRepository repository;
@GetMapping
public ApiResponse<List<SystemConfig>> getAll() {
return ApiResponse.ok(repository.findAll());
}
@GetMapping("/{key}")
public ApiResponse<SystemConfig> getByKey(@PathVariable String key) {
return repository.findByConfigKey(key)
.map(ApiResponse::ok)
.orElse(ApiResponse.error("설정을 찾을 수 없습니다: " + key));
}
@PutMapping("/{key}")
public ApiResponse<SystemConfig> update(@PathVariable String key, @RequestBody Map<String, String> body) {
String value = body.get("configValue");
if (value == null) {
return ApiResponse.error("configValue가 필요합니다.");
}
SystemConfig config = repository.findByConfigKey(key).orElse(null);
if (config == null) {
config = SystemConfig.builder().configKey(key).createdAt(LocalDateTime.now()).build();
}
config.setConfigValue(value);
config.setUpdatedAt(LocalDateTime.now());
return ApiResponse.ok(repository.save(config));
}
@PutMapping("/batch")
public ApiResponse<List<SystemConfig>> batchUpdate(@RequestBody Map<String, String> entries) {
entries.forEach((k, v) -> {
SystemConfig config = repository.findByConfigKey(k).orElse(null);
if (config == null) {
config = SystemConfig.builder().configKey(k).createdAt(LocalDateTime.now()).build();
}
config.setConfigValue(v);
config.setUpdatedAt(LocalDateTime.now());
repository.save(config);
});
return ApiResponse.ok(repository.findAll());
}
}