Skip to content

Commit

Permalink
Merge pull request #108 from APPS-sookmyung/feature/#106-elasticsearch
Browse files Browse the repository at this point in the history
[feature/#106-elasticsearch] Elasticsearch 데이터 배치
  • Loading branch information
hagoeun0119 authored Mar 4, 2024
2 parents 7e681c4 + 36ee22d commit 9881b55
Show file tree
Hide file tree
Showing 90 changed files with 1,699 additions and 461 deletions.
10 changes: 8 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ on:
branches:
- develop-mysql

# 본인이 설정한 값을 여기서 채워넣습니다.
# 리전, 버킷 이름, CodeDeploy 앱 이름, CodeDeploy 배포 그룹 이름
env:
AWS_REGION: ap-northeast-2
S3_BUCKET_NAME: pochak-github-actions-s3-bucket
Expand Down Expand Up @@ -48,6 +46,14 @@ jobs:
run: echo "${{ secrets.DEV_AUTHKEY }}" > ./src/main/resources/static/AuthKey_D5ZQTHUQ4K.p8
shell: bash

- name: add elasticsearch file
run: echo "${{ secrets.DEV_ES }}" > ./src/main/resources/application-ES.properties
shell: bash

- name: add lambda key file
run: echo "${{ secrets.DEV_LAMBDA }}" > ./src/main/resources/application-LAMBDA.properties
shell: bash

- name: gradlew에 실행 권한 부여
run: chmod +x ./gradlew
shell : bash
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ native
AuthKey_D5ZQTHUQ4K.p8

# ignore properties file
application-LAMBDA.properties
application-API-KEY.properties
application-ES.properties
application-OAUTH.properties
application-JWT.properties
application-TEST.properties
Expand Down
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ repositories {
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
Expand Down
23 changes: 23 additions & 0 deletions src/docs/asciidoc/comment.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,29 @@ ifndef::snippets[]
:snippets: ./build/generated-snippets
endif::[]

== `POST` Comment Upload API

댓글 업로드 API

=== Request
include::{snippets}/upload-comment/http-request.adoc[]

==== path parameters
include::{snippets}/upload-comment/path-parameters.adoc[]

==== request headers
include::{snippets}/upload-comment/request-headers.adoc[]

=== request body
include::{snippets}/upload-comment/request-body.adoc[]
include::{snippets}/upload-comment/request-fields.adoc[]

=== Response
==== response body
include::{snippets}/upload-comment/response-body.adoc[]
include::{snippets}/upload-comment/response-fields.adoc[]


== `GET` Comment Retrieval API

댓글 조회 API
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/apps/pochak/PochakApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.config.EnableElasticsearchAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
@EnableElasticsearchAuditing
@EnableJpaAuditing
public class PochakApplication {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
package com.apps.pochak.alarm.controller;

import com.apps.pochak.alarm.dto.response.AlarmElements;
import com.apps.pochak.alarm.service.AlarmService;
import com.apps.pochak.global.api_payload.ApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v2/alarms")
public class AlarmController {
private final AlarmService alarmService;

@GetMapping("")
public ApiResponse<AlarmElements> getAllAlarms(
@PageableDefault(30) final Pageable pageable
) {
return ApiResponse.onSuccess(alarmService.getAllAlarms(pageable));
}

@PostMapping("/{alarmId}")
public ApiResponse<Void> checkAlarm(
@PathVariable("alarmId") Long alarmId
) {
return ApiResponse.of(alarmService.checkAlarm(alarmId));
}
}
111 changes: 102 additions & 9 deletions src/main/java/com/apps/pochak/alarm/domain/Alarm.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
package com.apps.pochak.alarm.domain;

import com.apps.pochak.comment.domain.Comment;
import com.apps.pochak.follow.domain.Follow;
import com.apps.pochak.global.BaseEntity;
import com.apps.pochak.like.domain.LikeEntity;
import com.apps.pochak.member.domain.Member;
import com.apps.pochak.tag.domain.Tag;
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.SQLRestriction;

import static jakarta.persistence.FetchType.LAZY;
import static jakarta.persistence.GenerationType.IDENTITY;
import static jakarta.persistence.InheritanceType.SINGLE_TABLE;
import static lombok.AccessLevel.PROTECTED;

@Entity
@Getter
@DynamicInsert
@BatchSize(size = 100)
@Inheritance(strategy = SINGLE_TABLE)
@SQLDelete(sql = "UPDATE alarm SET status = 'DELETED' WHERE id = ?")
@SQLRestriction("status = 'ACTIVE'")
@NoArgsConstructor(access = PROTECTED)
@DiscriminatorColumn(name = "alarmType")
public abstract class Alarm extends BaseEntity {
public class Alarm extends BaseEntity {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
Expand All @@ -33,10 +32,104 @@ public abstract class Alarm extends BaseEntity {
@JoinColumn(name = "receiver_id")
private Member receiver;

@Setter
@Column(columnDefinition = "boolean default false")
private Boolean isChecked;

protected Alarm(Member receiver) {
@Enumerated(EnumType.STRING)
private AlarmType alarmType;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "comment_id")
private Comment comment;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "follow_id")
private Follow follow;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "like_id")
private LikeEntity like;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "tag_approval_id")
private Tag tag;

@Builder
private Alarm(Member receiver, Boolean isChecked, AlarmType alarmType, Comment comment, Follow follow, LikeEntity like, Tag tag) {
this.receiver = receiver;
this.isChecked = isChecked;
this.alarmType = alarmType;
this.comment = comment;
this.follow = follow;
this.like = like;
this.tag = tag;
}

public static Alarm getPostOwnerCommentAlarm(Comment comment, Member receiver) {
return Alarm.builder()
.comment(comment)
.receiver(receiver)
.alarmType(AlarmType.OWNER_COMMENT)
.build();
}

public static Alarm getTaggedPostCommentAlarm(Comment comment, Member receiver) {
return Alarm.builder()
.comment(comment)
.receiver(receiver)
.alarmType(AlarmType.TAGGED_COMMENT)
.build();
}

public static Alarm getCommentReplyAlarm(Comment comment, Member receiver) {
return Alarm.builder()
.comment(comment)
.receiver(receiver)
.alarmType(AlarmType.COMMENT_REPLY)
.build();
}

public static Alarm getFollowAlarm(Follow follow, Member receiver) {
return Alarm.builder()
.follow(follow)
.receiver(receiver)
.alarmType(AlarmType.FOLLOW)
.build();
}

public static Alarm getLikeAlarm(LikeEntity like, Member receiver) {
return Alarm.builder()
.like(like)
.receiver(receiver)
.alarmType(AlarmType.LIKE)
.build();
}

public static Alarm getTagApprovalAlarm(Tag tag, Member receiver) {
return Alarm.builder()
.tag(tag)
.receiver(receiver)
.alarmType(AlarmType.TAG_APPROVAL)
.build();
}

public Boolean isCommentAlarm() {
final AlarmType type = this.alarmType;
return type.equals(AlarmType.COMMENT_REPLY) ||
type.equals(AlarmType.TAGGED_COMMENT) ||
type.equals(AlarmType.OWNER_COMMENT);
}

public Boolean isFollowAlarm() {
return this.alarmType.equals(AlarmType.FOLLOW);
}

public Boolean isLikeAlarm() {
return this.alarmType.equals(AlarmType.LIKE);
}

public Boolean isTagApprovalAlarm() {
return this.alarmType.equals(AlarmType.TAG_APPROVAL);
}
}
6 changes: 6 additions & 0 deletions src/main/java/com/apps/pochak/alarm/domain/AlarmType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.apps.pochak.alarm.domain;

public enum AlarmType {
OWNER_COMMENT, TAGGED_COMMENT, COMMENT_REPLY,
FOLLOW, LIKE, TAG_APPROVAL
}
33 changes: 0 additions & 33 deletions src/main/java/com/apps/pochak/alarm/domain/CommentAlarm.java

This file was deleted.

25 changes: 0 additions & 25 deletions src/main/java/com/apps/pochak/alarm/domain/FollowAlarm.java

This file was deleted.

25 changes: 0 additions & 25 deletions src/main/java/com/apps/pochak/alarm/domain/LikeAlarm.java

This file was deleted.

33 changes: 0 additions & 33 deletions src/main/java/com/apps/pochak/alarm/domain/TagApprovalAlarm.java

This file was deleted.

Loading

0 comments on commit 9881b55

Please sign in to comment.