feat: Domain Interface 정의 — Repository, UnitOfWork (#12) #13

Merged
seonkyu.kim merged 1 commits from feature/#12-domain-interfaces into develop 2026-02-09 04:51:52 +00:00
Owner

📋 작업 요약

  • Clean Architecture Domain 레이어에 Generic Repository, UnitOfWork, 도메인별 특화 Repository 인터페이스 정의
  • API 명세/기능 명세 기반 최소 필수 쿼리 메서드만 정의 (과잉 설계 지양)
  • Domain 레이어에 EF Core 의존성 없이 순수 인터페이스로 정의

Closes #12

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Interfaces/IRepository.cs — Generic CRUD 인터페이스 (GetById, GetAll, Find, GetPaged, Count, Exists, Add, Update, Delete)
  • SPMS.Domain/Interfaces/IUnitOfWork.cs — 트랜잭션 관리 (SaveChanges, BeginTransaction, Commit, Rollback)
  • SPMS.Domain/Interfaces/IServiceRepository.cs — ByServiceCode, ByApiKey, WithIps, ByStatus
  • SPMS.Domain/Interfaces/IAdminRepository.cs — ByEmail, ByAdminCode, EmailExists
  • SPMS.Domain/Interfaces/IDeviceRepository.cs — ByServiceAndToken, ActiveCount, ByPlatform
  • SPMS.Domain/Interfaces/IMessageRepository.cs — ByMessageCode
  • SPMS.Domain/Interfaces/IPushLogRepository.cs — ByMessageId(페이징+상태필터), FailedByMessageId, BatchAdd, CountByStatus
  • SPMS.Domain/Interfaces/IFileRepository.cs — ByFileName, FileExists
  • SPMS.Domain/Interfaces/IStatRepository.cs — ByServiceAndDate, ByDateRange

📢 리뷰어 참고 사항 (To Reviewers)

  • IUnitOfWork에서 IDbContextTransaction 대신 IDisposable을 사용하여 Domain에 EF Core 의존성 제거
  • 각 특화 Repository는 IRepository<T>를 상속하여 공통 CRUD 자동 포함
  • 추후 Phase 진행 시 필요에 따라 메서드 추가 가능 (현재는 최소 필수만 정의)

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

## 📋 작업 요약 - Clean Architecture Domain 레이어에 Generic Repository, UnitOfWork, 도메인별 특화 Repository 인터페이스 정의 - API 명세/기능 명세 기반 최소 필수 쿼리 메서드만 정의 (과잉 설계 지양) - Domain 레이어에 EF Core 의존성 없이 순수 인터페이스로 정의 ## 🔗 관련 이슈 (Related Issues) Closes #12 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Interfaces/IRepository.cs` — Generic CRUD 인터페이스 (GetById, GetAll, Find, GetPaged, Count, Exists, Add, Update, Delete) - [x] `SPMS.Domain/Interfaces/IUnitOfWork.cs` — 트랜잭션 관리 (SaveChanges, BeginTransaction, Commit, Rollback) - [x] `SPMS.Domain/Interfaces/IServiceRepository.cs` — ByServiceCode, ByApiKey, WithIps, ByStatus - [x] `SPMS.Domain/Interfaces/IAdminRepository.cs` — ByEmail, ByAdminCode, EmailExists - [x] `SPMS.Domain/Interfaces/IDeviceRepository.cs` — ByServiceAndToken, ActiveCount, ByPlatform - [x] `SPMS.Domain/Interfaces/IMessageRepository.cs` — ByMessageCode - [x] `SPMS.Domain/Interfaces/IPushLogRepository.cs` — ByMessageId(페이징+상태필터), FailedByMessageId, BatchAdd, CountByStatus - [x] `SPMS.Domain/Interfaces/IFileRepository.cs` — ByFileName, FileExists - [x] `SPMS.Domain/Interfaces/IStatRepository.cs` — ByServiceAndDate, ByDateRange ## 📢 리뷰어 참고 사항 (To Reviewers) - `IUnitOfWork`에서 `IDbContextTransaction` 대신 `IDisposable`을 사용하여 Domain에 EF Core 의존성 제거 - 각 특화 Repository는 `IRepository<T>`를 상속하여 공통 CRUD 자동 포함 - 추후 Phase 진행 시 필요에 따라 메서드 추가 가능 (현재는 최소 필수만 정의) ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs)
seonkyu.kim added 1 commit 2026-02-09 04:46:39 +00:00
IRepository<T> Generic CRUD, IUnitOfWork 트랜잭션,
도메인별 특화 Repository 인터페이스 7종 정의
(Service, Admin, Device, Message, PushLog, File, Stat)
seonkyu.kim added the
Priority
High
Status
In Progress
Type
Feature
labels 2026-02-09 04:46:50 +00:00
seonkyu.kim requested review from Owners 2026-02-09 04:46:54 +00:00
seonkyu.kim added this to the Phase 1: 인프라 & 공통 모듈 milestone 2026-02-09 04:46:56 +00:00
seonkyu.kim self-assigned this 2026-02-09 04:49:02 +00:00
seonkyu.kim merged commit 5d8e30494e into develop 2026-02-09 04:51:52 +00:00
seonkyu.kim deleted branch feature/#12-domain-interfaces 2026-02-09 04:52:34 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-09 04:52:54 +00:00
Sign in to join this conversation.
No description provided.