Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e853545
Init: Create program controller + test
jaekkang Dec 11, 2023
e3454ef
Style: Remove test + enum (not use)
jaekkang Dec 11, 2023
cdb3183
Feat: Add method for find by theme in program service
jaekkang Dec 11, 2023
e127ec0
Feat: Create request & response dto for program service
jaekkang Dec 11, 2023
eb9ba88
Init: Create OpenDay entity
jaekkang Dec 11, 2023
c523167
Init: Create FAQ entity
jaekkang Dec 11, 2023
dae213c
Feat: Edit method name (create / get -> save / find)
jaekkang Dec 11, 2023
581d9d9
Feat: Add Service for faq controller
jaekkang Dec 11, 2023
2370a8f
Feat: Create entity for fixed date info in Program
jaekkang Dec 12, 2023
be6b1d9
Feat: rm OneDay and edit reservation entity
jaekkang Dec 12, 2023
e69c8dd
Feat: Edit some column name
jaekkang Dec 12, 2023
e59b02a
Feat: Add update method for FAQ
jaekkang Dec 14, 2023
3846853
Style: Edit directory root,
jaekkang Dec 14, 2023
f36da77
Comment: Edit comment
jaekkang Dec 14, 2023
5a754e5
Feat: Create banner service , controller
jaekkang Dec 14, 2023
2211a2a
Feat: Edit faq
jaekkang Dec 14, 2023
7219a7a
Feat: Edit faq
jaekkang Dec 14, 2023
727fc04
gitignore
jaekkang Dec 14, 2023
6edb29d
Feat: add base entity in banner
jaekkang Dec 14, 2023
6d7af50
Style: Change method name ( findAll -> findBanners)
jaekkang Dec 14, 2023
50d15d3
Feat: Add exception for find logic in banner
jaekkang Dec 14, 2023
93e5d63
Feat: Add exception for find logic in FAQ & edit method name
jaekkang Dec 14, 2023
a863640
Feat: Add delete method in Faq
jaekkang Dec 15, 2023
ae12308
Style: Variable name integrated
jaekkang Dec 15, 2023
366d75c
Feat: Add Notification entity
jaekkang Jan 2, 2024
ae25628
Style: Change variable name
jaekkang Jan 2, 2024
ef5d86a
Feat: merge to main
jaekkang Jan 8, 2024
4523be4
Feat: merge
jaekkang Jan 8, 2024
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
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,8 @@ $RECYCLE.BIN/
*.lnk

# application config
src/main/resources/application.properties
src/main/resources/application.yml
*.properties
*.yml


# End of https://www.toptal.com/developers/gitignore/api/java,intellij,macos,windows
19 changes: 0 additions & 19 deletions docker-compose.yml

This file was deleted.

7 changes: 0 additions & 7 deletions gradle/wrapper/gradle-wrapper.properties

This file was deleted.

2 changes: 2 additions & 0 deletions src/main/java/TripAmi/backend/BackendApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

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

