77import io .ejangs .docsa .domain .branch .dto .response .BranchRenameResponse ;
88import io .ejangs .docsa .domain .branch .entity .Branch ;
99import io .ejangs .docsa .domain .branch .util .BranchMapper ;
10- import io .ejangs .docsa .domain .commit .app .CommitQueryService ;
10+ import io .ejangs .docsa .domain .commit .app .CommitReader ;
1111import io .ejangs .docsa .domain .commit .dao .mongodb .CommitBlockSequenceRepository ;
1212import io .ejangs .docsa .domain .commit .entity .Commit ;
13- import io .ejangs .docsa .domain .doc .app .create . DocQueryService ;
13+ import io .ejangs .docsa .domain .doc .app .DocReader ;
1414import io .ejangs .docsa .domain .edge .app .EdgeService ;
1515import io .ejangs .docsa .domain .doc .entity .Doc ;
1616import io .ejangs .docsa .global .exception .CustomException ;
1717import io .ejangs .docsa .global .exception .errorcode .BranchErrorCode ;
1818import io .ejangs .docsa .global .exception .errorcode .DocErrorCode ;
1919import io .ejangs .docsa .global .outbox .mongo .dto .MongoIdsDto ;
20- import io .ejangs .docsa .global .outbox .mongo .entity .MongoDeleteOutbox .DomainType ;
21- import io .ejangs .docsa .global .outbox .mongo .entity .MongoDeleteOutbox .OriginType ;
22- import io .ejangs .docsa .global .outbox .mongo .entity .MongoDeleteOutbox .TriggerType ;
23- import io .ejangs .docsa .global .outbox .mongo .app .MongoDeleteOutboxFactory ;
20+ import io .ejangs .docsa .global .outbox .mongo .app .MongoDeleteJobEnqueuer ;
2421import io .ejangs .docsa .global .outbox .mongo .util .MongoDeleteMapper ;
2522import io .ejangs .docsa .global .util .RenewUpdatedAtHelper ;
2623
3734@ RequiredArgsConstructor
3835public class BranchService {
3936
40- private final DocQueryService docQueryService ;
41- private final BranchQueryService branchQueryService ;
42- private final CommitQueryService commitQueryService ;
37+ private final DocReader docReader ;
38+ private final BranchReader branchReader ;
39+ private final BranchWriter branchWriter ;
40+ private final CommitReader commitReader ;
4341 private final CommitBlockSequenceRepository commitBlockSequenceRepository ;
4442 private final EdgeService edgeService ;
4543 private final BranchCreateOrchestrator branchCreateOrchestrator ;
46- private final MongoDeleteOutboxFactory mongoDeleteOutboxFactory ;
44+ private final MongoDeleteJobEnqueuer mongoDeleteJobEnqueuer ;
4745
4846 public BranchCreateResponse createBranch (Long documentId , BranchCreateRequest request ,
4947 Long userId ) {
@@ -55,18 +53,18 @@ public BranchCreateResponse createBranch(Long documentId, BranchCreateRequest re
5553
5654 private BranchCreateContext prepareBranchCreateContext (Long documentId ,
5755 BranchCreateRequest request , Long userId ) {
58- docQueryService .checkByIdAndUserId (documentId , userId );
56+ docReader .checkByIdAndUserId (documentId , userId );
5957
6058 Long fromCommitId = request .fromCommitId ();
6159
62- Commit fromCommit = commitQueryService .getById (fromCommitId );
60+ Commit fromCommit = commitReader .getById (fromCommitId );
6361 Branch fromBranch = fromCommit .getBranch ();
6462
6563 if (!fromBranch .getDoc ().getId ().equals (documentId )) {
6664 throw new CustomException (DocErrorCode .COMMIT_NOT_IN_DOCUMENT );
6765 }
6866
69- branchQueryService .checkDuplicatedWithBranchName (documentId , request .name ());
67+ branchReader .checkDuplicatedWithBranchName (documentId , request .name ());
7068
7169
7270 return new BranchCreateContext (
@@ -83,8 +81,8 @@ public BranchRenameResponse renameBranch(Long documentId, Long branchId, String
8381 Long userId ) {
8482
8583 // 1. 브랜치 검증
86- branchQueryService .checkBranchInDocOwnedByUser (documentId , branchId , userId );
87- Branch branch = branchQueryService .getById (branchId );
84+ branchReader .checkBranchInDocOwnedByUser (documentId , branchId , userId );
85+ Branch branch = branchReader .getById (branchId );
8886 checkDefaultBranch (branch );
8987
9088 // 2. 브랜치 이름 수정 후 브랜치와 문서의 수정시각 갱신
@@ -105,8 +103,8 @@ public BranchRenameResponse renameBranch(Long documentId, Long branchId, String
105103 public void deleteBranch (Long documentId , Long branchId , Long userId ) {
106104
107105 // 1. 브랜치 검증
108- branchQueryService .checkBranchInDocOwnedByUser (documentId , branchId , userId );
109- Branch branch = branchQueryService .getById (branchId );
106+ branchReader .checkBranchInDocOwnedByUser (documentId , branchId , userId );
107+ Branch branch = branchReader .getById (branchId );
110108
111109 // 2. main브랜치는 삭제가 불가능하도록 함
112110 checkDefaultBranch (branch );
@@ -115,7 +113,7 @@ public void deleteBranch(Long documentId, Long branchId, Long userId) {
115113 List <Commit > branchCommits = branch .getCommits ();
116114 List <Long > commitsIds = branchCommits .stream ().map (Commit ::getId ).toList ();
117115
118- if (branchQueryService .existsSubBranchByFromCommitIds (commitsIds )) {
116+ if (branchReader .existsSubBranchByFromCommitIds (commitsIds )) {
119117 throw new CustomException (BranchErrorCode .SUB_BRANCH_DELETE_UNAVAILABLE );
120118 }
121119
@@ -133,15 +131,9 @@ public void deleteBranch(Long documentId, Long branchId, Long userId) {
133131 doc .getBranches ().remove (branch );
134132
135133 // 8. 브랜치, 나머지 RDB 브랜치 메타데이터 CASCADE 삭제
136- branchQueryService .delete (branch );
137-
138- mongoDeleteOutboxFactory .create (
139- TriggerType .DELETE ,
140- DomainType .BRANCH ,
141- OriginType .BRANCH_ID ,
142- branchId ,
143- deletableMongoIds
144- );
134+ branchWriter .delete (branch );
135+
136+ mongoDeleteJobEnqueuer .enqueueBranchDeletion (branchId , deletableMongoIds );
145137
146138 }
147139
0 commit comments