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
Binary file added 0주차미션/0주차미션_고경수.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2,976 changes: 2,976 additions & 0 deletions 0주차미션/hello.vuerd.json

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions 1주차미션/homepage.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-- 4번
SELECT
m.title,
m.description,
m.point,
um.is_complete,
um.d_day,
s.store_name,
l.location_name
FROM
User_mission um
JOIN
Mission m ON um.mission_id = m.mission_id
JOIN
Store s ON m.store_id = s.store_id
JOIN
Location l ON s.location_id = l.location_id
WHERE
um.user_id = 1
ORDER BY
um.d_day ASC; -- 디데이 가까운 순서로 정렬
20 changes: 20 additions & 0 deletions 1주차미션/mission_status.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-- 3번
SELECT
m.mission_id,
m.title,
m.description,
m.point,
um.status,
um.started_at,
um.completed_at
FROM
User_missions AS um
INNER JOIN
Missions AS m ON um.mission_id = m.mission_id -- 사용자가 이미 시작했거나 완료한 미션들 조회
WHERE
um.user_id = 현재_사용자_ID
AND um.status IN ('in_progress', 'completed') -- 진행 중 또는 완료 상태
ORDER BY
um.updated_at DESC -- 가장 최근에 갱신된 미션부터 정렬
LIMIT
10 OFFSET 0;
8 changes: 8 additions & 0 deletions 1주차미션/mypage.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
-- 2번
SELECT u.user_id,
u.email,
u.name,
u.point,
u.phone_num
FROM User AS u
WHERE u.user_id = '1';
16 changes: 16 additions & 0 deletions 1주차미션/review.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- 1번
-- 가게 리뷰와 유저 정보 조회
SELECT r.review_id,
r.star,
r.content,
r.created_at,
u.user_id,
u.name,
u.email
FROM Review r
INNER JOIN User u ON r.user_id = u.user_id
WHERE r.store_id = 101;

-- 리뷰 추가
INSERT INTO Review (user_id, store_id, star, content, created_at)
VALUES (1, 101, 5, '음 너무 맛있어요', NOW());
Binary file added 4주차미션/.DS_Store
Binary file not shown.
Binary file added 4주차미션/java/.DS_Store
Binary file not shown.
Binary file added 4주차미션/java/com/.DS_Store
Binary file not shown.
Binary file added 4주차미션/java/com/example/.DS_Store
Binary file not shown.
Binary file not shown.
15 changes: 15 additions & 0 deletions 4주차미션/java/com/example/umc9th/Umc9thApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.umc9th;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;


@SpringBootApplication
@EnableJpaAuditing
public class Umc9thApplication {
public static void main(String[] args) {
SpringApplication.run(Umc9thApplication.class, args);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.example.umc9th.domain.mission.entity;

import com.example.umc9th.domain.store.entity.Store;
import com.example.umc9th.domain.user.entity.mapping.UserMission;
import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "mission")
public class Mission extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "mission_id")
private Long id;

@Column(nullable = false, length = 100)
private String title;

@Column(columnDefinition = "TEXT")
private String description;

@Column(nullable = false)
private Integer point;

@Column(length = 50)
private String verification;

// Store와의 연관 관계 (N:1) - 연관 관계의 주인
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "store_id")
private Store store;

// UserMission과의 연관 관계 (1:N)
@OneToMany(mappedBy = "mission", cascade = CascadeType.ALL)
@Builder.Default
private List<UserMission> userMissionList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.example.umc9th.domain.review.entity;

import com.example.umc9th.domain.store.entity.Store;
import com.example.umc9th.domain.user.entity.User;
import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "review")
public class Review extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "review_id")
private Long id;

@Column(nullable = false)
private Float star;

@Column(columnDefinition = "TEXT")
private String content;

// User와의 연관 관계 (N:1) - 연관 관계의 주인
// Review 입장에서 User는 N:1
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

// Store와의 연관 관계 (N:1) - 연관 관계의 주인
// Review 입장에서 Store는 N:1
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "store_id")
private Store store;

// ReviewPhoto와의 연관 관계 (1:N)
// Review 입장에서 ReviewPhoto는 1:N
@OneToMany(mappedBy = "review", cascade = CascadeType.ALL)
@Builder.Default
private List<ReviewPhoto> reviewPhotoList = new ArrayList<>();

// ReviewReply와의 연관 관계 (1:N)
// Review 입장에서 ReviewReply는 1:N // 헷갈림
@OneToMany(mappedBy = "review", cascade = CascadeType.ALL)
@Builder.Default
private List<ReviewReply> reviewReplyList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.umc9th.domain.review.entity;

import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "review_photo")
public class ReviewPhoto extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "review_photo_id")
private Long id;

@Column(name = "review_photo_url", nullable = false)
private String reviewPhotoUrl;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "review_id")
private Review review;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.umc9th.domain.review.entity;

import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "review_reply")
public class ReviewReply extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "reply_id")
private Long id;

@Column(columnDefinition = "TEXT")
private String content;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "review_id")
private Review review;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.example.umc9th.domain.store.entity;

import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "location")
public class Location extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "location_id")
private Long id;

@Column(name = "location_name", nullable = false, length = 50)
private String name;

// Store와의 연관 관계 (1:N)
@OneToMany(mappedBy = "location", cascade = CascadeType.ALL)
@Builder.Default
private List<Store> storeList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.example.umc9th.domain.store.entity;

import com.example.umc9th.domain.mission.entity.Mission;
import com.example.umc9th.domain.review.entity.Review;
import com.example.umc9th.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@Table(name = "store")
public class Store extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "store_id")
private Long id;

@Column(name = "store_name", nullable = false, length = 50)
private String name;

@Column(name = "detailAddress", length = 100)
private String detailAddress;

// Location과의 연관 관계 (N:1) - 연관 관계의 주인
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "location_id")
private Location location;

// Review와의 연관 관계 (1:N)
@OneToMany(mappedBy = "store", cascade = CascadeType.ALL)
@Builder.Default
private List<Review> reviewList = new ArrayList<>();

// Mission과의 연관 관계 (1:N)
@OneToMany(mappedBy = "store", cascade = CascadeType.ALL)
@Builder.Default
private List<Mission> missionList = new ArrayList<>();

}
25 changes: 25 additions & 0 deletions 4주차미션/java/com/example/umc9th/domain/user/entity/Food.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.example.umc9th.domain.user.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Builder
@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@Getter
@Table(name = "food")

public class Food {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "food_id")
private Long id;

@Column(nullable = false, length = 50)
private String foodName;
}
23 changes: 23 additions & 0 deletions 4주차미션/java/com/example/umc9th/domain/user/entity/Term.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.umc9th.domain.user.entity;

import com.example.umc9th.domain.user.enums.TermName;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "term")
public class Term {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "term_id") // DB 컬럼명 명시
private Long id;

@Column(name = "term_name", nullable = false) // ENUM 컬럼만 남김
@Enumerated(EnumType.STRING)
private TermName name;
}
Loading