Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.FixLog;
package com.example.fixlog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/com/example/fixlog/domain/bookmark/Bookmark.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.example.fixlog.domain.bookmark;

import com.example.fixlog.domain.member.Member;
import com.example.fixlog.domain.post.Post;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Bookmark {

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

@ManyToOne
@JoinColumn(name = "userId")
private Member member;

@ManyToOne
@JoinColumn(name = "postId")
private Post post;
}
26 changes: 26 additions & 0 deletions src/main/java/com/example/fixlog/domain/bookmark/BookmarkTag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.fixlog.domain.bookmark;

import com.example.fixlog.domain.tag.Tag;
import com.example.fixlog.domain.tag.TagCategory;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class BookmarkTag {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bookmarkTagId",nullable = false)
private Long id;

@Column(length = 20, nullable = false)
private String tagName;

@Enumerated(EnumType.STRING)
private TagCategory tagCategory;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.fixlog.domain.bookmark;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class BookmarkTagMap {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "mapId", nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "bookmarkId", nullable = false)
private Bookmark bookmark;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "bookmarkTagId", nullable = false)
private BookmarkTag bookmarkTag;
}
26 changes: 26 additions & 0 deletions src/main/java/com/example/fixlog/domain/follow/Follow.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.fixlog.domain.follow;

import com.example.fixlog.domain.member.Member;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Follow {

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "followerId", nullable = false)
private Member follower;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "followingId", nullable = false)
private Member following;
}
31 changes: 31 additions & 0 deletions src/main/java/com/example/fixlog/domain/fork/Fork.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.fixlog.domain.fork;

import com.example.fixlog.domain.member.Member;
import com.example.fixlog.domain.post.Post;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Fork {

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = false)
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "postId", nullable = false)
private Post originalPost;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "forkPostId", nullable = false)
private Post forkedPost;
}
27 changes: 27 additions & 0 deletions src/main/java/com/example/fixlog/domain/like/PostLike.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.fixlog.domain.like;

import com.example.fixlog.domain.member.Member;
import com.example.fixlog.domain.post.Post;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostLike {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "likeId", nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = false)
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "postId", nullable = false)
private Post post;
}
63 changes: 63 additions & 0 deletions src/main/java/com/example/fixlog/domain/member/Member.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.example.fixlog.domain.member;

import com.example.fixlog.domain.post.Post;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EntityListeners(AuditingEntityListener.class)
public class Member {

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

@Column(nullable = false)
private String email;

@Column(nullable = false)
private String password;

@Column(nullable = false)
private String nickname;

@Column(nullable = false)
private Boolean isDeleted = false;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private SocialType socialType = SocialType.EMAIL;

@CreatedDate
private LocalDateTime createdAt;

@LastModifiedDate
private LocalDateTime updatedAt;

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Post> posts = new ArrayList<>();

// Member 객체를 정적 팩토리 방식으로 생성하는 메서드
// Creates a Member object using a static factory method
public static Member of(String email, String password, String nickname, SocialType socialType) {
Member member = new Member();
member.email = email;
member.password = password;
member.nickname = nickname;
member.socialType = socialType;
member.isDeleted = false;
return member;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.fixlog.domain.member;

public enum SocialType {
EMAIL,
GITHUB
}
38 changes: 38 additions & 0 deletions src/main/java/com/example/fixlog/domain/post/Post.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.example.fixlog.domain.post;

import com.example.fixlog.domain.member.Member;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "postId", nullable = false)
private Long id;

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

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = false)
private Member member;

private LocalDateTime createdAt;
private LocalDateTime updatedAt;

@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PostImage> postImages = new ArrayList<>();
}
24 changes: 24 additions & 0 deletions src/main/java/com/example/fixlog/domain/post/PostImage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.example.fixlog.domain.post;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostImage {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "postImageId",nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "postId", nullable = false)
private Post post;

@Column(columnDefinition = "TEXT", nullable = false)
private String postImageUrl;
}
26 changes: 26 additions & 0 deletions src/main/java/com/example/fixlog/domain/post/PostTag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.fixlog.domain.post;

import com.example.fixlog.domain.tag.Tag;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostTag {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "postTagId",nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "postId", nullable = false)
private Post post;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tagId", nullable = false)
private Tag tag;
}
23 changes: 23 additions & 0 deletions src/main/java/com/example/fixlog/domain/tag/Tag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.fixlog.domain.tag;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Tag {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tagId",nullable = false)
private Long id;

@Enumerated(EnumType.STRING)
private TagCategory tagCategory;

@Column(length = 20, nullable = false)
private String tag_name;
}
7 changes: 7 additions & 0 deletions src/main/java/com/example/fixlog/domain/tag/TagCategory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.fixlog.domain.tag;

public enum TagCategory {
STYLE,
CONCEPT,
ETC
}
16 changes: 15 additions & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1 +1,15 @@
spring.application.name=FixLog
spring.application.name=fixlog

# DB setting
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

# DataBase Info
spring.datasource.url=jdbc:h2:tcp://localhost/~/fixlog
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.FixLog;
package com.example.fixlog;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
Expand Down