feat: Generic Repository 및 UnitOfWork 패턴 구현 (#18) #19

Merged
seonkyu.kim merged 1 commits from feature/#18-repository-pattern into develop 2026-02-09 05:47:21 +00:00
Owner

📋 작업 요약

  • Infrastructure 레이어에 IRepository<T>IUnitOfWork 인터페이스 구현체 작성
  • Program.cs에 DI 등록 (AddScoped)

Closes #18

🛠️ 작업 내용 (Changes)

  • SPMS.Infrastructure/Persistence/Repositories/Repository.cs — Generic Repository 구현 (CRUD, 페이징, 조건 검색)
  • SPMS.Infrastructure/Persistence/UnitOfWork.cs — UnitOfWork 구현 (SaveChanges, 트랜잭션 관리)
  • SPMS.API/Program.cs — DI 등록 (IRepository<>Repository<>, IUnitOfWorkUnitOfWork)

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

  • Repository<T>.Delete()는 EF Core의 Remove()를 호출합니다. Soft Delete는 EF Core Global Query Filter + 서비스 레이어에서 IsDeleted/DeletedAt 필드를 직접 설정하는 방식으로 처리됩니다 (Service, Admin, Message 엔티티)
  • GetPagedAsync()는 orderBy 미지정 시 기본적으로 Id 내림차순 정렬
  • Issue #10 (DI 구조화)에서 DI 등록이 확장 메서드로 이관될 예정

체크리스트 (Self Checklist)

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

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

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - Infrastructure 레이어에 `IRepository<T>` 및 `IUnitOfWork` 인터페이스 구현체 작성 - Program.cs에 DI 등록 (AddScoped) ## 🔗 관련 이슈 (Related Issues) Closes #18 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Infrastructure/Persistence/Repositories/Repository.cs` — Generic Repository 구현 (CRUD, 페이징, 조건 검색) - [x] `SPMS.Infrastructure/Persistence/UnitOfWork.cs` — UnitOfWork 구현 (SaveChanges, 트랜잭션 관리) - [x] `SPMS.API/Program.cs` — DI 등록 (`IRepository<>` → `Repository<>`, `IUnitOfWork` → `UnitOfWork`) ## 📢 리뷰어 참고 사항 (To Reviewers) - `Repository<T>.Delete()`는 EF Core의 `Remove()`를 호출합니다. Soft Delete는 EF Core Global Query Filter + 서비스 레이어에서 `IsDeleted`/`DeletedAt` 필드를 직접 설정하는 방식으로 처리됩니다 (Service, Admin, Message 엔티티) - `GetPagedAsync()`는 orderBy 미지정 시 기본적으로 `Id` 내림차순 정렬 - Issue #10 (DI 구조화)에서 DI 등록이 확장 메서드로 이관될 예정 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-09 05:44:59 +00:00
- IRepository<T> 구현체: CRUD, 페이징, 조건 검색 지원
- IUnitOfWork 구현체: 트랜잭션 관리 (Begin/Commit/Rollback)
- Program.cs에 DI 등록 (AddScoped)

Closes #18
seonkyu.kim added the
Priority
High
Status
In Progress
Type
Feature
labels 2026-02-09 05:45:11 +00:00
seonkyu.kim self-assigned this 2026-02-09 05:45:15 +00:00
seonkyu.kim added this to the Phase 1: 인프라 & 공통 모듈 milestone 2026-02-09 05:45:20 +00:00
seonkyu.kim requested review from Owners 2026-02-09 05:45:26 +00:00
seonkyu.kim merged commit 24e1ccbfef into develop 2026-02-09 05:47:21 +00:00
seonkyu.kim deleted branch feature/#18-repository-pattern 2026-02-09 05:47:40 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-09 05:49:33 +00:00
Sign in to join this conversation.
No description provided.