Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 19 additions & 35 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CD

on:
push:
branches: [ release ]
branches: [ feature/DBmodify ]

jobs:
deploy:
Expand All @@ -12,7 +12,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3

# application.yml은 Github Secret에 올리기
# application.yml은 GitHub Secret에 저장된 값으로 생성
- name: Generate application.yml
env:
APP_CONFIG: ${{ secrets.APPLICATION_YML }}
Expand All @@ -31,8 +31,8 @@ jobs:
APPLE_LOGIN_AUTH_KEY: ${{ secrets.APPLE_LOGIN_AUTH_KEY }}
run: |
mkdir -p src/main/resources/key
printf '%s\n' "$APPLE_LOGIN_AUTH_KEY" > src/main/resources/key/AuthKey_F4FRHB4D7Y.p8
printf '%s\n' "$APPLE_LOGIN_AUTH_KEY" > src/main/resources/key/AuthKey_HVFN44Q8BC.p8

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
Expand Down Expand Up @@ -66,34 +66,18 @@ jobs:
username: ec2-user
key: ${{ secrets.EC2_SSH_KEY }}
script: |
BACKUP_DIR=/home/ec2-user/db_backups
mkdir -p $BACKUP_DIR

CONTAINER_ID=$(docker ps -q --filter "name=glue-be")

if [ -n "$CONTAINER_ID" ] && docker exec $CONTAINER_ID test -f /app/data/mydb.db; then
echo "Backing up current DB to $BACKUP_DIR/mydb.db"
# 컨테이너에서 바로 복사 (덮어쓰기)
docker cp $CONTAINER_ID:/app/data/mydb.db \
$BACKUP_DIR/mydb.db
else
echo "⚠️ No DB file found in container, skipping backup"
fi

# 기존 컨테이너 중지/삭제
if [ -n "$CONTAINER_ID" ]; then
docker stop $CONTAINER_ID
docker rm $CONTAINER_ID
fi
docker rm -f glue-be || true

# 최신 이미지 풀 및 재배포 (호스트 볼륨 마운트)
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/glue-be:latest
docker run -d \
--name glue-be \
--network redis-network \
-p 8080:8080 \
-v /home/ec2-user/sqlite:/app/data \
-e SPRING_PROFILES_ACTIVE=prod \
-e REDIS_HOST=redis-server \
${{ secrets.DOCKERHUB_USERNAME }}/glue-be:latest
cd /home/ec2-user/glue-deploy

# 1) was 컨테이너가 실행 중이면 중지
docker-compose stop was || true

# 2) was 컨테이너를 완전히 삭제(포트 해제 포함)
docker-compose rm -f was || true

# 3) was 이미지 최신 버전으로 내려받기
docker-compose pull was

# 4) was 컨테이너를 백그라운드로 기동
docker-compose up -d was

echo "WAS redeployed via docker-compose"
9 changes: 5 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
implementation 'org.xerial:sqlite-jdbc:3.41.2.2' // sqlite jdbc
implementation 'org.hibernate.orm:hibernate-community-dialects' // sqlite3 dialect
// implementation 'org.xerial:sqlite-jdbc:3.41.2.2' // sqlite jdbc
// implementation 'org.hibernate.orm:hibernate-community-dialects' // sqlite3 dialect
implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
implementation 'com.nimbusds:nimbus-jose-jwt:9.37.2'
implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
Expand Down Expand Up @@ -83,8 +83,9 @@ dependencies {
// prometheus
implementation 'io.micrometer:micrometer-registry-prometheus'

// 헬스포인트
// implementation 'org.springframework.boot:spring-boot-starter-actuator'
// postgre
implementation 'org.postgresql:postgresql'


}

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/org/glue/glue_be/common/BaseEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.time.LocalDateTime;

import lombok.Getter;
import org.glue.glue_be.common.config.LocalDateTimeStringConverter;
import org.springframework.data.annotation.*;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

Expand All @@ -14,11 +13,9 @@
abstract public class BaseEntity {

@CreatedDate
@Convert(converter = LocalDateTimeStringConverter.class)
private LocalDateTime createdAt;

@LastModifiedDate
@Convert(converter = LocalDateTimeStringConverter.class)
private LocalDateTime updatedAt;

}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.glue.glue_be.inquiry.controller;


