feat(admin): show storage policies
This commit is contained in:
@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/admin")
|
||||
@RequiredArgsConstructor
|
||||
@@ -52,6 +54,11 @@ public class AdminController {
|
||||
return ApiResponse.success(adminService.listFiles(page, size, query, ownerQuery));
|
||||
}
|
||||
|
||||
@GetMapping("/storage-policies")
|
||||
public ApiResponse<List<AdminStoragePolicyResponse>> storagePolicies() {
|
||||
return ApiResponse.success(adminService.listStoragePolicies());
|
||||
}
|
||||
|
||||
@DeleteMapping("/files/{fileId}")
|
||||
public ApiResponse<Void> deleteFile(@PathVariable Long fileId) {
|
||||
adminService.deleteFile(fileId);
|
||||
|
||||
@@ -13,6 +13,9 @@ import com.yoyuzh.files.FileBlobRepository;
|
||||
import com.yoyuzh.files.FileService;
|
||||
import com.yoyuzh.files.StoredFile;
|
||||
import com.yoyuzh.files.StoredFileRepository;
|
||||
import com.yoyuzh.files.StoragePolicy;
|
||||
import com.yoyuzh.files.StoragePolicyRepository;
|
||||
import com.yoyuzh.files.StoragePolicyService;
|
||||
import com.yoyuzh.transfer.OfflineTransferSessionRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -40,6 +43,8 @@ public class AdminService {
|
||||
private final RegistrationInviteService registrationInviteService;
|
||||
private final OfflineTransferSessionRepository offlineTransferSessionRepository;
|
||||
private final AdminMetricsService adminMetricsService;
|
||||
private final StoragePolicyRepository storagePolicyRepository;
|
||||
private final StoragePolicyService storagePolicyService;
|
||||
private final SecureRandom secureRandom = new SecureRandom();
|
||||
|
||||
public AdminSummaryResponse getSummary() {
|
||||
@@ -83,6 +88,15 @@ public class AdminService {
|
||||
return new PageResponse<>(items, result.getTotalElements(), page, size);
|
||||
}
|
||||
|
||||
public List<AdminStoragePolicyResponse> listStoragePolicies() {
|
||||
return storagePolicyRepository.findAll(Sort.by(Sort.Direction.DESC, "defaultPolicy")
|
||||
.and(Sort.by(Sort.Direction.DESC, "enabled"))
|
||||
.and(Sort.by(Sort.Direction.ASC, "id")))
|
||||
.stream()
|
||||
.map(this::toStoragePolicyResponse)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteFile(Long fileId) {
|
||||
StoredFile storedFile = storedFileRepository.findById(fileId)
|
||||
@@ -180,6 +194,26 @@ public class AdminService {
|
||||
);
|
||||
}
|
||||
|
||||
private AdminStoragePolicyResponse toStoragePolicyResponse(StoragePolicy policy) {
|
||||
return new AdminStoragePolicyResponse(
|
||||
policy.getId(),
|
||||
policy.getName(),
|
||||
policy.getType(),
|
||||
policy.getBucketName(),
|
||||
policy.getEndpoint(),
|
||||
policy.getRegion(),
|
||||
policy.isPrivateBucket(),
|
||||
policy.getPrefix(),
|
||||
policy.getCredentialMode(),
|
||||
policy.getMaxSizeBytes(),
|
||||
storagePolicyService.readCapabilities(policy),
|
||||
policy.isEnabled(),
|
||||
policy.isDefaultPolicy(),
|
||||
policy.getCreatedAt(),
|
||||
policy.getUpdatedAt()
|
||||
);
|
||||
}
|
||||
|
||||
private User getRequiredUser(Long userId) {
|
||||
return userRepository.findById(userId)
|
||||
.orElseThrow(() -> new BusinessException(ErrorCode.UNKNOWN, "用户不存在"));
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.yoyuzh.admin;
|
||||
|
||||
import com.yoyuzh.files.StoragePolicyCapabilities;
|
||||
import com.yoyuzh.files.StoragePolicyCredentialMode;
|
||||
import com.yoyuzh.files.StoragePolicyType;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public record AdminStoragePolicyResponse(
|
||||
Long id,
|
||||
String name,
|
||||
StoragePolicyType type,
|
||||
String bucketName,
|
||||
String endpoint,
|
||||
String region,
|
||||
boolean privateBucket,
|
||||
String prefix,
|
||||
StoragePolicyCredentialMode credentialMode,
|
||||
long maxSizeBytes,
|
||||
StoragePolicyCapabilities capabilities,
|
||||
boolean enabled,
|
||||
boolean defaultPolicy,
|
||||
LocalDateTime createdAt,
|
||||
LocalDateTime updatedAt
|
||||
) {
|
||||
}
|
||||
Reference in New Issue
Block a user