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
9 changes: 9 additions & 0 deletions aics-api/src/main/resources/db/data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,12 @@ VALUES ('참여 신청 방법을 자세히 알고 싶습니다.', '2025-03-03 00
('주요 시설 이용 안내도 포함되면 좋겠습니다.', '2025-03-03 06:02:00', '2025-03-03 06:02:00', 7, '202412348'),
('프로젝트 자료를 다운로드했습니다. 유익하네요.', '2025-03-03 07:01:00', '2025-03-03 07:01:00', 8, '202412347'),
('연구 참여 방법이 있나요?', '2025-03-03 07:02:00', '2025-03-03 07:02:00', 8, '202412346');

INSERT INTO graduation_user (name, email, advisor_professor, graduation_type, graduation_date,
mid_thesis_id, final_thesis_id, certificate_id, user_id, created_at, updated_at)
VALUES
('김철수', 'chulsoo@kyonggi.ac.kr', '이순신', '논문', '2028-02-28', 1, 2, NULL, '202512345', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('이영희', 'younghee@kyonggi.ac.kr', '홍길동', '자격증', '2028-08-31', NULL, NULL, 1, '202512346', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('박민수', 'minsu@kyonggi.ac.kr', '정약용', '논문', '2029-02-28', 3, NULL, NULL, '202512347', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('정수진', 'sujin@kyonggi.ac.kr', '김이박', '논문', '2030-02-28', 4, 5, NULL, '202512349', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('최동욱', 'dongwook@kyonggi.ac.kr', '이교수', '자격증', '2027-08-31', NULL, NULL, 2, '202512348', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
28 changes: 28 additions & 0 deletions aics-api/src/main/resources/db/schema.sql
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.

이상없는거 같습니다! 고생하셨어요

Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,31 @@ CREATE TABLE comment
CONSTRAINT fk_comment_author FOREIGN KEY (author_id) REFERENCES "user" (id)
ON DELETE CASCADE ON UPDATE CASCADE
);

-- graduation_user
CREATE TABLE graduation_user
(
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name VARCHAR(10) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE,
advisor_professor VARCHAR(20),
graduation_type VARCHAR(20) NOT NULL
CONSTRAINT graduaton_type_check
CHECK ((graduation_type)::TEXT = ANY (ARRAY ['THESIS', 'CERTIFICATE'])),
graduation_date DATE,
mid_thesis_id BIGINT,
final_thesis_id BIGINT,
certificate_id BIGINT,
user_id VARCHAR(10) NOT NULL,
created_at TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP(6) DEFAULT NULL,
CONSTRAINT fk_graduation_user_user FOREIGN KEY (user_id) REFERENCES "user" (id)
ON DELETE CASCADE,
CONSTRAINT fk_graduation_user_mid_thesis FOREIGN KEY (mid_thesis_id) REFERENCES "thesis" (id)
ON DELETE CASCADE,
CONSTRAINT fk_graduation_user_final_thesis FOREIGN KEY (final_thesis_id) REFERENCES "thesis" (id)
ON DELETE CASCADE,
CONSTRAINT fk_graduation_user_certificate FOREIGN KEY (certificate_id) REFERENCES "certificate" (id)
ON DELETE CASCADE,
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package kgu.developers.domain.graduationUser.domain;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum GraduationType {
THESIS("논문"),
CERTIFICATE("자격증"),
;

private final String description;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package kgu.developers.domain.graduationUser.domain;

import lombok.Builder;
import lombok.Getter;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Getter
@Builder
public class GraduationUser {
private Long id;
private String name;
private String email;
private String advisorProfessor;
private GraduationType graduationType;
private LocalDate graduationDate;
private Long midThesisId;
private Long finalThesisId;
private Long certificateId;
private String userId;

protected LocalDateTime createdAt;
protected LocalDateTime updatedAt;
protected LocalDateTime deletedAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package kgu.developers.domain.graduationUser.infrastructure.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import kgu.developers.common.domain.BaseTimeEntity;
import kgu.developers.domain.graduationUser.domain.GraduationType;
import kgu.developers.domain.graduationUser.domain.GraduationUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDate;

import static jakarta.persistence.EnumType.STRING;
import static lombok.AccessLevel.PRIVATE;
import static lombok.AccessLevel.PROTECTED;

@Entity
@Getter
@Builder
@Table(name = "\"graduation_user\"")
@NoArgsConstructor(access = PROTECTED)
@AllArgsConstructor(access = PRIVATE)
public class GraduationUserJpaEntity extends BaseTimeEntity {

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

@Column(nullable = false, length = 10)
private String name;

@Column(unique = true, nullable = false, length = 50)
private String email;

@Column(nullable = false, length = 20)
private String advisorProfessor;

@Column(nullable = false)
@Enumerated(STRING)
private GraduationType graduationType;

private LocalDate graduationDate;

private Long midThesisId;

private Long finalThesisId;

private Long certificateId;

private String userId;

public static GraduationUserJpaEntity toEntity(GraduationUser graduationUser) {
if(graduationUser == null) {
return null;
}

return GraduationUserJpaEntity.builder()
.id(graduationUser.getId())
.name(graduationUser.getName())
.email(graduationUser.getEmail())
.advisorProfessor(graduationUser.getAdvisorProfessor())
.graduationType(graduationUser.getGraduationType())
.graduationDate(graduationUser.getGraduationDate())
.midThesisId(graduationUser.getMidThesisId())
.finalThesisId(graduationUser.getFinalThesisId())
.certificateId(graduationUser.getCertificateId())
.userId(graduationUser.getUserId())
.build();
}

public static GraduationUser toDomain(GraduationUserJpaEntity entity) {
if(entity == null) {
return null;
}

return GraduationUser.builder()
.id(entity.getId())
.name(entity.getName())
.email(entity.getEmail())
.advisorProfessor(entity.getAdvisorProfessor())
.graduationType(entity.getGraduationType())
.graduationDate(entity.getGraduationDate())
.midThesisId(entity.getMidThesisId())
.finalThesisId(entity.getFinalThesisId())
.certificateId(entity.getCertificateId())
.userId(entity.getUserId())
.createdAt(entity.getCreatedAt())
.updatedAt(entity.getUpdatedAt())
.deletedAt(entity.getDeletedAt())
.build();
}

}