import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.glue.glue_be.auth.jwt.CustomUserDetails;
import org.glue.glue_be.common.response.BaseResponse;
import org.glue.glue_be.inquiry.dto.request.CreateInquiryRequest;
import org.glue.glue_be.inquiry.service.InquiryService;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequiredArgsConstructor
@RequestMapping("/api/inquiry")
@Tag(name = "Inquiry", description = "문의 API")
public class InquiryController {

private final InquiryService inquiryService;

@PostMapping
@Operation(summary = "문의 전송하기")
public BaseResponse<Void> createInquiry(@Valid @RequestBody CreateInquiryRequest request, @AuthenticationPrincipal CustomUserDetails auth) {
inquiryService.createInquiry(request, auth.getUserId());
return new BaseResponse<>();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.glue.glue_be.inquiry.dto.request;


import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;


public record CreateInquiryRequest(

@NotBlank(message = "제목은 필수값입니다")
String title,

@NotNull(message = "문의 유형은 필수값입니다")
Integer inquiryType,

@NotNull(message = "내용은 필수값입니다")
String content,

@Email
@NotBlank(message = "응답받을 이메일은 필수값입니다")
String responseEmail

) {}
49 changes: 49 additions & 0 deletions src/main/java/org/glue/glue_be/inquiry/entity/Inquiry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.glue.glue_be.inquiry.entity;


import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.glue.glue_be.common.BaseEntity;
import org.glue.glue_be.user.entity.User;


@Entity
@Getter
@Table(name = "inquiry")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Inquiry extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long inquiryId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

@Column(nullable = false)
private String title;

@Column(nullable = false)
private String content;

@Column(nullable = false)
private Integer inquiryType;

@Column(nullable = false)
private String responseEmail;

@Builder
public Inquiry(User user, String title, String content, Integer inquiryType, String responseEmail) {
this.user = user;
this.title = title;
this.content = content;
this.inquiryType = inquiryType;
this.responseEmail = responseEmail;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.glue.glue_be.inquiry.repository;


import org.glue.glue_be.inquiry.entity.Inquiry;
import org.springframework.data.jpa.repository.JpaRepository;


public interface InquiryRepository extends JpaRepository<Inquiry, Long> {


}
38 changes: 38 additions & 0 deletions src/main/java/org/glue/glue_be/inquiry/service/InquiryService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.glue.glue_be.inquiry.service;


import lombok.RequiredArgsConstructor;
import org.glue.glue_be.common.exception.BaseException;
import org.glue.glue_be.inquiry.dto.request.CreateInquiryRequest;
import org.glue.glue_be.inquiry.entity.Inquiry;
import org.glue.glue_be.inquiry.repository.InquiryRepository;
import org.glue.glue_be.user.entity.User;
import org.glue.glue_be.user.repository.UserRepository;
import org.glue.glue_be.user.response.UserResponseStatus;
import org.springframework.stereotype.Service;


@Service
@RequiredArgsConstructor
public class InquiryService {

private final InquiryRepository inquiryRepository;
private final UserRepository userRepository;

public void createInquiry(CreateInquiryRequest request, Long userId) {

User creator = userRepository.findById(userId).orElseThrow(() -> new BaseException(UserResponseStatus.USER_NOT_FOUND));

Inquiry inquiry = Inquiry.builder()
.user(creator)
.title(request.title())
.inquiryType(request.inquiryType())
.content(request.content())
.responseEmail(request.responseEmail())
.build();

inquiryRepository.save(inquiry);

}

}
2 changes: 0 additions & 2 deletions src/main/java/org/glue/glue_be/meeting/entity/Meeting.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import lombok.AccessLevel;
import lombok.Builder;
import org.glue.glue_be.common.BaseEntity;
import org.glue.glue_be.common.config.LocalDateTimeStringConverter;
import org.glue.glue_be.user.entity.User;

import java.time.LocalDateTime;
Expand Down Expand Up @@ -39,7 +38,6 @@ public class Meeting extends BaseEntity {
public static final long UPDATE_LIMIT_HOUR = 3; // 모임 수정이 불가능한 남은 모임시간

@Column(name = "meeting_time", nullable = false)
@Convert(converter = LocalDateTimeStringConverter.class)
private LocalDateTime meetingTime;

@Column(name = "current_participants", nullable = false)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/glue/glue_be/post/entity/Like.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.glue.glue_be.user.entity.User;

@Entity
@Table(name = "like")
@Table(name = "likes")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Like extends BaseEntity {
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/org/glue/glue_be/post/entity/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.*;

import jakarta.persistence.*;
import org.glue.glue_be.common.config.LocalDateTimeStringConverter;
import org.glue.glue_be.common.exception.BaseException;
import org.glue.glue_be.meeting.entity.Meeting;
import org.glue.glue_be.post.response.PostResponseStatus;
Expand Down Expand Up @@ -36,7 +35,6 @@ public class Post {
private Integer viewCount;

@Column(name = "bumped_at", nullable = true)
@Convert(converter = LocalDateTimeStringConverter.class)
private LocalDateTime bumpedAt;

public static final int BUMP_LIMIT = 3;
Expand Down
4 changes: 1 addition & 3 deletions src/main/java/org/glue/glue_be/user/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@

import lombok.*;
import org.glue.glue_be.common.BaseEntity;
import org.glue.glue_be.common.config.LocalDateStringConverter;


@Getter
@Entity
@Table(name = "user")
@Table(name = "users")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User extends BaseEntity {

Expand Down Expand Up @@ -45,7 +44,6 @@ public class User extends BaseEntity {
private Integer gender;

@Column(name = "birth_date", nullable = false)
@Convert(converter = LocalDateStringConverter.class)
private LocalDate birthDate;

@Column(name = "description", length = 50)
Expand Down