Skip to content

Commit

Permalink
refactor(docs): docs 도메인 전체 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
NameIsUser06 committed Apr 10, 2024
1 parent 678aaf2 commit c829bc6
Show file tree
Hide file tree
Showing 30 changed files with 117 additions and 342 deletions.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.time.LocalDateTime;

import com.project.bumawiki.domain.contribute.domain.Contribute;
import com.project.bumawiki.domain.docs.domain.VersionDocs;

import lombok.Getter;

Expand All @@ -14,14 +14,14 @@ public class ContributeResponseDto {
private final Long docsId;
private final LocalDateTime createTime;
private final String title;
private final Long versionDocsId;
private final Integer version;

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();
public ContributeResponseDto(VersionDocs versionDocs) {
this.userId = versionDocs.getUser().getId();
this.userNickName = versionDocs.getUser().getNickName();
this.docsId = versionDocs.getDocs().getId();
this.createTime = versionDocs.getCreatedAt();
this.title = versionDocs.getDocs().getTitle();
this.version = versionDocs.getVersion();
}
}

This file was deleted.

11 changes: 11 additions & 0 deletions src/main/java/com/project/bumawiki/domain/docs/domain/Docs.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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> versionDocs;

public Docs(String title, int enroll, DocsType docsType) {
this.title = title;
this.enroll = enroll;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
@@ -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.*;
Expand Down Expand Up @@ -28,15 +27,14 @@ public class CustomDocsRepositoryImpl implements CustomDocsRepository {
@Override
public VersionResponseDto getDocsVersion(Docs findDocs) {
List<VersionDocsResponseDto> versionDocsResponseDto = jpaQueryFactory
.select(constructor(VersionDocsResponseDto.class, versionDocs.thisVersionCreatedAt, user.id,
.select(constructor(VersionDocsResponseDto.class, versionDocs.createdAt, user.id,
user.nickName))
.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);
Expand All @@ -48,7 +46,7 @@ public List<DocsPopularResponseDto> 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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;
import java.util.Optional;

import com.project.bumawiki.domain.user.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.lang.NonNull;

Expand All @@ -19,4 +20,6 @@ public interface VersionDocsRepository extends JpaRepository<VersionDocs, Long>
List<VersionDocs> findByDocs(Docs docs);

Optional<VersionDocs> findByDocsAndVersion(Docs docs, Integer version);

List<VersionDocs> findAllByUser(User user);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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());
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
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.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;

import lombok.RequiredArgsConstructor;

import java.util.List;

@Implementation
@RequiredArgsConstructor
public class DocsReader {

private final DocsRepository docsRepository;
private final VersionDocsRepository versionDocsRepository;

public Docs findById(Long docsId) {
return docsRepository.findById(docsId)
Expand All @@ -23,4 +28,12 @@ public Docs findByTitle(String title) {
return docsRepository.findByTitle(title)
.orElseThrow(() -> new BumawikiException(ErrorCode.DOCS_NOT_FOUND));
}

public List<VersionDocs> findTop3ByDocs(Docs docs) {
return versionDocsRepository.findTop3ByDocsOrderByVersion(docs);
}

public VersionDocs findLastVersion(Docs docs) {
return versionDocsRepository.findFirstByDocsOrderByVersionDesc(docs);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
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;
Expand All @@ -16,6 +17,7 @@
@RequiredArgsConstructor
public class DocsValidator {
private final DocsRepository docsRepository;
private final DocsReader docsReader;

public void checkTitleAlreadyExist(Docs docs) {
if (docsRepository.existsByTitle(docs.getTitle())) {
Expand Down Expand Up @@ -60,4 +62,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);
}
}
Loading

0 comments on commit c829bc6

Please sign in to comment.