diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
index 40bfbb9b..794337b9 100644
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -7,11 +7,11 @@ assignees: ''
---
-๐ Describe
-
+๐ Describe
โ
Tasks
-- [ ] 1.
+- [ ]
+ 1.
๐๐ป ํ ๋ง
diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md
index 5ced59a2..1672fcfc 100644
--- a/.github/ISSUE_TEMPLATE/feature.md
+++ b/.github/ISSUE_TEMPLATE/feature.md
@@ -9,9 +9,9 @@ assignees: ''
โจ Describe
-
โ
Tasks
-- [ ] 1.
+- [ ]
+ 1.
๐๐ป ํ ๋ง
diff --git a/.github/ISSUE_TEMPLATE/refactore.md b/.github/ISSUE_TEMPLATE/refactore.md
index 3567c6ed..c8575c14 100644
--- a/.github/ISSUE_TEMPLATE/refactore.md
+++ b/.github/ISSUE_TEMPLATE/refactore.md
@@ -7,11 +7,11 @@ assignees: ''
---
-๐จ Describe
-
+๐จ Describe
โ
Tasks
-- [ ] 1.
+- [ ]
+ 1.
๐๐ป ํ ๋ง
diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index 3d302952..629e60f8 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -13,18 +13,18 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 17
- uses: actions/setup-java@v3
- with:
- java-version: '17'
- distribution: 'temurin'
-
- - name: Grant execute permission for gradlew
- run: chmod +x gradlew
+ - uses: actions/checkout@v3
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
- - name: checkStyle
- run: ./gradlew check
+ - name: Grant execute permission for gradlew
+ run: chmod +x gradlew
- - name: Build with Gradle
- run: ./gradlew build
+ - name: checkStyle
+ run: ./gradlew check
+
+ - name: Build with Gradle
+ run: ./gradlew build
diff --git a/.github/workflows/sonar_cloud.yml b/.github/workflows/sonar_cloud.yml
index 94f3051f..97ca4d01 100644
--- a/.github/workflows/sonar_cloud.yml
+++ b/.github/workflows/sonar_cloud.yml
@@ -4,7 +4,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened]
+ types: [ opened, synchronize, reopened ]
jobs:
build:
name: Build and analyze
diff --git a/README.md b/README.md
index ef9ad908..c73ac319 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,13 @@
# ๋ถ๋ง์ํค
#### ์น์ฌ์ดํธ ๋ฐ๋ก๊ฐ๊ธฐ : bumawiki.kro.kr
+
#### ์ธ์คํ๊ทธ๋จ ๋ฐ๋ก๊ฐ๊ธฐ : @bssm.wiki
+
#### BSM OAuth ๋ฐ๋ก๊ฐ๊ธฐ : github.com/BSSM-BSM
## ๋ถ๋ง์ํค
+
๋ถ๋ง์ํค๋ ๋ถ์ฐ์ํํธ์จ์ด๋ง์ด์คํฐ๊ณ ๋ฑํ๊ต์ ์ญ์ฌ๋ฅผ ๊ธฐ๋กํ๋ ์ํค์
๋๋ค.
ํ์, ์ ์๋, ์ฌ๊ฑด์ฌ๊ณ , ๋์๋ฆฌ ๋ฑ์ ๋ฌธ์์ ๋ํด ๋ค๋ฃน๋๋ค.
๊ต๋ด ํ์์ด๋ผ๋ฉด ๋๊ตฌ๋ ๋ฌธ์๋ฅผ ํธ์งํ๊ณ ์์ฑํ ์ ์์ต๋๋ค.
@@ -23,10 +26,13 @@
## Made By
#### ๊นํธํ - ๋ผ๋ผํ๋ค ๋ฐฐํฌ ๋ฐ ์ฝ๋ ๋ฆฌํฉํ ๋ง, ์ด๋ฏธ์ง ์
๋ก๋ ๊ธฐ๋ฅ ๊ตฌํ
+
#### ์ด์ฐฝ๋ณด - ์๋ฒ ๊ตฌ์ถ ๋ฐ ์ฃผ์ ๊ธฐ๋ฅ ๊ตฌํ
+
#### ๊ถ์ธ์, ๋ฐ์ฐ๋น - api ํต์ ๋ฐ ํด๋ผ์ด์ธํธ ํ๋ฉด ๊ตฌํ
### Server Developer
+
### Client Developer
+
### Thanks.
+
PS. ๋ถ๋ง์ํค ๋ง์ด ์ด์ฉํด์ฃผ์ธ์ฉ
diff --git a/src/main/java/com/project/bumawiki/domain/contribute/domain/Contribute.java b/src/main/java/com/project/bumawiki/domain/contribute/domain/Contribute.java
deleted file mode 100644
index d40031f8..00000000
--- a/src/main/java/com/project/bumawiki/domain/contribute/domain/Contribute.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.project.bumawiki.domain.contribute.domain;
-
-import java.time.LocalDateTime;
-
-import org.springframework.data.annotation.CreatedDate;
-
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.user.domain.User;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.OneToOne;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Entity
-@Getter
-@Builder
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class Contribute {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "contribute_id")
- private Long id;
-
- @CreatedDate
- private LocalDateTime createdAt;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "user_id")
- private User contributor;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "docs_id")
- private Docs docs;
-
- @OneToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "version_docs_id")
- private VersionDocs versionDocs;
-}
diff --git a/src/main/java/com/project/bumawiki/domain/contribute/domain/repository/ContributeRepository.java b/src/main/java/com/project/bumawiki/domain/contribute/domain/repository/ContributeRepository.java
deleted file mode 100644
index bdff9a17..00000000
--- a/src/main/java/com/project/bumawiki/domain/contribute/domain/repository/ContributeRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.project.bumawiki.domain.contribute.domain.repository;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-
-import com.project.bumawiki.domain.contribute.domain.Contribute;
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.user.domain.User;
-
-public interface ContributeRepository extends JpaRepository {
- @Query("select distinct c.contributor from Contribute c where c.docs = :docs")
- List findUserAllByDocs(Docs docs);
-}
diff --git a/src/main/java/com/project/bumawiki/domain/contribute/dto/ContributeResponseDto.java b/src/main/java/com/project/bumawiki/domain/contribute/dto/ContributeResponseDto.java
deleted file mode 100644
index e2d08e22..00000000
--- a/src/main/java/com/project/bumawiki/domain/contribute/dto/ContributeResponseDto.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.project.bumawiki.domain.contribute.dto;
-
-import java.time.LocalDateTime;
-
-import com.project.bumawiki.domain.contribute.domain.Contribute;
-
-import lombok.Getter;
-
-@Getter
-public class ContributeResponseDto {
-
- private final Long userId;
- private final String userNickName;
- private final Long docsId;
- private final LocalDateTime createTime;
- private final String title;
- private final Long versionDocsId;
-
- public ContributeResponseDto(Contribute contribute) {
- this.userId = contribute.getContributor().getId();
- this.userNickName = contribute.getContributor().getNickName();
- this.docsId = contribute.getDocs().getId();
- this.createTime = contribute.getCreatedAt();
- this.title = contribute.getDocs().getTitle();
- this.versionDocsId = contribute.getVersionDocs().getId();
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/contribute/service/ContributeService.java b/src/main/java/com/project/bumawiki/domain/contribute/service/ContributeService.java
deleted file mode 100644
index a3379388..00000000
--- a/src/main/java/com/project/bumawiki/domain/contribute/service/ContributeService.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.project.bumawiki.domain.contribute.service;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.transaction.annotation.Transactional;
-
-import com.project.bumawiki.domain.contribute.domain.Contribute;
-import com.project.bumawiki.domain.contribute.domain.repository.ContributeRepository;
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.docs.domain.repository.DocsRepository;
-import com.project.bumawiki.domain.docs.exception.DocsNotFoundException;
-import com.project.bumawiki.domain.user.domain.User;
-import com.project.bumawiki.domain.user.domain.repository.UserRepository;
-import com.project.bumawiki.domain.user.exception.UserNotFoundException;
-import com.project.bumawiki.global.annotation.ServiceWithTransactionalReadOnly;
-import com.project.bumawiki.global.util.SecurityUtil;
-
-import jakarta.validation.constraints.NotNull;
-import lombok.RequiredArgsConstructor;
-
-@ServiceWithTransactionalReadOnly
-@RequiredArgsConstructor
-public class ContributeService {
-
- private final DocsRepository docsRepository;
- private final UserRepository userRepository;
- private final ContributeRepository contributeRepository;
-
- @Transactional
- public Contribute setContribute(VersionDocs versionDocs) {
-
- User user = findUser();
-
- Docs docs = docsRepository.findById(versionDocs.getDocsId())
- .orElseThrow(() -> DocsNotFoundException.EXCEPTION);
-
- return setContributeAtUserAndDocs(versionDocs, user, docs);
- }
-
- @NotNull
- private Contribute setContributeAtUserAndDocs(VersionDocs versionDocs, User user, Docs docs) {
- Contribute contribute = createContribute(docs, user, versionDocs);
-
- ArrayList contributes = new ArrayList<>();
- contributes.add(contribute);
-
- setFirstContribute(contributes, user);
- docs.updateContributor(contributes);
- return contribute;
- }
-
- @Transactional
- public Contribute updateContribute(final VersionDocs versionDocs) {
-
- User user = findUser();
-
- Docs docs = docsRepository.findById(versionDocs.getDocsId())
- .orElseThrow(() -> DocsNotFoundException.EXCEPTION);
-
- Contribute contribute = createContribute(docs, user, versionDocs);
-
- if (user.getContributeDocs() == null) {
- ArrayList contributes = new ArrayList<>();
- contributes.add(contribute);
-
- setFirstContribute(contributes, user);
- }
- docs.getContributor().add(contribute);
-
- return contribute;
- }
-
- @Transactional
- public void setFirstContribute(final List contributes, final User user) {
- user.updateContributeDocs(contributes);
- }
-
- @Transactional
- private Contribute createContribute(Docs docs, User user, VersionDocs versionDocs) {
- return contributeRepository.save(
- Contribute.builder()
- .docs(docs)
- .contributor(user)
- .versionDocs(versionDocs)
- .createdAt(LocalDateTime.now())
- .build()
- );
- }
-
- private User findUser() {
- User user = SecurityUtil.getCurrentUserWithLogin();
-
- return userRepository.findById(user.getId())
- .orElseThrow(() -> UserNotFoundException.EXCEPTION);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/domain/Docs.java b/src/main/java/com/project/bumawiki/domain/docs/domain/Docs.java
index 1e7aae6c..75028385 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/domain/Docs.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/domain/Docs.java
@@ -1,17 +1,21 @@
package com.project.bumawiki.domain.docs.domain;
import java.time.LocalDateTime;
+import java.util.List;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
import com.project.bumawiki.domain.docs.domain.type.Status;
+import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -39,6 +43,13 @@ public class Docs {
@Enumerated(EnumType.STRING)
private Status status;
+ @OneToMany(
+ mappedBy = "docs",
+ cascade = CascadeType.REMOVE,
+ fetch = FetchType.LAZY
+ )
+ private List versionDocs;
+
public Docs(String title, int enroll, DocsType docsType) {
this.title = title;
this.enroll = enroll;
diff --git a/src/main/java/com/project/bumawiki/domain/docs/domain/VersionDocs.java b/src/main/java/com/project/bumawiki/domain/docs/domain/VersionDocs.java
index ab9adf61..c00e49ab 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/domain/VersionDocs.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/domain/VersionDocs.java
@@ -35,7 +35,7 @@ public class VersionDocs {
private String contents;
@CreatedDate
- private LocalDateTime thisVersionCreatedAt;
+ private LocalDateTime createdAt;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
diff --git a/src/main/java/com/project/bumawiki/domain/docs/domain/repository/CustomDocsRepositoryImpl.java b/src/main/java/com/project/bumawiki/domain/docs/domain/repository/CustomDocsRepositoryImpl.java
index 1d4ac345..d1fda8b3 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/domain/repository/CustomDocsRepositoryImpl.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/domain/repository/CustomDocsRepositoryImpl.java
@@ -1,6 +1,5 @@
package com.project.bumawiki.domain.docs.domain.repository;
-import static com.project.bumawiki.domain.contribute.domain.QContribute.*;
import static com.project.bumawiki.domain.docs.domain.QDocs.*;
import static com.project.bumawiki.domain.docs.domain.QVersionDocs.*;
import static com.project.bumawiki.domain.thumbsup.domain.QThumbsUp.*;
@@ -28,15 +27,14 @@ public class CustomDocsRepositoryImpl implements CustomDocsRepository {
@Override
public VersionResponseDto getDocsVersion(Docs findDocs) {
List versionDocsResponseDto = jpaQueryFactory
- .select(constructor(VersionDocsResponseDto.class, versionDocs.thisVersionCreatedAt, user.id,
- user.nickName))
+ .select(constructor(VersionDocsResponseDto.class, versionDocs.createdAt, user.id,
+ user.nickName, versionDocs.version))
.from(docs)
- .join(docs.docsVersion, versionDocs)
- .join(versionDocs.contributor, contribute)
- .join(contribute.contributor, user)
+ .join(docs.versionDocs, versionDocs)
+ .join(versionDocs.user, user)
.where(docs.id.eq(findDocs.getId()))
.distinct()
- .orderBy(versionDocs.thisVersionCreatedAt.desc())
+ .orderBy(versionDocs.createdAt.desc())
.fetch();
return new VersionResponseDto(versionDocsResponseDto, findDocs);
@@ -48,7 +46,7 @@ public List findByThumbsUpsDesc() {
.select(
constructor(DocsPopularResponseDto.class, docs.title, docs.enroll, docs.docsType, thumbsUp.id.count()))
.from(docs)
- .innerJoin(docs.thumbsUps, thumbsUp)
+ .innerJoin(docs, thumbsUp.docs)
.groupBy(docs.title, docs.enroll, docs.docsType)
.orderBy(thumbsUp.id.count().desc())
.limit(25)
diff --git a/src/main/java/com/project/bumawiki/domain/docs/domain/repository/VersionDocsRepository.java b/src/main/java/com/project/bumawiki/domain/docs/domain/repository/VersionDocsRepository.java
index 86aeba3c..e9fbf04e 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/domain/repository/VersionDocsRepository.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/domain/repository/VersionDocsRepository.java
@@ -8,6 +8,7 @@
import com.project.bumawiki.domain.docs.domain.Docs;
import com.project.bumawiki.domain.docs.domain.VersionDocs;
+import com.project.bumawiki.domain.user.domain.User;
public interface VersionDocsRepository extends JpaRepository {
@@ -19,4 +20,6 @@ public interface VersionDocsRepository extends JpaRepository
List findByDocs(Docs docs);
Optional findByDocsAndVersion(Docs docs, Integer version);
+
+ List findAllByUser(User user);
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/domain/type/DocsType.java b/src/main/java/com/project/bumawiki/domain/docs/domain/type/DocsType.java
index eb7f3d69..743c72fc 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/domain/type/DocsType.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/domain/type/DocsType.java
@@ -4,7 +4,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import com.project.bumawiki.domain.docs.exception.DocsTypeNotFoundException;
+import com.project.bumawiki.global.error.exception.BumawikiException;
+import com.project.bumawiki.global.error.exception.ErrorCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -32,7 +33,7 @@ public static DocsType valueOfLabel(String stringDocsType) {
DocsType docsType = BY_LABEL.get(stringDocsType);
if (docsType == null) {
- throw DocsTypeNotFoundException.EXCEPTION;
+ throw new BumawikiException(ErrorCode.DOCS_TYPE_NOT_FOUND);
}
return docsType;
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/CannotChangeYourDocsException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/CannotChangeYourDocsException.java
deleted file mode 100644
index e1cbbb28..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/CannotChangeYourDocsException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class CannotChangeYourDocsException extends BumawikiException {
-
- public static final CannotChangeYourDocsException EXCEPTION = new CannotChangeYourDocsException(
- ErrorCode.CANNOT_CHANGE_YOUR_DOCS);
-
- public CannotChangeYourDocsException(ErrorCode errorCode) {
- super(errorCode);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsConflictedException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/DocsConflictedException.java
deleted file mode 100644
index 2415e5d3..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsConflictedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class DocsConflictedException extends BumawikiException {
- public DocsConflictedException() {
- super(ErrorCode.DOCS_CONFLICTED);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsNotFoundException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/DocsNotFoundException.java
deleted file mode 100644
index 9237009d..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsNotFoundException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class DocsNotFoundException extends BumawikiException {
-
- public static final DocsNotFoundException EXCEPTION = new DocsNotFoundException(ErrorCode.DOCS_NOT_FOUND);
-
- public DocsNotFoundException(ErrorCode errorCode) {
- super(errorCode);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsTypeNotFoundException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/DocsTypeNotFoundException.java
deleted file mode 100644
index f3a2c419..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/DocsTypeNotFoundException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class DocsTypeNotFoundException extends BumawikiException {
-
- public static final DocsTypeNotFoundException EXCEPTION = new DocsTypeNotFoundException(
- ErrorCode.DOCS_TYPE_NOT_FOUND);
-
- public DocsTypeNotFoundException(ErrorCode errorCode) {
- super(errorCode);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/NoSuchVersionException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/NoSuchVersionException.java
deleted file mode 100644
index 17774f85..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/NoSuchVersionException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class NoSuchVersionException extends BumawikiException {
- public NoSuchVersionException() {
- super(ErrorCode.NO_SUCH_VERSION);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/NoUpdatableDocsException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/NoUpdatableDocsException.java
deleted file mode 100644
index 8653e961..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/NoUpdatableDocsException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class NoUpdatableDocsException extends BumawikiException {
-
- public static final NoUpdatableDocsException EXCEPTION = new NoUpdatableDocsException(ErrorCode.NO_UPDATABLE_DOCS);
-
- public NoUpdatableDocsException(ErrorCode errorCode) {
- super(errorCode);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/exception/VersionNotExistException.java b/src/main/java/com/project/bumawiki/domain/docs/exception/VersionNotExistException.java
deleted file mode 100644
index 93af5780..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/exception/VersionNotExistException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.project.bumawiki.domain.docs.exception;
-
-import com.project.bumawiki.global.error.exception.BumawikiException;
-import com.project.bumawiki.global.error.exception.ErrorCode;
-
-public class VersionNotExistException extends BumawikiException {
-
- public static final NoUpdatableDocsException EXCEPTION = new NoUpdatableDocsException(ErrorCode.VERSION_NOT_EXIST);
-
- public VersionNotExistException(ErrorCode errorCode) {
- super(errorCode);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsCreator.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsCreator.java
index 28d87e63..02a930ef 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsCreator.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsCreator.java
@@ -14,10 +14,11 @@
public class DocsCreator {
private final DocsRepository docsRepository;
private final VersionDocsRepository versionDocsRepository;
+ private final DocsUpdater docsUpdater;
+ private final DocsReader docsReader;
public void create(Docs docs, User user, String contents) {
docsRepository.save(docs);
-
versionDocsRepository.save(
new VersionDocs(
0,
@@ -27,4 +28,17 @@ public void create(Docs docs, User user, String contents) {
)
);
}
+
+ public void createVersionDocs(Docs docs, User user, String contents) {
+ Integer lastVersion = docsReader.findLastVersion(docs).getVersion();
+ VersionDocs versionDocs = versionDocsRepository.save(
+ new VersionDocs(
+ lastVersion + 1,
+ docs,
+ contents,
+ user
+ )
+ );
+ docsUpdater.updateModifiedAt(docs, versionDocs.getCreatedAt());
+ }
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsReader.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsReader.java
index fef1a683..2df0e391 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsReader.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsReader.java
@@ -1,7 +1,11 @@
package com.project.bumawiki.domain.docs.implementation;
+import java.util.List;
+
import com.project.bumawiki.domain.docs.domain.Docs;
+import com.project.bumawiki.domain.docs.domain.VersionDocs;
import com.project.bumawiki.domain.docs.domain.repository.DocsRepository;
+import com.project.bumawiki.domain.docs.domain.repository.VersionDocsRepository;
import com.project.bumawiki.global.annotation.Implementation;
import com.project.bumawiki.global.error.exception.BumawikiException;
import com.project.bumawiki.global.error.exception.ErrorCode;
@@ -13,6 +17,7 @@
public class DocsReader {
private final DocsRepository docsRepository;
+ private final VersionDocsRepository versionDocsRepository;
public Docs findById(Long docsId) {
return docsRepository.findById(docsId)
@@ -23,4 +28,12 @@ public Docs findByTitle(String title) {
return docsRepository.findByTitle(title)
.orElseThrow(() -> new BumawikiException(ErrorCode.DOCS_NOT_FOUND));
}
+
+ public List findTop3ByDocs(Docs docs) {
+ return versionDocsRepository.findTop3ByDocsOrderByVersion(docs);
+ }
+
+ public VersionDocs findLastVersion(Docs docs) {
+ return versionDocsRepository.findFirstByDocsOrderByVersionDesc(docs);
+ }
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsValidator.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsValidator.java
index 589630dd..6a359cd3 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsValidator.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/implementation/DocsValidator.java
@@ -1,10 +1,10 @@
package com.project.bumawiki.domain.docs.implementation;
import com.project.bumawiki.domain.docs.domain.Docs;
+import com.project.bumawiki.domain.docs.domain.VersionDocs;
import com.project.bumawiki.domain.docs.domain.repository.DocsRepository;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
import com.project.bumawiki.domain.docs.domain.type.Status;
-import com.project.bumawiki.domain.docs.exception.NoUpdatableDocsException;
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.global.annotation.Implementation;
import com.project.bumawiki.global.error.exception.BumawikiException;
@@ -16,6 +16,7 @@
@RequiredArgsConstructor
public class DocsValidator {
private final DocsRepository docsRepository;
+ private final DocsReader docsReader;
public void checkTitleAlreadyExist(Docs docs) {
if (docsRepository.existsByTitle(docs.getTitle())) {
@@ -45,7 +46,7 @@ public void checkUpdateOneSelf(User user, Docs docs) {
public void checkUpdatableDocsType(DocsType docsType) {
if (docsType.equals(DocsType.READONLY)) {
- throw NoUpdatableDocsException.EXCEPTION;
+ throw new BumawikiException(ErrorCode.NO_UPDATABLE_DOCS);
}
}
@@ -60,4 +61,9 @@ public void checkConflicted(Docs docs) {
throw new BumawikiException(ErrorCode.DOCS_IS_NOT_CONFLICTED);
}
}
+
+ public boolean isConflict(Docs docs, Integer updatingVersion) {
+ VersionDocs lastVersionDocs = docsReader.findLastVersion(docs);
+ return !lastVersionDocs.getVersion().equals(updatingVersion);
+ }
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/VersionDocsReader.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/VersionDocsReader.java
deleted file mode 100644
index ca863e70..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/VersionDocsReader.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.project.bumawiki.domain.docs.implementation;
-
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.docs.domain.repository.VersionDocsRepository;
-import com.project.bumawiki.global.annotation.Implementation;
-
-import lombok.RequiredArgsConstructor;
-
-import java.util.List;
-
-@Implementation
-@RequiredArgsConstructor
-public class VersionDocsReader {
- private final VersionDocsRepository versionDocsRepository;
-
- public List findTop3ByDocs(Docs docs) {
- return versionDocsRepository.findTop3ByDocsOrderByVersion(docs);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsCreator.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsCreator.java
deleted file mode 100644
index 16088de8..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsCreator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.project.bumawiki.domain.docs.implementation.versiondocs;
-
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.docs.domain.repository.VersionDocsRepository;
-import com.project.bumawiki.domain.docs.implementation.DocsUpdater;
-import com.project.bumawiki.domain.user.domain.User;
-import com.project.bumawiki.global.annotation.Implementation;
-
-import lombok.RequiredArgsConstructor;
-
-@Implementation
-@RequiredArgsConstructor
-public class VersionDocsCreator {
- private final VersionDocsReader versionDocsReader;
- private final DocsUpdater docsUpdater;
- private final VersionDocsRepository versionDocsRepository;
-
- public void create(Docs docs, User user, String contents) {
- Integer lastVersion = versionDocsReader.findLastVersion(docs).getVersion();
- VersionDocs versionDocs = versionDocsRepository.save(
- new VersionDocs(
- lastVersion + 1,
- docs,
- contents,
- user
- )
- );
- docsUpdater.updateModifiedAt(docs, versionDocs.getThisVersionCreatedAt());
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsReader.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsReader.java
deleted file mode 100644
index 542ba574..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsReader.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.project.bumawiki.domain.docs.implementation.versiondocs;
-
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.docs.domain.repository.VersionDocsRepository;
-import com.project.bumawiki.global.annotation.Implementation;
-
-import lombok.RequiredArgsConstructor;
-
-@Implementation
-@RequiredArgsConstructor
-public class VersionDocsReader {
- private final VersionDocsRepository versionDocsRepository;
-
- public VersionDocs findLastVersion(Docs docs) {
- return versionDocsRepository.findFirstByDocsOrderByVersionDesc(docs);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsValidator.java b/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsValidator.java
deleted file mode 100644
index 85c2b7ff..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/implementation/versiondocs/VersionDocsValidator.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.project.bumawiki.domain.docs.implementation.versiondocs;
-
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.global.annotation.Implementation;
-
-import lombok.RequiredArgsConstructor;
-
-@Implementation
-@RequiredArgsConstructor
-public class VersionDocsValidator {
- private final VersionDocsReader versionDocsReader;
-
- public boolean isConflict(Docs docs, Integer updatingVersion) {
- VersionDocs lastVersionDocs = versionDocsReader.findLastVersion(docs);
- return !lastVersionDocs.getVersion().equals(updatingVersion);
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/CommandDocsController.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/CommandDocsController.java
index fb2ce415..45f150ab 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/CommandDocsController.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/CommandDocsController.java
@@ -12,7 +12,7 @@
import com.project.bumawiki.domain.docs.presentation.dto.request.DocsCreateRequestDto;
import com.project.bumawiki.domain.docs.presentation.dto.request.DocsTitleUpdateRequestDto;
-import com.project.bumawiki.domain.docs.presentation.dto.request.DocsTypeUpdateDto;
+import com.project.bumawiki.domain.docs.presentation.dto.request.DocsTypeUpdateRequestDto;
import com.project.bumawiki.domain.docs.presentation.dto.request.DocsUpdateRequestDto;
import com.project.bumawiki.domain.docs.service.CommandDocsService;
import com.project.bumawiki.global.util.SecurityUtil;
@@ -41,14 +41,14 @@ public void updateDocs(@PathVariable String title,
request.updatingVersion());
}
- @PutMapping("/{title}")
+ @PutMapping("/title/{title}")
public void updateDocsTitle(@PathVariable String title,
@RequestBody DocsTitleUpdateRequestDto request) {
commandDocsService.titleUpdate(title, request.title());
}
@PutMapping("/docsType")
- public void updateDocsType(@RequestBody DocsTypeUpdateDto requestDto) {
+ public void updateDocsType(@RequestBody DocsTypeUpdateRequestDto requestDto) {
commandDocsService.docsTypeUpdate(requestDto.id(), requestDto.docsType());
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsInformationController.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsInformationController.java
index 7fb51048..577fdeb7 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsInformationController.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsInformationController.java
@@ -1,7 +1,6 @@
package com.project.bumawiki.domain.docs.presentation;
import java.util.List;
-import java.util.stream.Collectors;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
@@ -15,11 +14,11 @@
import org.springframework.web.bind.annotation.RestController;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
-import com.project.bumawiki.domain.docs.presentation.dto.ClubResponseDto;
-import com.project.bumawiki.domain.docs.presentation.dto.DocsTypeDto;
-import com.project.bumawiki.domain.docs.presentation.dto.TeacherResponseDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.ClubResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.DocsNameAndEnrollResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.DocsResponseDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.DocsTypeResponseDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.TeacherResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.VersionDocsDiffResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.VersionResponseDto;
import com.project.bumawiki.domain.docs.service.DocsInformationService;
@@ -45,10 +44,10 @@ public ResponseEntity findAllClub() {
}
@GetMapping("/{stringDocsType}")
- public DocsTypeDto findAllByDocsType(
+ public DocsTypeResponseDto findAllByDocsType(
@PathVariable String stringDocsType) {
DocsType docsType = DocsType.valueOfLabel(stringDocsType);
- return DocsTypeDto.from(docsInformationService.findByDocsTypeOrderByEnroll(docsType));
+ return DocsTypeResponseDto.from(docsInformationService.findByDocsTypeOrderByEnroll(docsType));
}
@GetMapping("/find/all/title/{title}")
@@ -56,7 +55,7 @@ public List findAllByTitle(@PathVariable String ti
return docsInformationService.findAllByTitle(title)
.stream()
.map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
+ .toList();
}
@GetMapping("/find/title/{title}")
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsMergeConflictController.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsMergeConflictController.java
index ff380da4..9d63c42b 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsMergeConflictController.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/DocsMergeConflictController.java
@@ -9,8 +9,8 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.project.bumawiki.domain.docs.presentation.dto.DocsConflictSolveDto;
-import com.project.bumawiki.domain.docs.presentation.dto.MergeConflictDataResponse;
+import com.project.bumawiki.domain.docs.presentation.dto.request.DocsConflictSolveRequestDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.MergeConflictDataResponseDto;
import com.project.bumawiki.domain.docs.service.DocsMergeConflictService;
import lombok.RequiredArgsConstructor;
@@ -24,13 +24,13 @@ public class DocsMergeConflictController {
@GetMapping("/{title}")
@ResponseStatus(HttpStatus.OK)
- public MergeConflictDataResponse getMergeConflictData(@PathVariable String title) {
+ public MergeConflictDataResponseDto getMergeConflictData(@PathVariable String title) {
return mergeConflictService.getMergeConflict(title);
}
@PutMapping("/{title}")
@ResponseStatus(HttpStatus.NO_CONTENT)
- public void solveConflict(@PathVariable String title, @RequestBody DocsConflictSolveDto dto) {
+ public void solveConflict(@PathVariable String title, @RequestBody DocsConflictSolveRequestDto dto) {
mergeConflictService.solveConflict(title, dto);
}
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/ClubResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/ClubResponseDto.java
deleted file mode 100644
index c3c7ea95..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/ClubResponseDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.presentation.dto.response.DocsNameAndEnrollResponseDto;
-
-public class ClubResponseDto {
- @JsonProperty
- private List club;
- @JsonProperty
- private List freeClub;
-
- public ClubResponseDto(List club, List freeClub) {
- this.club = club.stream()
- .map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
- this.freeClub = freeClub.stream()
- .map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsConflictSolveDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsConflictSolveDto.java
deleted file mode 100644
index f6b75fcc..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsConflictSolveDto.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
-
-public record DocsConflictSolveDto(
- String contents
-) {
-
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/TeacherResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/TeacherResponseDto.java
deleted file mode 100644
index 06794a32..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/TeacherResponseDto.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.presentation.dto.response.DocsNameAndEnrollResponseDto;
-
-public class TeacherResponseDto {
- @JsonProperty
- private List teacher;
- @JsonProperty
- private List majorTeacher;
- @JsonProperty
- private List mentorTeacher;
-
- public TeacherResponseDto(List teacher,
- List majorTeacher, List mentorTeacher) {
- this.teacher = teacher.stream()
- .map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
-
- this.majorTeacher = majorTeacher.stream()
- .map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
-
- this.mentorTeacher = majorTeacher.stream()
- .map(DocsNameAndEnrollResponseDto::new)
- .collect(Collectors.toList());
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/VersionDocsSummaryDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/VersionDocsSummaryDto.java
deleted file mode 100644
index dede042a..00000000
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/VersionDocsSummaryDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
-
-import java.time.LocalDateTime;
-
-import com.project.bumawiki.domain.docs.domain.VersionDocs;
-import com.project.bumawiki.domain.user.domain.User;
-
-import lombok.Getter;
-
-@Getter
-public class VersionDocsSummaryDto {
- private final Integer version;
- private final LocalDateTime thisVersionCreatedAt;
- private final Long userId;
- private final String nickName;
-
- public VersionDocsSummaryDto(VersionDocs versionDocs) {
- User contributor = versionDocs.getUser();
- this.version = versionDocs.getVersion();
- this.thisVersionCreatedAt = versionDocs.getThisVersionCreatedAt();
- this.nickName = contributor.getNickName();
- this.userId = contributor.getId();
- }
-}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsConflictSolveRequestDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsConflictSolveRequestDto.java
new file mode 100644
index 00000000..860cb965
--- /dev/null
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsConflictSolveRequestDto.java
@@ -0,0 +1,7 @@
+package com.project.bumawiki.domain.docs.presentation.dto.request;
+
+public record DocsConflictSolveRequestDto(
+ String contents
+) {
+
+}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateRequestDto.java
similarity index 85%
rename from src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateDto.java
rename to src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateRequestDto.java
index 1e53c481..23880b8b 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/request/DocsTypeUpdateRequestDto.java
@@ -4,7 +4,7 @@
import jakarta.validation.constraints.NotNull;
-public record DocsTypeUpdateDto(
+public record DocsTypeUpdateRequestDto(
@NotNull
Long id,
@NotNull
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ClubResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ClubResponseDto.java
new file mode 100644
index 00000000..662e6d70
--- /dev/null
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ClubResponseDto.java
@@ -0,0 +1,27 @@
+package com.project.bumawiki.domain.docs.presentation.dto.response;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.project.bumawiki.domain.docs.domain.Docs;
+
+public record ClubResponseDto(
+ @JsonProperty
+ List club,
+ @JsonProperty
+ List freeClub
+) {
+ public static ClubResponseDto from(List club, List freeClub) {
+ return new ClubResponseDto(
+ convertToDtoList(club),
+ convertToDtoList(freeClub)
+ );
+ }
+
+ private static List convertToDtoList(List docs) {
+ return docs.stream()
+ .map(DocsNameAndEnrollResponseDto::new)
+ .toList();
+ }
+}
+
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ContributeDocsResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ContributeDocsResponseDto.java
new file mode 100644
index 00000000..51afa27d
--- /dev/null
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/ContributeDocsResponseDto.java
@@ -0,0 +1,25 @@
+package com.project.bumawiki.domain.docs.presentation.dto.response;
+
+import java.time.LocalDateTime;
+
+import com.project.bumawiki.domain.docs.domain.VersionDocs;
+
+public record ContributeDocsResponseDto(
+ Long userId,
+ String userNickName,
+ Long docsId,
+ LocalDateTime createTime,
+ String title,
+ Integer version
+) {
+ public ContributeDocsResponseDto(VersionDocs versionDocs) {
+ this(
+ versionDocs.getUser().getId(),
+ versionDocs.getUser().getNickName(),
+ versionDocs.getDocs().getId(),
+ versionDocs.getCreatedAt(),
+ versionDocs.getDocs().getTitle(),
+ versionDocs.getVersion()
+ );
+ }
+}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsNameAndEnrollResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsNameAndEnrollResponseDto.java
index 7edfdbb5..60638ee3 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsNameAndEnrollResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsNameAndEnrollResponseDto.java
@@ -8,37 +8,36 @@
import com.project.bumawiki.domain.docs.domain.type.DocsType;
import com.project.bumawiki.domain.docs.util.DocsUtil;
-import lombok.Getter;
-
-@Getter
-public class DocsNameAndEnrollResponseDto {
-
- private final Long id;
- private final String title;
- private final int enroll;
- private final String simpleContents;
- private final DocsType docsType;
- private final LocalDateTime lastModifiedAt;
- private final String thumbnail;
+public record DocsNameAndEnrollResponseDto(
+ Long id,
+ String title,
+ int enroll,
+ String simpleContents,
+ DocsType docsType,
+ LocalDateTime lastModifiedAt,
+ String thumbnail
+) {
public DocsNameAndEnrollResponseDto(Docs docs) {
- this.id = docs.getId();
- this.title = docs.getTitle();
- this.enroll = docs.getEnroll();
- this.docsType = docs.getDocsType();
- this.lastModifiedAt = docs.getLastModifiedAt();
- this.simpleContents = getSimpleContents(docs);
- this.thumbnail = DocsUtil.getThumbnail(getContents(docs));
+ this(
+ docs.getId(),
+ docs.getTitle(),
+ docs.getEnroll(),
+ getSimpleContents(docs),
+ docs.getDocsType(),
+ docs.getLastModifiedAt(),
+ DocsUtil.getThumbnail(getContents(docs))
+ );
}
- private String getSimpleContents(Docs docs) {
+ private static String getSimpleContents(Docs docs) {
String contents = getContents(docs);
int endIndex = Math.min(contents.length(), 200);
return contents.substring(0, endIndex);
}
- private String getContents(Docs docs) {
- List docsVersion = docs.getDocsVersion();
+ private static String getContents(Docs docs) {
+ List docsVersion = docs.getVersionDocs();
int currentDocsSize = docsVersion.size() - 1;
return docsVersion.get(currentDocsSize).getContents();
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsResponseDto.java
index e1df90a1..db0dffdc 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsResponseDto.java
@@ -2,7 +2,6 @@
import java.time.LocalDateTime;
import java.util.List;
-import java.util.stream.Collectors;
import com.project.bumawiki.domain.docs.domain.Docs;
import com.project.bumawiki.domain.docs.domain.VersionDocs;
@@ -12,40 +11,36 @@
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.domain.user.presentation.dto.SimpleUserDto;
-import lombok.Getter;
-
-@Getter
-public class DocsResponseDto {
-
- private final Long id;
- private final String title;
- private final String contents;
- private final DocsType docsType;
- private final LocalDateTime lastModifiedAt;
- private final int enroll;
- private final boolean isDocsDetail;
- private final List contributors;
- private final Status status;
- private final int version;
- private final String thumbnail;
-
- public DocsResponseDto(Docs docs, List contributors) {
- int lastValueOfDocsVersion = docs.getDocsVersion().size() - 1;
- VersionDocs versionDocs = docs.getDocsVersion().get(lastValueOfDocsVersion);
-
- this.id = docs.getId();
- this.title = docs.getTitle();
- this.contents = versionDocs.getContents();
- this.lastModifiedAt = docs.getLastModifiedAt();
- this.docsType = docs.getDocsType();
- this.enroll = docs.getEnroll();
- this.isDocsDetail = true;
- this.contributors = contributors.stream()
- .map(SimpleUserDto::new)
- .collect(Collectors.toList());
- this.status = docs.getStatus();
- this.version = docs.getLastVersion();
- this.thumbnail = DocsUtil.getThumbnail(versionDocs.getContents());
+public record DocsResponseDto(
+ Long id,
+ String title,
+ String contents,
+ DocsType docsType,
+ LocalDateTime lastModifiedAt,
+ int enroll,
+ boolean isDocsDetail,
+ List contributors,
+ Status status,
+ int version,
+ String thumbnail
+) {
+
+ public DocsResponseDto(Docs docs, List contributors, VersionDocs versionDocs) {
+ this(
+ docs.getId(),
+ docs.getTitle(),
+ versionDocs.getContents(),
+ docs.getDocsType(),
+ docs.getLastModifiedAt(),
+ docs.getEnroll(),
+ true,
+ contributors.stream()
+ .map(SimpleUserDto::new)
+ .toList(),
+ docs.getStatus(),
+ versionDocs.getVersion(),
+ DocsUtil.getThumbnail(versionDocs.getContents())
+ );
}
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsTypeDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsTypeResponseDto.java
similarity index 55%
rename from src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsTypeDto.java
rename to src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsTypeResponseDto.java
index cc132f55..89b45334 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/DocsTypeDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/DocsTypeResponseDto.java
@@ -1,4 +1,4 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
+package com.project.bumawiki.domain.docs.presentation.dto.response;
import java.util.ArrayList;
import java.util.Collections;
@@ -8,20 +8,12 @@
import java.util.TreeMap;
import com.project.bumawiki.domain.docs.domain.Docs;
-import com.project.bumawiki.domain.docs.presentation.dto.response.DocsNameAndEnrollResponseDto;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-@Getter
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class DocsTypeDto {
- private Map> data;
- private Set keys;
-
- public static DocsTypeDto from(List allDocs) {
+public record DocsTypeResponseDto(
+ Map> data,
+ Set keys
+) {
+ public static DocsTypeResponseDto from(List allDocs) {
List docsList = allDocs.stream()
.map(DocsNameAndEnrollResponseDto::new)
.toList();
@@ -31,10 +23,10 @@ public static DocsTypeDto from(List allDocs) {
// ๊ธฐ์กด์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ enroll ๊ฐ์ ๊ธฐ์ค์ผ๋ก Map์ ์ถ๊ฐํฉ๋๋ค.
for (DocsNameAndEnrollResponseDto doc : docsList) {
- enrollMap.computeIfAbsent(doc.getEnroll(), k -> new ArrayList<>()).add(doc);
+ enrollMap.computeIfAbsent(doc.enroll(), k -> new ArrayList<>()).add(doc);
}
- return new DocsTypeDto(
+ return new DocsTypeResponseDto(
enrollMap,
enrollMap.keySet()
);
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/MergeConflictDataResponse.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/MergeConflictDataResponseDto.java
similarity index 69%
rename from src/main/java/com/project/bumawiki/domain/docs/presentation/dto/MergeConflictDataResponse.java
rename to src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/MergeConflictDataResponseDto.java
index f1488b89..450d2110 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/MergeConflictDataResponse.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/MergeConflictDataResponseDto.java
@@ -1,10 +1,10 @@
-package com.project.bumawiki.domain.docs.presentation.dto;
+package com.project.bumawiki.domain.docs.presentation.dto.response;
import java.util.LinkedList;
import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch;
-public record MergeConflictDataResponse(
+public record MergeConflictDataResponseDto(
String firstDocsContent,
String secondDocsContent,
String originalDocsContent,
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/TeacherResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/TeacherResponseDto.java
new file mode 100644
index 00000000..19c5c178
--- /dev/null
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/TeacherResponseDto.java
@@ -0,0 +1,26 @@
+package com.project.bumawiki.domain.docs.presentation.dto.response;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.project.bumawiki.domain.docs.domain.Docs;
+
+public record TeacherResponseDto(
+ @JsonProperty List teacher,
+ @JsonProperty List majorTeacher,
+ @JsonProperty List mentorTeacher
+) {
+ public static TeacherResponseDto from(List teacher, List majorTeacher, List mentorTeacher) {
+ return new TeacherResponseDto(
+ convertToDtoList(teacher),
+ convertToDtoList(majorTeacher),
+ convertToDtoList(mentorTeacher)
+ );
+ }
+
+ private static List convertToDtoList(List docsList) {
+ return docsList.stream()
+ .map(DocsNameAndEnrollResponseDto::new)
+ .toList();
+ }
+}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsDiffResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsDiffResponseDto.java
index 1ab5bc90..111d6116 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsDiffResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsDiffResponseDto.java
@@ -5,15 +5,11 @@
import java.util.ArrayList;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
-import com.project.bumawiki.domain.docs.presentation.dto.VersionDocsSummaryDto;
-import lombok.Getter;
-
-@Getter
public record VersionDocsDiffResponseDto(
String title,
DocsType docsType,
- VersionDocsSummaryDto versionDocs,
+ VersionDocsSummaryResponseDto versionDocs,
ArrayList diff
) {
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsResponseDto.java
index 8e16c9f5..2f68119a 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsResponseDto.java
@@ -2,23 +2,10 @@
import java.time.LocalDateTime;
-import lombok.Getter;
-
-@Getter
-public final class VersionDocsResponseDto {
- private final LocalDateTime thisVersionCreatedAt;
- private final Long userId;
- private final String nickName;
- private int index;
-
- public VersionDocsResponseDto(LocalDateTime thisVersionCreatedAt, Long userId, String nickName) {
- this.thisVersionCreatedAt = thisVersionCreatedAt;
- this.userId = userId;
- this.nickName = nickName;
- }
-
- public void updateIndex(int index) {
- this.index = index;
- }
-
+public record VersionDocsResponseDto(
+ LocalDateTime thisVersionCreatedAt,
+ Long userId,
+ String nickName,
+ int index
+) {
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsSummaryResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsSummaryResponseDto.java
new file mode 100644
index 00000000..063b7b6a
--- /dev/null
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionDocsSummaryResponseDto.java
@@ -0,0 +1,21 @@
+package com.project.bumawiki.domain.docs.presentation.dto.response;
+
+import java.time.LocalDateTime;
+
+import com.project.bumawiki.domain.docs.domain.VersionDocs;
+
+public record VersionDocsSummaryResponseDto(
+ Integer version,
+ LocalDateTime thisVersionCreatedAt,
+ Long userId,
+ String nickName
+) {
+ public VersionDocsSummaryResponseDto(VersionDocs versionDocs) {
+ this(
+ versionDocs.getVersion(),
+ versionDocs.getCreatedAt(),
+ versionDocs.getUser().getId(),
+ versionDocs.getUser().getNickName()
+ );
+ }
+}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionResponseDto.java b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionResponseDto.java
index e08d1d7c..cee53673 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/presentation/dto/response/VersionResponseDto.java
@@ -5,25 +5,19 @@
import com.project.bumawiki.domain.docs.domain.Docs;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
-import lombok.Getter;
-
-@Getter
-public class VersionResponseDto {
- private final int length;
- private final List versionDocsResponseDto;
- private final DocsType docsType;
- private final String title;
+public record VersionResponseDto(
+ int length,
+ List versionDocsResponseDto,
+ DocsType docsType,
+ String title
+) {
public VersionResponseDto(List versionDocsResponseDto, Docs findDocs) {
- length = versionDocsResponseDto.size();
- this.versionDocsResponseDto = versionDocsResponseDto;
- this.docsType = findDocs.getDocsType();
- this.title = findDocs.getTitle();
-
- int index = length;
- for (VersionDocsResponseDto docsResponseDto : versionDocsResponseDto) {
- docsResponseDto.updateIndex(index);
- index -= 1;
- }
+ this(
+ versionDocsResponseDto.size(),
+ versionDocsResponseDto,
+ findDocs.getDocsType(),
+ findDocs.getTitle()
+ );
}
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/service/CommandDocsService.java b/src/main/java/com/project/bumawiki/domain/docs/service/CommandDocsService.java
index 81f0027f..7316299c 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/service/CommandDocsService.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/service/CommandDocsService.java
@@ -10,8 +10,6 @@
import com.project.bumawiki.domain.docs.implementation.DocsReader;
import com.project.bumawiki.domain.docs.implementation.DocsUpdater;
import com.project.bumawiki.domain.docs.implementation.DocsValidator;
-import com.project.bumawiki.domain.docs.implementation.versiondocs.VersionDocsCreator;
-import com.project.bumawiki.domain.docs.implementation.versiondocs.VersionDocsValidator;
import com.project.bumawiki.domain.thumbsup.implementation.ThumbsUpDeleter;
import com.project.bumawiki.domain.user.domain.User;
@@ -28,9 +26,6 @@ public class CommandDocsService {
private final DocsDeleter docsDeleter;
private final DocsValidator docsValidator;
- private final VersionDocsCreator versionDocsCreator;
- private final VersionDocsValidator versionDocsValidator;
-
private final ThumbsUpDeleter thumbsUpDeleter;
public void create(Docs docs, User user, String contents) {
@@ -50,11 +45,11 @@ public void update(User user, String title, String contents, Integer updatingVer
docsValidator.checkUpdateOneSelf(user, docs);
docsValidator.checkGood(docs);
- if (versionDocsValidator.isConflict(docs, updatingVersion)) {
+ if (docsValidator.isConflict(docs, updatingVersion)) {
docsUpdater.updateStatus(docs, Status.CONFLICTED);
}
- versionDocsCreator.create(docs, user, contents);
+ docsCreator.createVersionDocs(docs, user, contents);
}
public void titleUpdate(String title, String changedTitle) {
diff --git a/src/main/java/com/project/bumawiki/domain/docs/service/DocsInformationService.java b/src/main/java/com/project/bumawiki/domain/docs/service/DocsInformationService.java
index dc92efb4..e48c5205 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/service/DocsInformationService.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/service/DocsInformationService.java
@@ -15,11 +15,12 @@
import com.project.bumawiki.domain.docs.domain.repository.DocsRepository;
import com.project.bumawiki.domain.docs.domain.repository.VersionDocsRepository;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
-import com.project.bumawiki.domain.docs.presentation.dto.ClubResponseDto;
-import com.project.bumawiki.domain.docs.presentation.dto.TeacherResponseDto;
-import com.project.bumawiki.domain.docs.presentation.dto.VersionDocsSummaryDto;
+import com.project.bumawiki.domain.docs.implementation.DocsReader;
+import com.project.bumawiki.domain.docs.presentation.dto.response.ClubResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.DocsResponseDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.TeacherResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.VersionDocsDiffResponseDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.VersionDocsSummaryResponseDto;
import com.project.bumawiki.domain.docs.presentation.dto.response.VersionResponseDto;
import com.project.bumawiki.domain.docs.util.DocsUtil;
import com.project.bumawiki.domain.user.domain.User;
@@ -34,6 +35,7 @@
public class DocsInformationService {
private final DocsRepository docsRepository;
private final VersionDocsRepository versionDocsRepository;
+ private final DocsReader docsReader;
public List findAllByTitle(String title) {
List docs = docsRepository.findAllByTitle(title);
@@ -53,7 +55,7 @@ public DocsResponseDto findDocs(String title) {
.map(VersionDocs::getUser)
.toList();
- return new DocsResponseDto(docs, contributors);
+ return new DocsResponseDto(docs, contributors, docsReader.findLastVersion(docs));
}
public VersionResponseDto findDocsVersion(String title) {
@@ -79,7 +81,7 @@ public VersionDocsDiffResponseDto showVersionDocsDiff(String title, Integer vers
LinkedList diff = getDiff(baseVersionDocs, targetVersionDocs);
return new VersionDocsDiffResponseDto(docs.getTitle(), docs.getDocsType(),
- new VersionDocsSummaryDto(targetVersionDocs), new ArrayList<>(diff));
+ new VersionDocsSummaryResponseDto(targetVersionDocs), new ArrayList<>(diff));
}
private LinkedList getDiff(Optional baseVersionDocs,
@@ -99,7 +101,7 @@ public List findByDocsTypeOrderByEnroll(DocsType docsType) {
}
public TeacherResponseDto getAllTeacher() {
- return new TeacherResponseDto(
+ return TeacherResponseDto.from(
findByDocsType(DocsType.TEACHER),
findByDocsType(DocsType.MAJOR_TEACHER),
findByDocsType(DocsType.MENTOR_TEACHER)
@@ -107,7 +109,7 @@ public TeacherResponseDto getAllTeacher() {
}
public ClubResponseDto getAllClub() {
- return new ClubResponseDto(
+ return ClubResponseDto.from(
findByDocsType(DocsType.CLUB),
findByDocsType(DocsType.FREE_CLUB)
);
@@ -117,4 +119,7 @@ private List findByDocsType(DocsType docsType) {
return docsRepository.findByDocsType(docsType);
}
+ public List findAllVersionDocsByUser(User user) {
+ return versionDocsRepository.findAllByUser(user);
+ }
}
diff --git a/src/main/java/com/project/bumawiki/domain/docs/service/DocsMergeConflictService.java b/src/main/java/com/project/bumawiki/domain/docs/service/DocsMergeConflictService.java
index 5addd16c..0c2d94ff 100644
--- a/src/main/java/com/project/bumawiki/domain/docs/service/DocsMergeConflictService.java
+++ b/src/main/java/com/project/bumawiki/domain/docs/service/DocsMergeConflictService.java
@@ -3,24 +3,20 @@
import java.util.LinkedList;
import java.util.List;
-import com.project.bumawiki.domain.docs.implementation.DocsReader;
-
-import com.project.bumawiki.domain.docs.implementation.DocsUpdater;
-import com.project.bumawiki.domain.docs.implementation.DocsValidator;
-import com.project.bumawiki.domain.docs.implementation.VersionDocsReader;
-import com.project.bumawiki.domain.docs.implementation.versiondocs.VersionDocsCreator;
-
-import com.project.bumawiki.domain.docs.util.DocsUtil;
-import com.project.bumawiki.global.util.SecurityUtil;
-
import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch;
import org.springframework.stereotype.Service;
import com.project.bumawiki.domain.docs.domain.Docs;
import com.project.bumawiki.domain.docs.domain.VersionDocs;
import com.project.bumawiki.domain.docs.domain.type.Status;
-import com.project.bumawiki.domain.docs.presentation.dto.DocsConflictSolveDto;
-import com.project.bumawiki.domain.docs.presentation.dto.MergeConflictDataResponse;
+import com.project.bumawiki.domain.docs.implementation.DocsCreator;
+import com.project.bumawiki.domain.docs.implementation.DocsReader;
+import com.project.bumawiki.domain.docs.implementation.DocsUpdater;
+import com.project.bumawiki.domain.docs.implementation.DocsValidator;
+import com.project.bumawiki.domain.docs.presentation.dto.request.DocsConflictSolveRequestDto;
+import com.project.bumawiki.domain.docs.presentation.dto.response.MergeConflictDataResponseDto;
+import com.project.bumawiki.domain.docs.util.DocsUtil;
+import com.project.bumawiki.global.util.SecurityUtil;
import lombok.RequiredArgsConstructor;
@@ -28,18 +24,17 @@
@RequiredArgsConstructor
public class DocsMergeConflictService {
private final DocsReader docsReader;
- private final VersionDocsReader versionDocsReader;
- private final VersionDocsCreator versionDocsCreator;
private final DocsValidator docsValidator;
private final DocsUpdater docsUpdater;
+ private final DocsCreator docsCreator;
- public MergeConflictDataResponse getMergeConflict(String title) {
+ public MergeConflictDataResponseDto getMergeConflict(String title) {
Docs docs = docsReader.findByTitle(title);
docsValidator.checkConflicted(docs);
// ๋ฒ์ ์ต์ ์ 3๊ฐ์ง ์กฐํ๊ฐ ์ ์ฒด์์ ์๋ฅด๋์ง 3๊ฐ๋ง ๊ฐ์ ธ์ค๋์ง ํ์ธ์ด ํ์ํฉ๋๋ค
- List docsVersion = versionDocsReader.findTop3ByDocs(docs);
+ List docsVersion = docsReader.findTop3ByDocs(docs);
String firstDocsContent = docsVersion.get(0).getContents();
String secondDocsContent = docsVersion.get(1).getContents();
@@ -49,7 +44,7 @@ public MergeConflictDataResponse getMergeConflict(String title) {
LinkedList diff1 = DocsUtil.getDiff(originalDocsContent, firstDocsContent);
LinkedList diff2 = DocsUtil.getDiff(originalDocsContent, secondDocsContent);
- return new MergeConflictDataResponse(
+ return new MergeConflictDataResponseDto(
firstDocsContent,
secondDocsContent,
originalDocsContent,
@@ -58,13 +53,12 @@ public MergeConflictDataResponse getMergeConflict(String title) {
);
}
-
- public void solveConflict(String title, DocsConflictSolveDto dto) {
+ public void solveConflict(String title, DocsConflictSolveRequestDto dto) {
Docs docs = docsReader.findByTitle(title);
docsValidator.checkConflicted(docs);
- versionDocsCreator.create(
+ docsCreator.create(
docs,
SecurityUtil.getCurrentUserWithLogin(),
dto.contents()
diff --git a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/ThumbsUpCheckController.java b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/ThumbsUpCheckController.java
index 04972847..5e397f08 100644
--- a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/ThumbsUpCheckController.java
+++ b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/ThumbsUpCheckController.java
@@ -7,6 +7,7 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
+import com.project.bumawiki.domain.thumbsup.service.ThumbsUpCheckService;
import com.project.bumawiki.global.util.SecurityUtil;
import lombok.RequiredArgsConstructor;
@@ -14,13 +15,13 @@
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/docs/like")
-public class DocsCheckYouLikeThisController {
- private final DocsCheckYouLikeThisService docsCheckYouLikeThisService;
+public class ThumbsUpCheckController {
+ private final ThumbsUpCheckService thumbsUpCheckService;
@GetMapping("/{docsId}")
@ResponseStatus(HttpStatus.OK)
public Boolean checkYouLikeThis(@PathVariable Long docsId) {
- return docsCheckYouLikeThisService.checkUserLikeThisDocs(
+ return thumbsUpCheckService.checkUserLikeThisDocs(
docsId, SecurityUtil.getCurrentUserWithLogin()
);
}
diff --git a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpRequestDto.java b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpRequestDto.java
index b0a31ff3..f2bbdda6 100644
--- a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpRequestDto.java
+++ b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpRequestDto.java
@@ -1,7 +1,6 @@
package com.project.bumawiki.domain.thumbsup.presentation.dto;
import jakarta.validation.constraints.NotNull;
-import lombok.Getter;
public record ThumbsUpRequestDto(
@NotNull
diff --git a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpResponseDto.java b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpResponseDto.java
index 815b0178..9f818c93 100644
--- a/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/thumbsup/presentation/dto/ThumbsUpResponseDto.java
@@ -1,18 +1,17 @@
package com.project.bumawiki.domain.thumbsup.presentation.dto;
-import com.fasterxml.jackson.annotation.JsonProperty;
import com.project.bumawiki.domain.docs.domain.Docs;
import com.project.bumawiki.domain.docs.domain.type.DocsType;
-public class ThumbsUpResponseDto {
-
- @JsonProperty
- private final String title;
- @JsonProperty
- private final DocsType docsType;
+public record ThumbsUpResponseDto(
+ String title,
+ DocsType docsType
+) {
public ThumbsUpResponseDto(Docs docs) {
- this.title = docs.getTitle();
- this.docsType = docs.getDocsType();
+ this(
+ docs.getTitle(),
+ docs.getDocsType()
+ );
}
}
diff --git a/src/main/java/com/project/bumawiki/domain/thumbsup/service/ThumbsUpCheckService.java b/src/main/java/com/project/bumawiki/domain/thumbsup/service/ThumbsUpCheckService.java
index 04621d44..bb53208c 100644
--- a/src/main/java/com/project/bumawiki/domain/thumbsup/service/ThumbsUpCheckService.java
+++ b/src/main/java/com/project/bumawiki/domain/thumbsup/service/ThumbsUpCheckService.java
@@ -12,7 +12,7 @@
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
-public class DocsCheckYouLikeThisService {
+public class ThumbsUpCheckService {
private final ThumbsUpReader thumbsUpReader;
private final DocsValidator docsValidator;
diff --git a/src/main/java/com/project/bumawiki/domain/user/UserFacade.java b/src/main/java/com/project/bumawiki/domain/user/UserFacade.java
index 90fc32a9..d3673b5f 100644
--- a/src/main/java/com/project/bumawiki/domain/user/UserFacade.java
+++ b/src/main/java/com/project/bumawiki/domain/user/UserFacade.java
@@ -5,8 +5,6 @@
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.domain.user.domain.repository.UserRepository;
import com.project.bumawiki.domain.user.exception.UserNotFoundException;
-import com.project.bumawiki.domain.user.exception.UserNotLoginException;
-import com.project.bumawiki.global.util.SecurityUtil;
import lombok.RequiredArgsConstructor;
diff --git a/src/main/java/com/project/bumawiki/domain/user/domain/User.java b/src/main/java/com/project/bumawiki/domain/user/domain/User.java
index 2a34ceda..786b780c 100644
--- a/src/main/java/com/project/bumawiki/domain/user/domain/User.java
+++ b/src/main/java/com/project/bumawiki/domain/user/domain/User.java
@@ -2,9 +2,7 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
-import com.project.bumawiki.domain.contribute.domain.Contribute;
import com.project.bumawiki.domain.thumbsup.domain.ThumbsUp;
import com.project.bumawiki.domain.thumbsup.exception.AlreadyThumbsUpException;
import com.project.bumawiki.domain.thumbsup.exception.YouDontThumbsUpThisDocs;
@@ -57,9 +55,6 @@ public class User {
@Enumerated(EnumType.STRING)
@Column(length = 16)
private Authority authority;
- @Builder.Default
- @OneToMany(mappedBy = "contributor", cascade = CascadeType.ALL)
- private List contributeDocs = new ArrayList<>();
public void cancelThumbsUp(ThumbsUp thumbsUp) {
boolean removed = thumbsUps
@@ -85,7 +80,7 @@ public List getList() {
return this.thumbsUps
.stream()
.map(ThumbsUp::getDto)
- .collect(Collectors.toList());
+ .toList();
}
public User update(BsmResourceResponse resource) {
@@ -99,8 +94,4 @@ public User update(BsmResourceResponse resource) {
public void changeUserAuthority(Authority authority) {
this.authority = authority;
}
-
- public void updateContributeDocs(List contribute) {
- this.contributeDocs = contribute;
- }
}
diff --git a/src/main/java/com/project/bumawiki/domain/user/presentation/UserInfoController.java b/src/main/java/com/project/bumawiki/domain/user/presentation/UserInfoController.java
index 4ac18f2f..ac61679d 100644
--- a/src/main/java/com/project/bumawiki/domain/user/presentation/UserInfoController.java
+++ b/src/main/java/com/project/bumawiki/domain/user/presentation/UserInfoController.java
@@ -1,37 +1,41 @@
package com.project.bumawiki.domain.user.presentation;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
+import com.project.bumawiki.domain.docs.service.DocsInformationService;
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.domain.user.presentation.dto.UserResponseDto;
import com.project.bumawiki.domain.user.service.UserInfoService;
+import com.project.bumawiki.global.util.SecurityUtil;
import lombok.RequiredArgsConstructor;
-@Validated
@RequiredArgsConstructor
@RestController
-@RequestMapping("/api")
+@RequestMapping("/api/user")
public class UserInfoController {
private final UserInfoService userInfoService;
+ private final DocsInformationService docsInformationService;
- @GetMapping("/user")
- public ResponseEntity findUserInfo() {
- User loginUser = userInfoService.getLoginUser();
- UserResponseDto response = new UserResponseDto(loginUser);
- return ResponseEntity.ok().body(response);
+ @GetMapping
+ @ResponseStatus(HttpStatus.OK)
+ public UserResponseDto findUserInfo() {
+ User user = SecurityUtil.getCurrentUserWithLogin();
+ return new UserResponseDto(user, docsInformationService.findAllVersionDocsByUser(user));
}
- @GetMapping("/user/id/{id}")
+ @GetMapping("/{id}")
public ResponseEntity findAnotherUserInFo(@PathVariable Long id) {
User foundUser = userInfoService.findAnotherInfo(id);
- UserResponseDto response = new UserResponseDto(foundUser);
+ UserResponseDto response = new UserResponseDto(foundUser,
+ docsInformationService.findAllVersionDocsByUser(foundUser));
return ResponseEntity.ok().body(response);
}
diff --git a/src/main/java/com/project/bumawiki/domain/user/presentation/dto/UserResponseDto.java b/src/main/java/com/project/bumawiki/domain/user/presentation/dto/UserResponseDto.java
index 1b897d9e..05de6a9c 100644
--- a/src/main/java/com/project/bumawiki/domain/user/presentation/dto/UserResponseDto.java
+++ b/src/main/java/com/project/bumawiki/domain/user/presentation/dto/UserResponseDto.java
@@ -1,15 +1,12 @@
package com.project.bumawiki.domain.user.presentation.dto;
-import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
-import com.project.bumawiki.domain.contribute.domain.Contribute;
-import com.project.bumawiki.domain.contribute.dto.ContributeResponseDto;
+import com.project.bumawiki.domain.docs.domain.VersionDocs;
+import com.project.bumawiki.domain.docs.presentation.dto.response.ContributeDocsResponseDto;
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.domain.user.domain.authority.Authority;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
@Getter
@@ -24,25 +21,17 @@ public class UserResponseDto {
private final Authority authority;
- private final List contributeDocs;
+ private final List contributeDocs;
- public UserResponseDto(User user) {
+ public UserResponseDto(User user, List versionDocs) {
this.id = user.getId();
this.email = user.getEmail();
this.nickName = user.getNickName();
this.authority = user.getAuthority();
this.name = user.getName();
- List contributeDocs = getContributeReversed(user);
- this.contributeDocs = contributeDocs
+ this.contributeDocs = versionDocs
.stream()
- .map(ContributeResponseDto::new)
- .collect(Collectors.toList());
- }
-
- @NotNull
- private static List getContributeReversed(User user) {
- List contributeDocs = user.getContributeDocs();
- Collections.reverse(contributeDocs);
- return contributeDocs;
+ .map(ContributeDocsResponseDto::new)
+ .toList();
}
}
diff --git a/src/main/java/com/project/bumawiki/domain/user/service/UserInfoService.java b/src/main/java/com/project/bumawiki/domain/user/service/UserInfoService.java
index 1aa08f68..b9a7a974 100644
--- a/src/main/java/com/project/bumawiki/domain/user/service/UserInfoService.java
+++ b/src/main/java/com/project/bumawiki/domain/user/service/UserInfoService.java
@@ -3,7 +3,6 @@
import com.project.bumawiki.domain.user.domain.User;
import com.project.bumawiki.domain.user.domain.repository.UserRepositoryMapper;
import com.project.bumawiki.global.annotation.ServiceWithTransactionalReadOnly;
-import com.project.bumawiki.global.util.SecurityUtil;
import lombok.RequiredArgsConstructor;
@@ -13,11 +12,6 @@ public class UserInfoService {
private final UserRepositoryMapper userRepositoryMapper;
- public User getLoginUser() {
- Long id = SecurityUtil.getCurrentUserWithLogin().getId();
- return userRepositoryMapper.getById(id);
- }
-
public User findAnotherInfo(Long userId) {
return userRepositoryMapper.getById(userId);
}
diff --git a/src/main/java/com/project/bumawiki/global/annotation/Implementation.java b/src/main/java/com/project/bumawiki/global/annotation/Implementation.java
index 63925934..ed8bc4c0 100644
--- a/src/main/java/com/project/bumawiki/global/annotation/Implementation.java
+++ b/src/main/java/com/project/bumawiki/global/annotation/Implementation.java
@@ -1,7 +1,15 @@
package com.project.bumawiki.global.annotation;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
import org.springframework.stereotype.Component;
+@Target(TYPE)
+@Retention(RUNTIME)
@Component
public @interface Implementation {
}
diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml
index 154ee5f2..713f1b4c 100644
--- a/src/test/resources/application.yml
+++ b/src/test/resources/application.yml
@@ -1,5 +1,5 @@
spring:
- datasource :
+ datasource:
url: jdbc:h2:mem:test
driverClassName: org.h2.Driver
username: sa