Skip to content

Commit

Permalink
merge develop to main (#72)
Browse files Browse the repository at this point in the history
* feat: 공지사항 생성, 공지사항 읽기 기능 추가 (#1)

* ✨ 패키지 및 엔티티 생성

* ✨ BaseTimeEntity 생성, PostEntity 기본 내용 작성

* ✨ PostController 생성 및 기본 내용 작성

* ✨ postService 생성

* ✨ Exceptions.kt 생성

* ✨ postDto 생성

* ✨ postRepository 생성 및 기본 내용 작성

* 💚 application.yaml 로컬 환경에서 작동하도록 설정

* feat: createPost 기능 생성

* refactor: 리뷰 주신 거 수정

* refactor: post -> notice 수정 등

* chore: .idea 디렉토리 삭제

* chore: PR 템플릿 생성 (#2)

* feat: 로컬 db용 docker-compose 파일 추가 및 application.yaml 수정 (#4)

* feat: 공지사항 수정, 삭제, 태그 기능 추가 (#3)

* fix: ExceptionHandler 추가

* feat: updateNotice 추가, valid 추가

* feat: deleteNotice 추가

* feat: enrollTag 기능 추가, noticeTag 연관 엔티티 추가

* feat: 공지사항 작성할 때 태그 생성 및 수정

* fix: 로컬 db 없앰

* fix: pr 리뷰 수정

* fix: pr 리뷰 수정

* fix: noticeTag assign

* feat: 구성원(교수) 생성 및 조회 API 구현  (#8)

* feat: 교수 엔티티 및 DTO 설계

* feat: 교수 생성 및 조회

* Docs: Swagger 추가 (#7)

* Docs: Add swagger dependency

* Docs: Add basic config for swagger

* Docs: Add basic configuration for swagger.

* feat: 페이지네이션+검색 기능 추가 (#5)

* feat: isPublic, isSlide, isPinned 추가

* feat: queryDsl 적용 위해 gradle 추가 fix: javax -> jakarta 변경

* feat: queryDsl 도입

* feat: 키워드+태그 검색 추가

* feat: search query에 isDeleted, isPublic 추가 및 isPinned 우선순위 설정

* fix: requestBody -> requestParam 수정

* feat: 페이지네이션 추가

* fix: 키워드 booleanBuilder 추가, application.yaml 수정

* fix: searchNotice readOnly 추가

* fix: SearchRequest 삭제

* fix: NoticeDto tags 추가

* fix: pr 리뷰 수정 / feat: 검색 기능 보강 및 수정

* fix:코드 수정

* fix: SearchResponse isPinned 추가

* fix: SearchResponse에 total 추가

* fix: 페이지 개수 수정

* fix: searchNotice queryDsl 오류 수정

* fix: local 설정 변경

* CICD: 배포 자동화 (#6)

* CICD: Change expose port and added image tag

* CICD: Change ddl-auto to create in prod profile for test

* CICD: Added Deploy github action

* CICD: Merge jobs to one job

* Fix: Change checkout order to first step

* CICD: Add context for docker build action

* Fix: Change spring profile arg position

* CICD: Change openjdk version to 17

* CICD: Change docker compose build image tag to latest

* CICD: Change to use ghcr repository.

* Fix: change list to string in docker push tags.

* Fix: Change registry to ghcr.io

* Fix: change env to pass to github action instead of ssh export command

* Fix: unwrap bracket.

* Fix: wrap Profile with ""

* CICD: Add .env file

* CICD: Change prod ddl-auto to create (for developing), and add TODO comment.

* CICD: Remove cicd/deploy branch for condition.

* feat: 구성원(교수) 수정 및 삭제 API (#9)

* feat: 교수 조회시 최종학력이 앞으로 오게끔 정렬

* feat: 교수 수정 및 삭제 API

* feat: 학력과 경력 엔티티 필드 변경, 수정 API 구현

* feat: 구성원(행정직원) CRUD API (#10)

* feat: 행정직원 엔티티 및 DTO 설계

* feat: 행정직원 CRUD

* feat: 교수 조회시 이름순 정렬

* fix: 교수 연구 분야 Set -> List 로 변경

* feat: 행정직원 주요업무 업데이트 구현

* feat: news 패키지 추가, 디벨롭 및 프론트에 맞게 엔티티 변경 (#12)

* feat: news 패키지 생성

* feat: readNews 생성, news 패키지 추가로 인한 명칭 변경

* feat: createNews, enrollTag(새소식) 추가, news 패키지로 인한 명칭 추가 변경

* feat: updateNews, deleteNews 추가

* fix: searchNotice 관련 명칭 변경

* feat: searchNews 추가

* fix: develop 브랜치 반영, 프론트 요구사항 반영

* feat: readNotice, readNews에 이전글 다음글 추가

* 태그 업데이트 코드 리팩터링중

* refactor: 코드 수정, 이전제목 추가

* fix: 게시글 하나일때 read 가능

* fix: prevNext null 없애기

* fix: 이전글 다음글 null 수정

* fix: main에서 develop으로 pr (#16)

* feat: merge develop to main (#13)

* feat: 공지사항 생성, 공지사항 읽기 기능 추가 (#1)

* ✨ 패키지 및 엔티티 생성

* ✨ BaseTimeEntity 생성, PostEntity 기본 내용 작성

* ✨ PostController 생성 및 기본 내용 작성

* ✨ postService 생성

* ✨ Exceptions.kt 생성

* ✨ postDto 생성

* ✨ postRepository 생성 및 기본 내용 작성

* 💚 application.yaml 로컬 환경에서 작동하도록 설정

* feat: createPost 기능 생성

* refactor: 리뷰 주신 거 수정

* refactor: post -> notice 수정 등

* chore: .idea 디렉토리 삭제

* chore: PR 템플릿 생성 (#2)

* feat: 로컬 db용 docker-compose 파일 추가 및 application.yaml 수정 (#4)

* feat: 공지사항 수정, 삭제, 태그 기능 추가 (#3)

* fix: ExceptionHandler 추가

* feat: updateNotice 추가, valid 추가

* feat: deleteNotice 추가

* feat: enrollTag 기능 추가, noticeTag 연관 엔티티 추가

* feat: 공지사항 작성할 때 태그 생성 및 수정

* fix: 로컬 db 없앰

* fix: pr 리뷰 수정

* fix: pr 리뷰 수정

* fix: noticeTag assign

* feat: 구성원(교수) 생성 및 조회 API 구현  (#8)

* feat: 교수 엔티티 및 DTO 설계

* feat: 교수 생성 및 조회

* Docs: Swagger 추가 (#7)

* Docs: Add swagger dependency

* Docs: Add basic config for swagger

* Docs: Add basic configuration for swagger.

* feat: 페이지네이션+검색 기능 추가 (#5)

* feat: isPublic, isSlide, isPinned 추가

* feat: queryDsl 적용 위해 gradle 추가 fix: javax -> jakarta 변경

* feat: queryDsl 도입

* feat: 키워드+태그 검색 추가

* feat: search query에 isDeleted, isPublic 추가 및 isPinned 우선순위 설정

* fix: requestBody -> requestParam 수정

* feat: 페이지네이션 추가

* fix: 키워드 booleanBuilder 추가, application.yaml 수정

* fix: searchNotice readOnly 추가

* fix: SearchRequest 삭제

* fix: NoticeDto tags 추가

* fix: pr 리뷰 수정 / feat: 검색 기능 보강 및 수정

* fix:코드 수정

* fix: SearchResponse isPinned 추가

* fix: SearchResponse에 total 추가

* fix: 페이지 개수 수정

* fix: searchNotice queryDsl 오류 수정

* fix: local 설정 변경

* CICD: 배포 자동화 (#6)

* CICD: Change expose port and added image tag

* CICD: Change ddl-auto to create in prod profile for test

* CICD: Added Deploy github action

* CICD: Merge jobs to one job

* Fix: Change checkout order to first step

* CICD: Add context for docker build action

* Fix: Change spring profile arg position

* CICD: Change openjdk version to 17

* CICD: Change docker compose build image tag to latest

* CICD: Change to use ghcr repository.

* Fix: change list to string in docker push tags.

* Fix: Change registry to ghcr.io

* Fix: change env to pass to github action instead of ssh export command

* Fix: unwrap bracket.

* Fix: wrap Profile with ""

* CICD: Add .env file

* CICD: Change prod ddl-auto to create (for developing), and add TODO comment.

* CICD: Remove cicd/deploy branch for condition.

* feat: 구성원(교수) 수정 및 삭제 API (#9)

* feat: 교수 조회시 최종학력이 앞으로 오게끔 정렬

* feat: 교수 수정 및 삭제 API

* feat: 학력과 경력 엔티티 필드 변경, 수정 API 구현

* feat: 구성원(행정직원) CRUD API (#10)

* feat: 행정직원 엔티티 및 DTO 설계

* feat: 행정직원 CRUD

* feat: 교수 조회시 이름순 정렬

* fix: 교수 연구 분야 Set -> List 로 변경

* feat: 행정직원 주요업무 업데이트 구현

* feat: news 패키지 추가, 디벨롭 및 프론트에 맞게 엔티티 변경 (#12)

* feat: news 패키지 생성

* feat: readNews 생성, news 패키지 추가로 인한 명칭 변경

* feat: createNews, enrollTag(새소식) 추가, news 패키지로 인한 명칭 추가 변경

* feat: updateNews, deleteNews 추가

* fix: searchNotice 관련 명칭 변경

* feat: searchNews 추가

* fix: develop 브랜치 반영, 프론트 요구사항 반영

* feat: readNotice, readNews에 이전글 다음글 추가

* 태그 업데이트 코드 리팩터링중

* refactor: 코드 수정, 이전제목 추가

* fix: 게시글 하나일때 read 가능

* fix: prevNext null 없애기

* fix: 이전글 다음글 null 수정

---------

Co-authored-by: Jo Seonggyu <blueland1998@snu.ac.kr>
Co-authored-by: 우혁준 (HyukJoon Woo) <whjoon0225@naver.com>

* hotfix: 사용하지않는 Dto 및 엔티티 삭제 (#14)

---------

Co-authored-by: Junhyeong Kim <indiv0227@snu.ac.kr>
Co-authored-by: 우혁준 (HyukJoon Woo) <whjoon0225@naver.com>

* feat: seminar 패키지 추가 (#17)

* feat: createSeminar, readSeminar, updateSeminar 추가

* feat: deleteSeminar, searchSeminar 추가

* fix: distinct 삭제

* hotfix: 불필요한 dto 삭제 (#20)

* hotfix: 불필요한 dto 삭제

* build.gradle 수정

* fix: 이미지 uri 필드 추가 및 프론트 요구사항 반영 (#21)

* feat: 이미지 uri 필드 추가 및 isActive 대신 status 추가

* fix: 행정직원 전체 조회 응답에서 task 삭제

* fix: 교수진 페이지 응답 수정

* feat: introduction 패키지, undergraduate 패키지 추가 (#22)

* feat: createUndergraduate, readUndergraduate 추가

* feat: readAllCourses, createCourse, readCourse 추가

* introduction 패키지 추가

* fix: dto에서 postType 삭제

* fix: postType pathVariable->requestBody 수정, 오타 수정

* fix: 프론트와 협의하여 이름 등 변경

* feat: academics 패키지 대학원도 가능하도록 추가

* feat: 장학제도 세부 장학금 create, read 추가

* fix: 수정

* fix:수정

* feat: admissions, research 패키지 추가 (#23)

* feat: admissions-학부 에서 create, read 추가

* feat: admissions-대학원도 작성 가능하도록 추가

* feat: createResearch 추가

* feat: createLab 추가

* fix: 다른 패키지에 맞게 수정

* research-groups, research-centers에서 read, update 추가

* fix: admissions, research에서 프론트와 협의하여 이름 등 수정

* fix: 오타 수정

* fix: enum 추가, pr 리뷰 반영

* feat: oidc 로그인 (#27)

* feat: oidc 로그인

* feat: TaskEntity name 추가

* feat: 배포 설정

* feat: 유저 정보에 학번 추가, 로그인 시 sub claim 확인

* feat: 배포 테스트 위해 redirect-uri 변경

* fix: groups claim 소문자로 수정

* feat: idsnucse 다운 되었을때 에러 처리

* feat: idsnucse 다운 되었을때 에러 처리

* feat: cors 설정 (#30)

* fix: cors 추가 설정 (#32)

* feat: cors 설정

* feat: cors 설정

* fix: CORS (#34)

* feat: cors 설정

* feat: cors 설정

* feat: cors 설정

* fix: about, academics, admissions 패키지 수정 (#25)

* fix: admissions, about 컨트롤러 변경

* fix: academics 컨트롤러 수정

* 커밋중

* fix: pr 리뷰 반영

* feat: readMain 추가

* pr 리뷰 반영

* feat: 일반 예약 및 정기 예약 API (#28)

* feat: oidc 로그인

* feat: TaskEntity name 추가

* feat: 배포 설정

* feat: 유저 정보에 학번 추가, 로그인 시 sub claim 확인

* feat: 배포 테스트 위해 redirect-uri 변경

* fix: groups claim 소문자로 수정

* feat: 예약 엔티티 및 DTO 설계

* feat: 일반 예약 및 정기 예약

* feat: 예약 조회 API (#39)

* feat: 권한 관리 위해 커스텀 어노테이션 생성

* feat: 예약 단건, 주별, 월별 조회 API

* fix: 로컬 DB 설정 수정

* feat: 유저 조회 중복 쿼리 방지

* feat: 예약 응답에 recurrenceId 추가

* feat: 동시 예약 방지

* fix: 시큐리티 로그 다시 로컬에서만 보이도록 변경

* feat: 목데이터 날라가지 않도록 ddl-auto 수정

* feat: about, member, news, seminar 메인 이미지 업로드 추가 (#38)

* feat: uploadImage 추가

* feat: about, member 사진 업로드 추가

* feat: news, seminar 사진 업로드 추가

* refactor: imageEntity 추가 리팩토링

* fix: gif 삭제

* fix: application.yaml 수정

* fix: newsService 태그 -> 이미지로 순서 변경

* fix: pr 리뷰 수정

* fix: extension 없애고, mainImage로 바꾸고, uuid 없애기

* fix: var 삭제

---------

Co-authored-by: Junhyeong Kim <indiv0227@snu.ac.kr>

* CICD: Change deploy port to 8080 (#40)

* [Merge] (#41) (#42)

* feat: 공지사항 생성, 공지사항 읽기 기능 추가 (#1)

* ✨ 패키지 및 엔티티 생성

* ✨ BaseTimeEntity 생성, PostEntity 기본 내용 작성

* ✨ PostController 생성 및 기본 내용 작성

* ✨ postService 생성

* ✨ Exceptions.kt 생성

* ✨ postDto 생성

* ✨ postRepository 생성 및 기본 내용 작성

* 💚 application.yaml 로컬 환경에서 작동하도록 설정

* feat: createPost 기능 생성

* refactor: 리뷰 주신 거 수정

* refactor: post -> notice 수정 등

* chore: .idea 디렉토리 삭제

* chore: PR 템플릿 생성 (#2)

* feat: 로컬 db용 docker-compose 파일 추가 및 application.yaml 수정 (#4)

* feat: 공지사항 수정, 삭제, 태그 기능 추가 (#3)

* fix: ExceptionHandler 추가

* feat: updateNotice 추가, valid 추가

* feat: deleteNotice 추가

* feat: enrollTag 기능 추가, noticeTag 연관 엔티티 추가

* feat: 공지사항 작성할 때 태그 생성 및 수정

* fix: 로컬 db 없앰

* fix: pr 리뷰 수정

* fix: pr 리뷰 수정

* fix: noticeTag assign

* feat: 구성원(교수) 생성 및 조회 API 구현  (#8)

* feat: 교수 엔티티 및 DTO 설계

* feat: 교수 생성 및 조회

* Docs: Swagger 추가 (#7)

* Docs: Add swagger dependency

* Docs: Add basic config for swagger

* Docs: Add basic configuration for swagger.

* feat: 페이지네이션+검색 기능 추가 (#5)

* feat: isPublic, isSlide, isPinned 추가

* feat: queryDsl 적용 위해 gradle 추가 fix: javax -> jakarta 변경

* feat: queryDsl 도입

* feat: 키워드+태그 검색 추가

* feat: search query에 isDeleted, isPublic 추가 및 isPinned 우선순위 설정

* fix: requestBody -> requestParam 수정

* feat: 페이지네이션 추가

* fix: 키워드 booleanBuilder 추가, application.yaml 수정

* fix: searchNotice readOnly 추가

* fix: SearchRequest 삭제

* fix: NoticeDto tags 추가

* fix: pr 리뷰 수정 / feat: 검색 기능 보강 및 수정

* fix:코드 수정

* fix: SearchResponse isPinned 추가

* fix: SearchResponse에 total 추가

* fix: 페이지 개수 수정

* fix: searchNotice queryDsl 오류 수정

* fix: local 설정 변경

* CICD: 배포 자동화 (#6)

* CICD: Change expose port and added image tag

* CICD: Change ddl-auto to create in prod profile for test

* CICD: Added Deploy github action

* CICD: Merge jobs to one job

* Fix: Change checkout order to first step

* CICD: Add context for docker build action

* Fix: Change spring profile arg position

* CICD: Change openjdk version to 17

* CICD: Change docker compose build image tag to latest

* CICD: Change to use ghcr repository.

* Fix: change list to string in docker push tags.

* Fix: Change registry to ghcr.io

* Fix: change env to pass to github action instead of ssh export command

* Fix: unwrap bracket.

* Fix: wrap Profile with ""

* CICD: Add .env file

* CICD: Change prod ddl-auto to create (for developing), and add TODO comment.

* CICD: Remove cicd/deploy branch for condition.

* feat: 구성원(교수) 수정 및 삭제 API (#9)

* feat: 교수 조회시 최종학력이 앞으로 오게끔 정렬

* feat: 교수 수정 및 삭제 API

* feat: 학력과 경력 엔티티 필드 변경, 수정 API 구현

* feat: 구성원(행정직원) CRUD API (#10)

* feat: 행정직원 엔티티 및 DTO 설계

* feat: 행정직원 CRUD

* feat: 교수 조회시 이름순 정렬

* fix: 교수 연구 분야 Set -> List 로 변경

* feat: 행정직원 주요업무 업데이트 구현

* feat: news 패키지 추가, 디벨롭 및 프론트에 맞게 엔티티 변경 (#12)

* feat: news 패키지 생성

* feat: readNews 생성, news 패키지 추가로 인한 명칭 변경

* feat: createNews, enrollTag(새소식) 추가, news 패키지로 인한 명칭 추가 변경

* feat: updateNews, deleteNews 추가

* fix: searchNotice 관련 명칭 변경

* feat: searchNews 추가

* fix: develop 브랜치 반영, 프론트 요구사항 반영

* feat: readNotice, readNews에 이전글 다음글 추가

* 태그 업데이트 코드 리팩터링중

* refactor: 코드 수정, 이전제목 추가

* fix: 게시글 하나일때 read 가능

* fix: prevNext null 없애기

* fix: 이전글 다음글 null 수정

* fix: main에서 develop으로 pr (#16)

* feat: merge develop to main (#13)

* feat: 공지사항 생성, 공지사항 읽기 기능 추가 (#1)

* ✨ 패키지 및 엔티티 생성

* ✨ BaseTimeEntity 생성, PostEntity 기본 내용 작성

* ✨ PostController 생성 및 기본 내용 작성

* ✨ postService 생성

* ✨ Exceptions.kt 생성

* ✨ postDto 생성

* ✨ postRepository 생성 및 기본 내용 작성

* 💚 application.yaml 로컬 환경에서 작동하도록 설정

* feat: createPost 기능 생성

* refactor: 리뷰 주신 거 수정

* refactor: post -> notice 수정 등

* chore: .idea 디렉토리 삭제

* chore: PR 템플릿 생성 (#2)

* feat: 로컬 db용 docker-compose 파일 추가 및 application.yaml 수정 (#4)

* feat: 공지사항 수정, 삭제, 태그 기능 추가 (#3)

* fix: ExceptionHandler 추가

* feat: updateNotice 추가, valid 추가

* feat: deleteNotice 추가

* feat: enrollTag 기능 추가, noticeTag 연관 엔티티 추가

* feat: 공지사항 작성할 때 태그 생성 및 수정

* fix: 로컬 db 없앰

* fix: pr 리뷰 수정

* fix: pr 리뷰 수정

* fix: noticeTag assign

* feat: 구성원(교수) 생성 및 조회 API 구현  (#8)

* feat: 교수 엔티티 및 DTO 설계

* feat: 교수 생성 및 조회

* Docs: Swagger 추가 (#7)

* Docs: Add swagger dependency

* Docs: Add basic config for swagger

* Docs: Add basic configuration for swagger.

* feat: 페이지네이션+검색 기능 추가 (#5)

* feat: isPublic, isSlide, isPinned 추가

* feat: queryDsl 적용 위해 gradle 추가 fix: javax -> jakarta 변경

* feat: queryDsl 도입

* feat: 키워드+태그 검색 추가

* feat: search query에 isDeleted, isPublic 추가 및 isPinned 우선순위 설정

* fix: requestBody -> requestParam 수정

* feat: 페이지네이션 추가

* fix: 키워드 booleanBuilder 추가, application.yaml 수정

* fix: searchNotice readOnly 추가

* fix: SearchRequest 삭제

* fix: NoticeDto tags 추가

* fix: pr 리뷰 수정 / feat: 검색 기능 보강 및 수정

* fix:코드 수정

* fix: SearchResponse isPinned 추가

* fix: SearchResponse에 total 추가

* fix: 페이지 개수 수정

* fix: searchNotice queryDsl 오류 수정

* fix: local 설정 변경

* CICD: 배포 자동화 (#6)

* CICD: Change expose port and added image tag

* CICD: Change ddl-auto to create in prod profile for test

* CICD: Added Deploy github action

* CICD: Merge jobs to one job

* Fix: Change checkout order to first step

* CICD: Add context for docker build action

* Fix: Change spring profile arg position

* CICD: Change openjdk version to 17

* CICD: Change docker compose build image tag to latest

* CICD: Change to use ghcr repository.

* Fix: change list to string in docker push tags.

* Fix: Change registry to ghcr.io

* Fix: change env to pass to github action instead of ssh export command

* Fix: unwrap bracket.

* Fix: wrap Profile with ""

* CICD: Add .env file

* CICD: Change prod ddl-auto to create (for developing), and add TODO comment.

* CICD: Remove cicd/deploy branch for condition.

* feat: 구성원(교수) 수정 및 삭제 API (#9)

* feat: 교수 조회시 최종학력이 앞으로 오게끔 정렬

* feat: 교수 수정 및 삭제 API

* feat: 학력과 경력 엔티티 필드 변경, 수정 API 구현

* feat: 구성원(행정직원) CRUD API (#10)

* feat: 행정직원 엔티티 및 DTO 설계

* feat: 행정직원 CRUD

* feat: 교수 조회시 이름순 정렬

* fix: 교수 연구 분야 Set -> List 로 변경

* feat: 행정직원 주요업무 업데이트 구현

* feat: news 패키지 추가, 디벨롭 및 프론트에 맞게 엔티티 변경 (#12)

* feat: news 패키지 생성

* feat: readNews 생성, news 패키지 추가로 인한 명칭 변경

* feat: createNews, enrollTag(새소식) 추가, news 패키지로 인한 명칭 추가 변경

* feat: updateNews, deleteNews 추가

* fix: searchNotice 관련 명칭 변경

* feat: searchNews 추가

* fix: develop 브랜치 반영, 프론트 요구사항 반영

* feat: readNotice, readNews에 이전글 다음글 추가

* 태그 업데이트 코드 리팩터링중

* refactor: 코드 수정, 이전제목 추가

* fix: 게시글 하나일때 read 가능

* fix: prevNext null 없애기

* fix: 이전글 다음글 null 수정

---------




* hotfix: 사용하지않는 Dto 및 엔티티 삭제 (#14)

---------




* feat: seminar 패키지 추가 (#17)

* feat: createSeminar, readSeminar, updateSeminar 추가

* feat: deleteSeminar, searchSeminar 추가

* fix: distinct 삭제

* hotfix: 불필요한 dto 삭제 (#20)

* hotfix: 불필요한 dto 삭제

* build.gradle 수정

* fix: 이미지 uri 필드 추가 및 프론트 요구사항 반영 (#21)

* feat: 이미지 uri 필드 추가 및 isActive 대신 status 추가

* fix: 행정직원 전체 조회 응답에서 task 삭제

* fix: 교수진 페이지 응답 수정

* feat: introduction 패키지, undergraduate 패키지 추가 (#22)

* feat: createUndergraduate, readUndergraduate 추가

* feat: readAllCourses, createCourse, readCourse 추가

* introduction 패키지 추가

* fix: dto에서 postType 삭제

* fix: postType pathVariable->requestBody 수정, 오타 수정

* fix: 프론트와 협의하여 이름 등 변경

* feat: academics 패키지 대학원도 가능하도록 추가

* feat: 장학제도 세부 장학금 create, read 추가

* fix: 수정

* fix:수정

* feat: admissions, research 패키지 추가 (#23)

* feat: admissions-학부 에서 create, read 추가

* feat: admissions-대학원도 작성 가능하도록 추가

* feat: createResearch 추가

* feat: createLab 추가

* fix: 다른 패키지에 맞게 수정

* research-groups, research-centers에서 read, update 추가

* fix: admissions, research에서 프론트와 협의하여 이름 등 수정

* fix: 오타 수정

* fix: enum 추가, pr 리뷰 반영

* feat: oidc 로그인 (#27)

* feat: oidc 로그인

* feat: TaskEntity name 추가

* feat: 배포 설정

* feat: 유저 정보에 학번 추가, 로그인 시 sub claim 확인

* feat: 배포 테스트 위해 redirect-uri 변경

* fix: groups claim 소문자로 수정

* feat: idsnucse 다운 되었을때 에러 처리

* feat: idsnucse 다운 되었을때 에러 처리

* feat: cors 설정 (#30)

* fix: cors 추가 설정 (#32)

* feat: cors 설정

* feat: cors 설정

* fix: CORS (#34)

* feat: cors 설정

* feat: cors 설정

* feat: cors 설정

* fix: about, academics, admissions 패키지 수정 (#25)

* fix: admissions, about 컨트롤러 변경

* fix: academics 컨트롤러 수정

* 커밋중

* fix: pr 리뷰 반영

* feat: readMain 추가

* pr 리뷰 반영

* feat: 일반 예약 및 정기 예약 API (#28)

* feat: oidc 로그인

* feat: TaskEntity name 추가

* feat: 배포 설정

* feat: 유저 정보에 학번 추가, 로그인 시 sub claim 확인

* feat: 배포 테스트 위해 redirect-uri 변경

* fix: groups claim 소문자로 수정

* feat: 예약 엔티티 및 DTO 설계

* feat: 일반 예약 및 정기 예약

* feat: 예약 조회 API (#39)

* feat: 권한 관리 위해 커스텀 어노테이션 생성

* feat: 예약 단건, 주별, 월별 조회 API

* fix: 로컬 DB 설정 수정

* feat: 유저 조회 중복 쿼리 방지

* feat: 예약 응답에 recurrenceId 추가

* feat: 동시 예약 방지

* fix: 시큐리티 로그 다시 로컬에서만 보이도록 변경

* feat: 목데이터 날라가지 않도록 ddl-auto 수정

* feat: about, member, news, seminar 메인 이미지 업로드 추가 (#38)

* feat: uploadImage 추가

* feat: about, member 사진 업로드 추가

* feat: news, seminar 사진 업로드 추가

* refactor: imageEntity 추가 리팩토링

* fix: gif 삭제

* fix: application.yaml 수정

* fix: newsService 태그 -> 이미지로 순서 변경

* fix: pr 리뷰 수정

* fix: extension 없애고, mainImage로 바꾸고, uuid 없애기

* fix: var 삭제

---------



* CICD: Change deploy port to 8080 (#40)

---------

Co-authored-by: 우혁준 (HyukJoon Woo) <whjoon0225@naver.com>
Co-authored-by: Jo Seonggyu <blueland1998@snu.ac.kr>

* feat: 장학제도 GET API 및 장학제도 페이지 응답 수정 (#44)

* feat: 장학제도 GET API

* feat: 장학제도 메인페이지 GET API 응답 수정

* feat: custom metadata 설정 + 리다이렉트 엔드포인트 변경 (#45)

* feat: yml 파일에 custom metadata endpoint 추가

* feat: 로그인/로그아웃 성공 리다이렉트 엔드포인트 변경

* feat: attachments 패키지 추가, news와 seminar request에 attachments 추가 (#43)

* feat: attachments 추가, news request에 attachments 추가

* feat: seminar request에 attachments 추가

* fix: mappedBy 추가 + bringAttachments null 없앰

* fix: 경로 분리

* fix: isDeleted false로 수정

---------

Co-authored-by: Junhyeong Kim <indiv0227@snu.ac.kr>

* feat: Top Conference List GET API (#47)

* feat: Top Conference List GET API

* feat: db에서 가져올때 정렬

* feat: 파일 서빙, 다운로드, 삭제 API (#48)

* feat: 파일 서빙, 다운로드, 삭제 API

* fix: extension 중복, 경로 수정

* feat: 공지사항 글쓴이 추가 (#49)

* CI/CD: Https 적용 및 백엔드, 데이터베이스, 프록시 서버 배포 분리 (#50)

* Config: Add gitignore for caddy files.

* CICD: Add caddy config file

* CICD: Seperate docker compose file for db and backend server.

* CICD: Docker Compose file for caddy proxy server.

* CICD: Add path condition for only act when source file has changed.

* CICD: Add workflow for deploying database changes.

* CICD: Add workflow for proxy server changes.

* Refactor: Add /api/v1 in front of all endpoints (except swagger-ui)

* Refactor: Add v1 to Main Image url.

* Refactor: change backend, frontend, login redirect uri to get from env.

* CICD: Add url to .env

* Fix: Change job name of database workflow, fix indent level.

* Fix: Remove duplicated restcontroller mapping.

* Fix: Set reverse proxy for swagger-ui/* for swagger.

* Docs: Set swagger to only scan /api/**

* Fix: add caddy to reverse api-docs/* for springdoc.

* Fix: Add login uris for reverse proxying to backend server.

* CICD: Remove testing branch condition.

* CICD: Add logout uri to reverse proxy to backend server.

* CICD: Remove test branch

* fix: 프론트랑 협의하여 내용 변경 + news, seminar에 image, attachments update 추가 (#51)

* feat: attachments 추가, news request에 attachments 추가

* feat: seminar request에 attachments 추가

* feat: about request에 attachments 추가

* feat: academics request에 attachments 추가

* fix: isPinned 삭제

* fix: image -> mainImage 변경, about에 greetings 추가

* fix: news, seminar update 수정

* fix: 전체적으로 image -> mainImage 변경

* fix: research 패키지 프론트에 맞춰 협의 (#52)

* fix: professor, staff에 uploadImage 추가

* fix: research에서 isPublic 제거, feat: lab에서 attachments 추가

* fix: attachments -> attachmentResponses 변경

* feat: LabProfessorResponse 추가

* fix: pdf를 list가 아닌 단일항목으로 수정

* feat: readLab 추가

* feat: ResearchLabReponse 추가 및 주석 삭제

* fix: researchDetail에 사진, 첨부파일 업로드 추가

* fix: pr 리뷰 수정

* fix: 오타 수정

* [Refactor] 로그인, file uri 배포 환경에 맞게 수정 (#53)

* Refactor: Change mapping of file to append /api/v1 in front.

* Refactor: Change login, logout redirect uri

* fix: https 적용 관련 로그인 수정 (#56)

* fix: notice 패키지 프론트에 맞게 협의 (#54)

* fix: professor, staff에 uploadImage 추가

* fix: research에서 isPublic 제거, feat: lab에서 attachments 추가

* fix: attachments -> attachmentResponses 변경

* feat: LabProfessorResponse 추가

* fix: pdf를 list가 아닌 단일항목으로 수정

* feat: readLab 추가

* feat: ResearchLabReponse 추가 및 주석 삭제

* fix: researchDetail에 사진, 첨부파일 업로드 추가

* feat: notice에 attachments 추가

* fix: fix_with_front1 변경 사항에 맞게 수정

* feat: isImportant 추가

* feat: NoticeSearchDto에 hasAttachment 추가

* fix: update에서 attachmetnts가 null일 때 빈 목록 반환

* feat: 공지사항 선택 고정해제, 선택 삭제 추가

* fix: news, seminar에 isImportant 추가

* fix: pr 리뷰 수정

* fix: 수정했던거 다시 복구

* feat: 신임교수초빙 (#59)

* feat: 행정실 권한 체크 API (#60)

* [CICD] mainImage, attachment 경로 mount 설정 (#55)

* CICD: Add mainImage, attachment directory for mounting

* CICD: Add volumes to mount with server directory. (for attachment)

* [Feat] 예전 url과 비슷하게 이전 파일(사진)들 접근할 수 있도록 controller 생성 (#58)

* Config: Add oldFiles path for properties.

* Feat: Add deprecated file controller for getting old files temporarily.

* CICD: Add volume mounting for old files.

* CICD: Add dir to mount for old files.

* Refactor: Change api to /sites/default/files/{PATH}

* CICD: Add reverse proxy for old file serving.

* fix: 예약 dto에 지도교수, 반복 횟수 추가 (#61)

* fix: 로그아웃 엔드포인트 변경 (#64)

* fix: 로그아웃 엔드포인트 변경

* fix: 로그아웃 성공 리다이렉트 엔드포인트 변경

* [Fix] Notice, News Description TEXT type으로 변환 (#65)

* Fix: Change notice and news entity description type as TEXT.

* Fix: Change to mediumtext

* fix: newsSearchResponse, seminarSearchResponse 수정 (#66)

* fix: newsSearchResponse 수정

* fix: SeminarSearchResponse 수정

* fix: 오타수정

* fix: 파일 업로드 경로 통일 (#68)

* fix: 갯수만 fetch하도록 최적화 (#70)

* Fix: Change type of additionalNote column on SeminarEntity to "TEXT" (#71)

* fix: academics 패키지 프론트에 맞춰 협의, admin 패키지 추가 (#69)

* fix: professor, staff에 uploadImage 추가

* fix: research에서 isPublic 제거, feat: lab에서 attachments 추가

* fix: attachments -> attachmentResponses 변경

* feat: LabProfessorResponse 추가

* fix: pdf를 list가 아닌 단일항목으로 수정

* feat: readLab 추가

* feat: ResearchLabReponse 추가 및 주석 삭제

* fix: researchDetail에 사진, 첨부파일 업로드 추가

* feat: notice에 attachments 추가

* fix: fix_with_front1 변경 사항에 맞게 수정

* feat: isImportant 추가

* feat: NoticeSearchDto에 hasAttachment 추가

* fix: update에서 attachmetnts가 null일 때 빈 목록 반환

* feat: 공지사항 선택 고정해제, 선택 삭제 추가

* fix: news, seminar에 isImportant 추가

* fix: pr 리뷰 수정

* fix: 수정했던거 다시 복구

* fix: course response 수정

* feat: academics에서 연도별로 주는 response 추가

* feat: academics YearResponses 추가

* fix: createScholarship 합치기

* fix: scholarship 패키지의 내용을 academics 하위로 옮김

* feat: createScholarshipDetail 추가

* fix: 필수 교양과목 response 변경

* feat: admin 패키지에서 readAllSlides 추가

* feat: admin 패키지 readAllImportants 추가

* feat: admin 패키지 중요안내 추가

---------

Co-authored-by: Jo Seonggyu <blueland1998@snu.ac.kr>
Co-authored-by: 우혁준 (HyukJoon Woo) <whjoon0225@naver.com>
  • Loading branch information
3 people authored Sep 5, 2023
1 parent 3ce6a0e commit 8d3704e
Show file tree
Hide file tree
Showing 46 changed files with 606 additions and 220 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package com.wafflestudio.csereal.core.academics.api

import com.wafflestudio.csereal.core.academics.dto.CourseDto
import com.wafflestudio.csereal.core.academics.dto.AcademicsDto
import com.wafflestudio.csereal.core.academics.dto.ScholarshipPageResponse
import com.wafflestudio.csereal.core.academics.dto.*
import com.wafflestudio.csereal.core.academics.service.AcademicsService
import com.wafflestudio.csereal.core.academics.dto.ScholarshipDto
import jakarta.validation.Valid
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
Expand All @@ -14,8 +13,6 @@ import org.springframework.web.multipart.MultipartFile
class AcademicsController(
private val academicsService: AcademicsService
) {

//Todo: 이미지, 파일 추가 필요
@PostMapping("/{studentType}/{postType}")
fun createAcademics(
@PathVariable studentType: String,
Expand All @@ -26,12 +23,19 @@ class AcademicsController(
return ResponseEntity.ok(academicsService.createAcademics(studentType, postType, request, attachments))
}

@GetMapping("/{studentType}/guide")
fun readGuide(
@PathVariable studentType: String
): ResponseEntity<GuidePageResponse> {
return ResponseEntity.ok(academicsService.readGuide(studentType))
}

@GetMapping("/{studentType}/{postType}")
fun readAcademics(
fun readAcademicsYearResponses(
@PathVariable studentType: String,
@PathVariable postType: String,
): ResponseEntity<AcademicsDto> {
return ResponseEntity.ok(academicsService.readAcademics(studentType, postType))
): ResponseEntity<List<AcademicsYearResponse>> {
return ResponseEntity.ok(academicsService.readAcademicsYearResponses(studentType, postType))
}

//교과목 정보
Expand All @@ -58,21 +62,29 @@ class AcademicsController(
return ResponseEntity.ok(academicsService.readCourse(name))
}

// 장학금
@PostMapping("/{studentType}/scholarship")
fun createScholarship(
@GetMapping("/undergraduate/general-studies-requirements")
fun readGeneralStudiesRequirements() : ResponseEntity<GeneralStudiesPageResponse> {
return ResponseEntity.ok(academicsService.readGeneralStudies())
}

@PostMapping("/{studentType}/scholarshipDetail")
fun createScholarshipDetail(
@PathVariable studentType: String,
@Valid @RequestPart("request") request: AcademicsDto,
@RequestPart("attachments") attachments: List<MultipartFile>?,
) : ResponseEntity<AcademicsDto> {
return ResponseEntity.ok(academicsService.createAcademics(studentType, "scholarship", request, attachments))
@Valid @RequestBody request: ScholarshipDto,
) : ResponseEntity<ScholarshipDto> {
return ResponseEntity.ok(academicsService.createScholarshipDetail(studentType, request))
}

@GetMapping("/scholarship")
fun readScholarship(
@RequestParam name: String
@GetMapping("/{studentType}/scholarship")
fun readAllScholarship(
@PathVariable studentType: String
): ResponseEntity<ScholarshipPageResponse> {
return ResponseEntity.ok(academicsService.readScholarship(name))
return ResponseEntity.ok(academicsService.readAllScholarship(studentType))
}

@GetMapping("/scholarship/{scholarshipId}")
fun getScholarship(@PathVariable scholarshipId: Long): ResponseEntity<ScholarshipDto> {
return ResponseEntity.ok(academicsService.readScholarship(scholarshipId))
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ class AcademicsEntity(
@Enumerated(EnumType.STRING)
var postType: AcademicsPostType,

var name: String,
var name: String?,
var description: String,
var year: Int?,
var time: String?,

@OneToMany(mappedBy = "academics", cascade = [CascadeType.ALL], orphanRemoval = true)
var attachments: MutableList<AttachmentEntity> = mutableListOf(),
Expand All @@ -33,6 +34,7 @@ class AcademicsEntity(
name = academicsDto.name,
description = academicsDto.description,
year = academicsDto.year,
time = academicsDto.time,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.wafflestudio.csereal.core.academics.database

enum class AcademicsPostType {
GUIDE, GENERAL_STUDIES_REQUIREMENTS, CURRICULUM, DEGREE_REQUIREMENTS, COURSE_CHANGES, SCHOLARSHIP
GUIDE, GENERAL_STUDIES_REQUIREMENTS, GENERAL_STUDIES_REQUIREMENTS_SUBJECT_CHANGES, CURRICULUM, DEGREE_REQUIREMENTS, COURSE_CHANGES, SCHOLARSHIP
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository

interface AcademicsRepository : JpaRepository<AcademicsEntity, Long> {
fun findByStudentTypeAndPostType(studentType: AcademicsStudentType, postType: AcademicsPostType) : AcademicsEntity
fun findByName(name: String): AcademicsEntity
fun findAllByStudentTypeAndPostTypeOrderByYearDesc(studentType: AcademicsStudentType, postType: AcademicsPostType): List<AcademicsEntity>
fun findAllByStudentTypeAndPostTypeOrderByTimeDesc(studentType: AcademicsStudentType, postType: AcademicsPostType): List<AcademicsEntity>
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.wafflestudio.csereal.core.academics.database

import com.wafflestudio.csereal.common.config.BaseTimeEntity
import com.wafflestudio.csereal.common.controller.AttachmentContentEntityType
import com.wafflestudio.csereal.common.controller.MainImageContentEntityType
import com.wafflestudio.csereal.core.academics.dto.CourseDto
import com.wafflestudio.csereal.core.resource.attachment.database.AttachmentEntity
import com.wafflestudio.csereal.core.resource.mainImage.database.MainImageEntity
import jakarta.persistence.CascadeType
import jakarta.persistence.Entity
import jakarta.persistence.OneToMany
import jakarta.persistence.OneToOne

@Entity(name = "course")
class CourseEntity(
Expand All @@ -28,7 +32,8 @@ class CourseEntity(
@OneToMany(mappedBy = "course", cascade = [CascadeType.ALL], orphanRemoval = true)
var attachments: MutableList<AttachmentEntity> = mutableListOf(),

): BaseTimeEntity() {
): BaseTimeEntity(), AttachmentContentEntityType {
override fun bringAttachments() = attachments
companion object {
fun of(studentType: AcademicsStudentType, courseDto: CourseDto): CourseEntity {
return CourseEntity(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.wafflestudio.csereal.core.academics.database

import com.wafflestudio.csereal.common.config.BaseTimeEntity
import com.wafflestudio.csereal.common.controller.AttachmentContentEntityType
import com.wafflestudio.csereal.core.academics.dto.ScholarshipDto
import com.wafflestudio.csereal.core.resource.attachment.database.AttachmentEntity
import jakarta.persistence.*

@Entity(name = "scholarship")
class ScholarshipEntity(
@Enumerated(EnumType.STRING)
var studentType: AcademicsStudentType,

val name: String,

@Column(columnDefinition = "text")
val description: String,

) : BaseTimeEntity() {

companion object {
fun of(studentType: AcademicsStudentType, scholarshipDto: ScholarshipDto): ScholarshipEntity {
return ScholarshipEntity(
studentType = studentType,
name = scholarshipDto.name,
description = scholarshipDto.description,
)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.wafflestudio.csereal.core.academics.database

import com.wafflestudio.csereal.core.academics.database.ScholarshipEntity
import org.springframework.data.jpa.repository.JpaRepository

interface ScholarshipRepository : JpaRepository<ScholarshipEntity, Long> {
fun findAllByStudentType(studentType: AcademicsStudentType): List<ScholarshipEntity>
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import java.time.LocalDateTime

data class AcademicsDto(
val id: Long,
val name: String,
val name: String?,
val description: String,
val year: Int?,
val time: String?,
val createdAt: LocalDateTime?,
val modifiedAt: LocalDateTime?,
val attachments: List<AttachmentResponse>?,
Expand All @@ -20,6 +21,7 @@ data class AcademicsDto(
name = this.name,
description = this.description,
year = this.year,
time = this.time,
createdAt = this.createdAt,
modifiedAt = this.modifiedAt,
attachments = attachmentResponses,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.academics.database.AcademicsEntity
import com.wafflestudio.csereal.core.resource.attachment.dto.AttachmentResponse

class AcademicsYearResponse(
val year: Int,
val description: String,
val attachments: List<AttachmentResponse>
) {
companion object {
fun of(entity: AcademicsEntity, attachmentResponses: List<AttachmentResponse>) = entity.run {
AcademicsYearResponse(
year = entity.year!!,
description = entity.description,
attachments = attachmentResponses
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ data class CourseDto(
val attachments: List<AttachmentResponse>?,
) {
companion object {
fun of(entity: CourseEntity, attachments: List<AttachmentResponse>?): CourseDto = entity.run {
fun of(entity: CourseEntity, attachmentResponses: List<AttachmentResponse>): CourseDto = entity.run {
CourseDto(
id = this.id,
classification = this.classification,
Expand All @@ -23,7 +23,7 @@ data class CourseDto(
credit = this.credit,
grade = this.grade,
description = this.description,
attachments = attachments,
attachments = attachmentResponses,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.academics.database.AcademicsEntity

class GeneralStudiesPageResponse(
val subjectChanges: List<SubjectChangesDto>,
val description: String,
) {
companion object {
fun of(entity: AcademicsEntity, subjectChangesEntity: List<AcademicsEntity>) = entity.run {
GeneralStudiesPageResponse(
subjectChanges = subjectChangesEntity.map { SubjectChangesDto.of(it) },
description = this.description
)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.academics.database.AcademicsEntity
import com.wafflestudio.csereal.core.resource.attachment.dto.AttachmentResponse

class GuidePageResponse(
val description: String,
val attachments: List<AttachmentResponse>
) {
companion object {
fun of(entity: AcademicsEntity, attachmentResponses: List<AttachmentResponse>): GuidePageResponse = entity.run {
GuidePageResponse(
description = this.description,
attachments = attachmentResponses
)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.wafflestudio.csereal.core.scholarship.dto
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.scholarship.database.ScholarshipEntity
import com.wafflestudio.csereal.core.academics.database.ScholarshipEntity

data class ScholarshipDto(
val id: Long,
val title: String,
val name: String,
val description: String
) {
companion object {
fun of(scholarshipEntity: ScholarshipEntity): ScholarshipDto {
return ScholarshipDto(
id = scholarshipEntity.id,
title = scholarshipEntity.title,
name = scholarshipEntity.name,
description = scholarshipEntity.description
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.academics.database.AcademicsEntity
import com.wafflestudio.csereal.core.scholarship.database.ScholarshipEntity
import com.wafflestudio.csereal.core.scholarship.dto.SimpleScholarshipDto
import java.time.LocalDateTime
import com.wafflestudio.csereal.core.academics.database.ScholarshipEntity

class ScholarshipPageResponse(
val id: Long,
val name: String,
val description: String,
val scholarships: List<SimpleScholarshipDto>
) {
companion object {
fun of(scholarship: AcademicsEntity, scholarships: List<ScholarshipEntity>): ScholarshipPageResponse {
return ScholarshipPageResponse(
id = scholarship.id,
name = scholarship.name,
description = scholarship.description,
scholarships = scholarships.map { SimpleScholarshipDto.of(it) }
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.wafflestudio.csereal.core.scholarship.dto
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.scholarship.database.ScholarshipEntity
import com.wafflestudio.csereal.core.academics.database.ScholarshipEntity

data class SimpleScholarshipDto(
val id: Long,
val title: String
val name: String
) {
companion object {
fun of(scholarshipEntity: ScholarshipEntity): SimpleScholarshipDto {
return SimpleScholarshipDto(
id = scholarshipEntity.id,
title = scholarshipEntity.title
name = scholarshipEntity.name
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.wafflestudio.csereal.core.academics.dto

import com.wafflestudio.csereal.core.academics.database.AcademicsEntity

class SubjectChangesDto(
val time: String,
val description: String,
) {
companion object {
fun of(entity: AcademicsEntity) = entity.run {
SubjectChangesDto(
time = this.time!!,
description = this.description
)
}
}
}
Loading

0 comments on commit 8d3704e

Please sign in to comment.