Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions 깃허브_강민성/Week5/MemberMissionRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.example.localservice.repository;
import com.example.localservice.domain.MemberMission;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberMissionRepository extends JpaRepository<MemberMission, Long> {

// 사용자의 모든 미션 수행 이력을 상태별로 페이징하여 조회
// user_id는 Member 엔티티를 참조하므로, 필드명 'member'를 이용해 쿼리 생성
// isComplete는 Boolean 타입 필드
Page<MemberMission> findAllByMember_MemberIdAndIsComplete(Long memberId, Boolean isComplete, Pageable pageable);

// 모든 미션 이력을 최신순으로 페이징하여 조회
Page<MemberMission> findAllByMember_MemberIdOrderByMemberMissionIdDesc(Long memberId, Pageable pageable);
}
13 changes: 13 additions & 0 deletions 깃허브_강민성/Week5/MemberRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.localservice.repository;
import com.example.localservice.domain.Member;
import java.util.Optional;

public interface MemberRepository extends JpaRepository<Member, Long> {

// (1) 이메일로 사용자 정보(닉네임, 이메일, 포인트 등) 조회
// 필드 이름으로 자동 생성 쿼리: findBy{필드명}
Optional<Member> findByEmail(String email);

// (2) 소셜 UID로 사용자 정보 조회 (로그인 시 사용)
Optional<Member> findBySocialUid(String socialUid);
}
22 changes: 22 additions & 0 deletions 깃허브_강민성/Week5/MissionRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.localservice.repository;
import com.example.localservice.domain.Mission;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface MissionRepository extends JpaRepository<Mission, Long> {

@Query("SELECT m FROM Mission m " +
// 특정 지역 (Location ID)의 가게에 속한 미션만 선택
"JOIN m.store s WHERE s.location.locationId = :locationId " +
// 현재 사용자가 아직 진행 중(isComplete=true 또는 false) 또는 완료된 미션에 포함되지 않은 미션만 선택
"AND m.missionId NOT IN ( " +
" SELECT mm.mission.missionId FROM MemberMission mm WHERE mm.member.memberId = :memberId " +
") ORDER BY m.created_at DESC")
Page<Mission> findAvailableMissionsByLocationAndMember(
@Param("locationId") Long locationId,
@Param("memberId") Long memberId,
Pageable pageable);
}
11 changes: 11 additions & 0 deletions 깃허브_강민성/Week5/ReiviewRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.localservice.repository;
import com.example.localservice.domain.Review;
import org.springframework.data.domain.Pageable;
import java.util.List;

public interface ReviewRepository extends JpaRepository<Review, Long> {

// 사용자의 memberId를 이용해 작성된 모든 리뷰를 최신순으로 조회
// user_id는 Member 엔티티를 참조하므로, 필드명 'user'를 이용해 쿼리 생성
List<Review> findAllByUser_MemberIdOrderByCreatedAtDesc(Long memberId, Pageable pageable);
}