Skip to content

Commit

Permalink
feat(main-api): 뱃지달기 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
westzeroright committed Jan 16, 2025
1 parent ee3f9eb commit 8d097e1
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.whoz_in.main_api.command.badge.application;

import com.whoz_in.main_api.command.shared.application.Command;
import java.util.UUID;

public record BadgeAttach(UUID memberId, UUID badgeId) implements Command {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.whoz_in.main_api.command.badge.application;

import com.whoz_in.domain.badge.model.BadgeId;
import com.whoz_in.domain.member.MemberRepository;
import com.whoz_in.domain.member.model.Member;
import com.whoz_in.domain.member.model.MemberId;
import com.whoz_in.domain.shared.event.EventBus;
import com.whoz_in.main_api.command.shared.application.CommandHandler;
import com.whoz_in.main_api.shared.application.Handler;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@Handler
@RequiredArgsConstructor
public class BadgeAttachHandler implements CommandHandler<BadgeAttach, Void> {
private final MemberRepository repository;
private final EventBus eventBus;

@Transactional
@Override
public Void handle(BadgeAttach req) {
Member member = repository.findByMemberId(new MemberId(req.memberId())).orElseThrow();
repository.addBadge(new MemberId(req.memberId()),new BadgeId(req.badgeId()));
eventBus.publish(member.pullDomainEvents());
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.whoz_in.main_api.command.badge.presentation;

import com.whoz_in.main_api.command.badge.application.BadgeAttach;
import com.whoz_in.main_api.command.badge.application.BadgeRegister;
import com.whoz_in.main_api.command.shared.application.CommandBus;
import com.whoz_in.main_api.command.shared.presentation.CommandController;
Expand All @@ -20,4 +21,10 @@ public ResponseEntity<SuccessBody<Void>> create(@RequestBody BadgeRegister reque
dispatch(request);
return ResponseEntityGenerator.success( "뱃지 생성 완료", HttpStatus.CREATED);
}

@PostMapping("/api/v1/badges/members")
public ResponseEntity<SuccessBody<Void>> attach(@RequestBody BadgeAttach request) {
dispatch(request);
return ResponseEntityGenerator.success( "뱃지 달기 완료", HttpStatus.CREATED);
}
}

0 comments on commit 8d097e1

Please sign in to comment.