- POST /v1/in/service/register 통합 등록 엔드포인트 추가 - RegisterServiceRequestDto/ResponseDto 신규 생성 - 서비스 생성 + FCM/APNs 자격증명을 트랜잭션으로 원자성 보장 - 검증 로직 private 메서드 추출 (기존 코드 재사용) - 자격증명은 선택사항, 검증 실패 시 전체 롤백 Closes #212
47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace SPMS.Application.DTOs.Service;
|
|
|
|
public class RegisterServiceRequestDto
|
|
{
|
|
[Required(ErrorMessage = "서비스명은 필수입니다.")]
|
|
[StringLength(100, MinimumLength = 2, ErrorMessage = "서비스명은 2~100자여야 합니다.")]
|
|
public string ServiceName { get; set; } = string.Empty;
|
|
|
|
[StringLength(500, ErrorMessage = "설명은 500자 이내여야 합니다.")]
|
|
public string? Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// FCM 자격증명 (선택)
|
|
/// </summary>
|
|
public FcmCredentialDto? Fcm { get; set; }
|
|
|
|
/// <summary>
|
|
/// APNs 자격증명 (선택)
|
|
/// </summary>
|
|
public ApnsCredentialDto? Apns { get; set; }
|
|
}
|
|
|
|
public class FcmCredentialDto
|
|
{
|
|
[Required(ErrorMessage = "Service Account JSON은 필수입니다.")]
|
|
public string ServiceAccountJson { get; set; } = string.Empty;
|
|
}
|
|
|
|
public class ApnsCredentialDto
|
|
{
|
|
[Required(ErrorMessage = "Bundle ID는 필수입니다.")]
|
|
public string BundleId { get; set; } = string.Empty;
|
|
|
|
[Required(ErrorMessage = "Key ID는 필수입니다.")]
|
|
[StringLength(10, MinimumLength = 10, ErrorMessage = "Key ID는 10자리여야 합니다.")]
|
|
public string KeyId { get; set; } = string.Empty;
|
|
|
|
[Required(ErrorMessage = "Team ID는 필수입니다.")]
|
|
[StringLength(10, MinimumLength = 10, ErrorMessage = "Team ID는 10자리여야 합니다.")]
|
|
public string TeamId { get; set; } = string.Empty;
|
|
|
|
[Required(ErrorMessage = "Private Key는 필수입니다.")]
|
|
public string PrivateKey { get; set; } = string.Empty;
|
|
}
|