@SpringBootApplication
@EnableJpaAuditing
public class BackendApplication {

public static void main(String[] args) {
Expand Down
22 changes: 14 additions & 8 deletions src/main/java/TripAmi/backend/app/banner/domain/Banner.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package TripAmi.backend.app.banner.domain;

import javax.persistence.*;
import TripAmi.backend.app.util.BaseEntity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;

import java.time.LocalDateTime;
import javax.persistence.*;

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -24,14 +23,21 @@ public class Banner {

private String title;

@CreatedDate
@Column(nullable = false, name = "create_at")
private LocalDateTime createdAt;
@Embedded
private BaseEntity baseEntity = new BaseEntity();

@Builder
public Banner(String imgUrl, String title, LocalDateTime createdAt) {
public Banner(String imgUrl, String title) {
this.imgUrl = imgUrl;
this.title = title;
this.createdAt = createdAt;
}

public void update(String title, String imgUrl) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faq처럼 updateBanner 이런 식으로 메서드명 통일하면 좋겠습니다

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faq.update() 처럼 되서 banner 도 updateBanner 가 아닌 그냥 update로 바꾸고 싶은데 어떠세요?

this.title = title;
this.imgUrl = imgUrl;
}

public void delete() {
this.baseEntity.delete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
import org.springframework.data.jpa.repository.JpaRepository;

public interface BannerRepository extends JpaRepository<Banner, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package TripAmi.backend.app.banner.exception;

public class BannerNotFound extends RuntimeException{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package TripAmi.backend.app.banner.infra;

import TripAmi.backend.app.banner.domain.Banner;
import TripAmi.backend.app.banner.domain.BannerRepository;
import TripAmi.backend.app.banner.exception.BannerNotFound;
import TripAmi.backend.app.banner.service.BannerService;
import TripAmi.backend.web.api.banner.response.BannerDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class BannerServiceImpl implements BannerService {
private final BannerRepository bannerRepository;

@Override
@Transactional
public void join(String title, String imgUrl) {
Banner banner = Banner.builder()
.title(title)
.imgUrl(imgUrl)
.build();
bannerRepository.save(banner);
}

@Override
public BannerDto findById(Long id) {
Banner findOne = bannerRepository.findById(id).orElseThrow(BannerNotFound::new);
return new BannerDto(id, findOne.getTitle(), findOne.getImgUrl());
}

@Override
public List<BannerDto> findBanners() {
List<Banner> items = bannerRepository.findAll();
return items.stream()
.map(item -> new BannerDto(
item.getId(),
item.getTitle(),
item.getImgUrl()
)).collect(Collectors.toList());
}

@Override
public BannerDto update(Long id, String title, String imgUrl) {
Banner banner = bannerRepository.findById(id).orElseThrow(BannerNotFound::new);
banner.update(title, imgUrl);
return BannerDto.builder()
.title(title)
.imgUrl(imgUrl)
.build();
}

@Override
public void delete(Long id) {
Banner banner = bannerRepository.findById(id).orElseThrow(BannerNotFound::new);
banner.delete();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package TripAmi.backend.app.banner.service;

import TripAmi.backend.web.api.banner.response.BannerDto;

import java.util.List;

public interface BannerService {
void join(String title, String imgUrl);

BannerDto findById(Long id);

List<BannerDto> findBanners();

BannerDto update(Long id, String title, String imgUrl);

void delete(Long id);
}
41 changes: 41 additions & 0 deletions src/main/java/TripAmi/backend/app/faq/domain/Faq.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package TripAmi.backend.app.faq.domain;

import TripAmi.backend.app.util.BaseEntity;
import javax.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@Table(name = "faq")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Faq {
Comment thread
jaekkang marked this conversation as resolved.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "faq_id")
private Long id;

private String question;

private String answer;

@Embedded
private BaseEntity baseEntity = new BaseEntity();

@Builder
public Faq(String question, String answer) {
this.question = question;
this.answer = answer;
}

public void update(String question, String answer) {
this.question = question;
this.answer = answer;
}

public void delete() {
this.baseEntity.delete();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package TripAmi.backend.app.faq.domain;

import org.springframework.data.jpa.repository.JpaRepository;

public interface FaqRepository extends JpaRepository<Faq, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package TripAmi.backend.app.faq.exception;

public class FaqNotFound extends RuntimeException{
}
67 changes: 67 additions & 0 deletions src/main/java/TripAmi/backend/app/faq/infra/FaqServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package TripAmi.backend.app.faq.infra;

import TripAmi.backend.app.faq.domain.Faq;
import TripAmi.backend.app.faq.domain.FaqRepository;
import TripAmi.backend.app.faq.exception.FaqNotFound;
import TripAmi.backend.app.faq.service.FaqService;
import TripAmi.backend.web.api.faq.response.FaqDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class FaqServiceImpl implements FaqService {
private final FaqRepository faqRepository;

@Override
@Transactional
public void save(String question, String answer) {
Faq faq = Faq.builder()
.question(question)
.answer(answer)
.build();
faqRepository.save(faq);
}

@Override
public FaqDto findById(Long id) {
Faq item = faqRepository.findById(id).orElseThrow(FaqNotFound::new);
return FaqDto.builder()
.question(item.getQuestion())
.answer(item.getAnswer())
.build();
}

@Override
public List<FaqDto> findFaqs() {
List<Faq> allFaq = faqRepository.findAll();
return allFaq.stream()
.map(item -> new FaqDto(
item.getQuestion(),
item.getAnswer()
))
.collect(Collectors.toList());
}

@Override
@Transactional
public FaqDto update(Long faqId, String question, String answer) {
Faq faq = faqRepository.findById(faqId).orElseThrow(FaqNotFound::new);
faq.update(question, answer);
return FaqDto.builder()
.question(question)
.answer(answer)
.build();
}

@Override
public void delete(Long id) {
Faq faq = faqRepository.findById(id).orElseThrow(FaqNotFound::new);
faq.delete();
}
}
19 changes: 19 additions & 0 deletions src/main/java/TripAmi/backend/app/faq/service/FaqService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package TripAmi.backend.app.faq.service;

import TripAmi.backend.web.api.faq.request.FaqCreateRequest;
import TripAmi.backend.web.api.faq.request.FaqUpdateRequest;
import TripAmi.backend.web.api.faq.response.FaqDto;

import java.util.List;

public interface FaqService {
void save(String question, String answer);

FaqDto findById(Long id);

List<FaqDto> findFaqs();

FaqDto update(Long faqId, String question, String answer);

void delete(Long id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package TripAmi.backend.app.notification.domain;

import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

import java.util.Map;

public interface EmitterRepository {
SseEmitter save(String emitterId, SseEmitter sseEmitter);

void saveEventCache(String emitterId, Object event);

Map<String, SseEmitter> findAllEmitterStartWithMemberId(String memberId);

Map<String, Object> findAllEventCacheStartWithByMemberId(String memberId);

void deleteById(String id);

void deleteAllEmitterStartWithId(String memberId);

void deleteAllEventCacheStartWithId(String memberId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package TripAmi.backend.app.notification.domain;

import TripAmi.backend.app.util.BaseEntity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Entity
@Getter
@Table(name = "notification")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Notification {

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

private String title;

private String content;

@Column(name = "is_read")
private Boolean isRead;

@Embedded
private BaseEntity baseEntity = new BaseEntity();

@Builder
public Notification(String title, String content) {
this.title = title;
this.content = content;
this.isRead = false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package TripAmi.backend.app.notification.domain;

import org.springframework.data.jpa.repository.JpaRepository;

public interface NotificationRepository extends JpaRepository<Notification, Long> {
}
Loading