Skip to content

Commit

Permalink
Merge pull request #12 from Team-Lecue/feat/#6-entity_design_and_fold…
Browse files Browse the repository at this point in the history
…ering

[FEAT] 초기 Entity 설계 + 폴더 구조 세팅
  • Loading branch information
ddongseop authored Jan 3, 2024
2 parents 3d481c9 + 1805414 commit a5458ae
Show file tree
Hide file tree
Showing 15 changed files with 290 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/CD.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: CD

on:
pull_request:
push:
branches: [ "develop" ]

jobs:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: CI

on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]

Expand Down
48 changes: 48 additions & 0 deletions src/main/java/org/sopt/lequuServer/domain/postit/model/Postit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.sopt.lequuServer.domain.postit.model;

import jakarta.persistence.*;
import lombok.*;
import org.sopt.lequuServer.domain.rollingpaper.model.RollingPaper;
import org.sopt.lequuServer.domain.user.model.User;
import org.sopt.lequuServer.global.common.model.BaseTimeEntity;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "postit")
public class Postit extends BaseTimeEntity {

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

@Column(nullable = false)
private String content;

@Column(nullable = false)
private String background;

private int textColor;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "rolling_paper_id")
private RollingPaper rollingPaper;

@Builder
public Postit(String content, String background, int textColor, User user, RollingPaper rollingPaper) {
this.content = content;
this.background = background;
this.textColor = textColor;
this.user = user;
this.rollingPaper = rollingPaper;
}

public static Postit of(String content, String background, int textColor, User user, RollingPaper rollingPaper) {
return new Postit(content, background, textColor, user, rollingPaper);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package org.sopt.lequuServer.domain.rollingpaper.model;

import jakarta.persistence.*;
import lombok.*;
import org.sopt.lequuServer.domain.postit.model.Postit;
import org.sopt.lequuServer.domain.sticker.model.PostedSticker;
import org.sopt.lequuServer.domain.user.model.User;
import org.sopt.lequuServer.global.common.model.BaseTimeEntity;

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

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "rolling_paper")
public class RollingPaper extends BaseTimeEntity {

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

@Column(nullable = false)
private String uuid;

@Column(nullable = false)
private String favoriteName;

@Column(nullable = false)
private String favoriteImage;

@Column(nullable = false)
private String title;

@Column(nullable = false)
private String description;

private int backgroundColor;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@OneToMany(mappedBy = "rollingPaper")
private List<Postit> postits = new ArrayList<>();

public void addPostit(Postit postit) {
postits.add(postit);
}

@OneToMany(mappedBy = "rollingPaper")
private List<PostedSticker> postedStickers = new ArrayList<>();

public void addPostedSticker(PostedSticker postedSticker) {
postedStickers.add(postedSticker);
}

@Builder
public RollingPaper(String uuid, String favoriteName, String favoriteImage, String title, String description, int backgroundColor, User user) {
this.uuid = uuid;
this.favoriteName = favoriteName;
this.favoriteImage = favoriteImage;
this.title = title;
this.description = description;
this.backgroundColor = backgroundColor;
this.user = user;
}

public static RollingPaper of(String uuid, String favoriteName, String favoriteImage, String title, String description, int backgroundColor, User user) {
return new RollingPaper(uuid, favoriteName, favoriteImage, title, description, backgroundColor, user);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.sopt.lequuServer.domain.sticker.model;

import jakarta.persistence.*;
import lombok.*;
import org.sopt.lequuServer.domain.rollingpaper.model.RollingPaper;
import org.sopt.lequuServer.domain.user.model.User;
import org.sopt.lequuServer.global.common.model.BaseTimeEntity;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "posted_sticker")
public class PostedSticker extends BaseTimeEntity {

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

private int positionX;

private int positionY;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "rolling_paper_id")
private RollingPaper rollingPaper;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sticker_id")
private Sticker sticker;

@Builder
public PostedSticker(int positionX, int positionY, RollingPaper rollingPaper, Sticker sticker) {
this.positionX = positionX;
this.positionY = positionY;
this.rollingPaper = rollingPaper;
this.sticker = sticker;
}

public static PostedSticker of(int positionX, int positionY, RollingPaper rollingPaper, Sticker sticker) {
return new PostedSticker(positionX, positionY, rollingPaper, sticker);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.sopt.lequuServer.domain.sticker.model;

import jakarta.persistence.*;
import lombok.*;
import org.sopt.lequuServer.domain.rollingpaper.model.RollingPaper;
import org.sopt.lequuServer.global.common.model.BaseTimeEntity;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "sticker")
public class Sticker extends BaseTimeEntity {

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

@Column(nullable = false)
private String stickerImage;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private StickerCategory category;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "rolling_paper_id")
private RollingPaper rollingPaper;

public Sticker(String stickerImage, StickerCategory category, RollingPaper rollingPaper) {
this.stickerImage = stickerImage;
this.category = category;
this.rollingPaper = rollingPaper;
}

public static Sticker of(String stickerImage, StickerCategory category, RollingPaper rollingPaper) {
return new Sticker(stickerImage, category, rollingPaper);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.sopt.lequuServer.domain.sticker.model;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum StickerCategory {

ALPHABET("알파벳"),
BIRTHDAY("생일");

private final String value;
}
56 changes: 56 additions & 0 deletions src/main/java/org/sopt/lequuServer/domain/user/model/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package org.sopt.lequuServer.domain.user.model;

import jakarta.persistence.*;
import lombok.*;
import org.sopt.lequuServer.domain.postit.model.Postit;
import org.sopt.lequuServer.domain.rollingpaper.model.RollingPaper;
import org.sopt.lequuServer.domain.sticker.model.PostedSticker;
import org.sopt.lequuServer.global.common.model.BaseTimeEntity;

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

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "user")
public class User extends BaseTimeEntity {

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

@Column(nullable = false)
private String nickname;

@OneToMany(mappedBy = "user")
private List<RollingPaper> rollingPapers = new ArrayList<>();

public void addRollingPaper(RollingPaper rollingPaper) {
rollingPapers.add(rollingPaper);
}

@OneToMany(mappedBy = "user")
private List<Postit> postits = new ArrayList<>();

public void addPostit(Postit postit) {
postits.add(postit);
}

@OneToMany(mappedBy = "user")
private List<PostedSticker> postedStickers = new ArrayList<>();

public void addPostedSticker(PostedSticker postedSticker) {
postedStickers.add(postedSticker);
}

@Builder
public User(String nickname) {
this.nickname = nickname;
}

public static User of(String nickname) {
return new User(nickname);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.lequuServer.global.common.exception.model;
package org.sopt.lequuServer.global.common.exception;

import lombok.Getter;
import org.sopt.lequuServer.global.common.exception.enums.ErrorType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.sopt.lequuServer.global.common.dto.ApiResponse;
import org.sopt.lequuServer.global.common.exception.model.CustomException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.lequuServer.global.common.domain;
package org.sopt.lequuServer.global.common.model;

import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.lequuServer.global.common.config;
package org.sopt.lequuServer.global.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.lequuServer.global.common.config;
package org.sopt.lequuServer.global.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.lequuServer.global.common.config;
package org.sopt.lequuServer.global.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ spring:
password: ${DATABASE_PASSWORD}

jpa:
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
auto_quote_keyword: true
format_sql: true
show_sql: true
default_batch_fetch_size: 500

config:
import: optional:application-secret.properties
Expand Down

0 comments on commit a5458ae

Please sign in to comment.