Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

서버 재배포 #400

Merged
merged 18 commits into from
Jul 7, 2024
Merged

서버 재배포 #400

merged 18 commits into from
Jul 7, 2024

Conversation

limehee
Copy link
Collaborator

@limehee limehee commented Jul 7, 2024

변경 사항

  • 젠킨스 메시지 개선
  • 슬랙 알림을 On/Off 가능하도록 변경
  • 모집 공고의 모집 상태가 일정에 따라 자동 변경되도록 수정
  • Member 외래키 제거
  • 게시글 좋아요 기능 제거
  • 게시글 이모지 기능 추가
  • 계층 간 인터페이스 추가
  • 유스케이스 분리

DB 변경 사항

-- 기존 데이터를 업데이트하여 "종료"를 "CLOSED"로 변경
UPDATE recruitment
SET status = 'CLOSED'
WHERE status = '종료';

-- 기존 체크 제약 조건을 삭제
ALTER TABLE recruitment
    DROP CONSTRAINT IF EXISTS recruitment_status_check;

-- 새로운 체크 제약 조건 추가
ALTER TABLE recruitment
    ADD CONSTRAINT recruitment_status_check
    CHECK ((status)::text = ANY ((ARRAY['UPCOMING'::character varying, 'OPEN'::character varying, 'CLOSED'::character varying])::text[]));
DO $$
DECLARE
    r RECORD;
BEGIN
    FOR r IN (
        SELECT
            conname,
            conrelid::regclass AS tablename,
            a.attname AS column_name
        FROM
            pg_constraint AS c
            JOIN pg_attribute AS a ON a.attnum = ANY(c.conkey) AND a.attrelid = c.conrelid
        WHERE
            c.contype = 'f'
            AND c.conrelid::regclass IN (
                'public.accuse', 'public.award', 'public.blog', 'public.board', 'public.book',
                'public.book_loan_record', 'public.comment', 'public.donation', 'public.account_lock_info',
                'public.membership_fee', 'public.notification', 'public.position', 'public.work_experience'
            )
            AND a.attname = 'member_id'
    ) LOOP
        EXECUTE 'ALTER TABLE ' || r.tablename || ' DROP CONSTRAINT ' || r.conname;
    END LOOP;
END $$;
  -- 기존 좋아요 관련 테이블 삭제
  DROP TABLE IF EXISTS board_like;
  
  -- 기존 "like" 칼럼을 삭제
  ALTER TABLE board DROP COLUMN likes;

변경된 패키지 구조

domain
├── api
│   ├── 유스케이스별 컨트롤러가 포함됩니다. 각 컨트롤러는 특정 유스케이스를 처리하는 엔드포인트를 제공합니다.
├── application
│   ├── port
│   │   ├── in
│   │   │   ├── 인바운드 포트 인터페이스를 정의합니다. 애플리케이션 외부에서 들어오는 요청을 처리하는 역할을 합니다.
│   │   ├── out
│   │   │   ├── 아웃바운드 포트 인터페이스를 정의합니다. 애플리케이션 내부에서 외부 시스템이나 데이터베이스로의 요청을 처리하는 역할을 합니다.
│   ├── service
│   │   ├── 인바운드 포트 인터페이스를 구현하는 서비스 클래스들이 위치합니다. 비즈니스 로직을 구현하고, 필요한 경우 아웃바운드 포트를 호출합니다.
├── dao
│   ├── 영속 계층과 아웃바운드 포트 인터페이스의 구현체를 포함합니다. 데이터베이스와의 상호작용을 처리합니다.

limehee and others added 18 commits June 19, 2024 21:46
젠킨스 슬랙 메시지 개선 완료
젠킨스 웹훅 미작동 오류 수정 완료
* refactor(Slack): 슬랙 알림을 발행-구독 패턴으로 변경 및 알림을 On/Off 가능한 구조로 변경

* feat(Slack): 슬랙 알림 설정 변경 API 추가

* feat(Slack): 슬랙 알림 조회 API 추가

* refactor(Slack): AlertType 예외 수정

* refactor(Slack): 코드 컨벤션 수정

* feat(Slack): 새 게시글 알림 추가

* refactor(Slack): 새 게시글 알림 이모지 변경
* feat: 모집공고 상태 나타내는 enum 도입 #353

* feat: 모집 기간에 따라 자동으로 모집 상태 변경하는 로직 작성 #353

* refactor: 모집 상태 구현 로직 변경에 따른 DTO 수정 #353

* feat: 트랜잭션을 추상화한 인터페이스 빈으로 등록 #353

* refactor: 모집 상태 문자열 사이즈 관련 message 삭제 #353

* refactor: 모집 공고 수정 시에도 즉각적으로 상태 반영되도록 수정 #353

* refactor: 띄어쓰기 수정 #353

* refactor(Recruitment): 띄어쓰기 수정

---------

Co-authored-by: 한관희 <[email protected]>
* refactor(Member): MemberLookupService 분리

* feat(Member): 도메인 이벤트, 공통 리스너, 이벤트 디스패처 추가

* feat(Member): 수정, 삭제시 도메인 이벤트가 발생하도록 함

* fix(Notification): MemberLookupService 의존성 주입 오류 수정

* refactor(Accuse): Accuse에서 Member를 외래키로 참조하지 않도록 변경

* feat(Accuse): Member가 삭제되면, Accuse도 같이 삭제되도록 변경

* feat(Accuse): 소프트 딜리트 추가

* feat(Award): Award에서 Member를 외래키로 참조하지 않도록 변경

* refactor(Blog): Blog에서 Member를 외래키로 참조하지 않도록 변경

* refactor(Board): Board에서 Member를 외래키로 참조하지 않도록 변경

* refactor(Member): Member 정보 변경시 memberId가 아닌 Member 객체를 이벤트로 보내도록 수정

* refactor(Member): Book에서 Member를 외래키로 참조하지 않도록 변경

* refactor(Award): 삭제 및 권한 검사 로직 개선

* refactor(Blog): 삭제 및 권한 검사 로직 개선

* refactor(Blog): 도메인 객체가 직접적으로 Member 도메인 객체를 참조하지 않도록 변경

* refactor(Accuse): 신고 알림을 보낼 때 memberId를 이용하도록 변경

* refactor(Accuse): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Blog): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Member): MemberInfoDto -> MemberBasicInfoDto 클래스명 변경

* feat(Member): MemberDetailedInfoDto 추가

* refactor(Board): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Award): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Book): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Comment): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* feat(Comment): EventProcessor 추가

* refactor(Donation): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(AccountLockInfo): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Login): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Event): 불필요한 코드 제거

* refactor(MembershipFee): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Notification): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(Position): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(WorkExperience): Member 도메인 객체를 직접 참조하지 않고, 필요한 정보를 DTO로 주고받도록 변경

* refactor(EventProcessor): 메소드명 변경

* refactor(EventProcessor): Member 수정/삭제 이벤트에 대해 최소한의 정보만 전달하도록 변경

* refactor(SharedDto): Member 도메인 통신에 사용되는 DTO 클래스명 변경

* refactor(MemberEventDispatcher): 띄어쓰기 수정(코드 컨벤션)
* refactor(Recruitment): 응답 값 변경

* refactor(Recruitment): discription 변경
* refactor(Board, Comment): 좋아요 관련 코드 삭제 #395

* feat(BoardEmoji): 게시글에 이모지 누르기/취소하기 API 작성 #395

* feat(BoardEmojiCountResponseDto): 게시글 상세 조회 시 클릭된 이모지 정보 함께 반환 #395

* feat(cleanUpOldSoftDeletedRecords): 7일 동안 변동 없는 이모지 클릭에 대해 하드 딜리트 스케쥴링 구현 #395

* refactor(CommentLike): 삭제한 댓글 좋아요 로직 복구 #395

* refactor(BoardService, BoardEmoji): 코드 스타일 수정과 service에서 DTO 변환 로직 추가 #395

* feat(EmojiUtils): 이모지 검증 로직 구현 #395
* refactor(Accuse): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Accuse): 코드 컨벤션 변경에 따른 개행 수정

* refactor(Accuse): 불필요한 코드 제거

* refactor(ActivityPhoto): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Application): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Award): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(BlacklistIp): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Blog): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Book): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Donation): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Donation): 로직 간소화

* refactor(JobPosting): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(MembershipFee): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(News): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Notification): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Position): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Product): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Recruitment): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Review): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Schedule): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(WorkExperience): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(SharedAccountUsage): 미사용 기능 제거

* refactor(Board): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Comment): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Comment): 개행 제거

* refactor(AccountLockInfo): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(LoginAttemptLog): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Authenticator): 응용 계층 추상화

* refactor(LoginAttemptLog): 클래스명 및 메소드명 변경

* refactor(RedisToken): 응용 계층 추상화

* refactor(Login): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(MemberCloud): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Member): 표현 계층과 응용 계층 간의 통신을 추상화, 유스케이스에 따른 로직을 분리

* refactor(Impl): 응용 계층 인터페이스와 구현체를 패키지로 분리

* refactor(Accuse): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(ActivityPhoto): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Accuse): 이름을 좀더 직관적으로 변경

* refactor(ActivityPhoto): 이름을 좀더 직관적으로 변경

* refactor(Application): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Award): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Blacklist): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Blog): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Board): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Book): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Comment): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Donation): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(JobPosting): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Login): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Login): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Member): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(MembershipFee): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(News): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Notification): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Position): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Product): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Recruitment): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Review): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Schedule): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(WorkExperience): Usecase를 명확히 표현하기 위한 이름 변경

* refactor(Convention): 메소드명 통일

* refactor(Convention): 인터페이스 및 구현체 클래스명 변경

* refactor(WorkExperience): 응용 계층과 영속 계층 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(WorkExperience): findWorkExperienceByIdOrThrow() 수정

* refactor(Schedule): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Review): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(WorkExperience): 아웃바운드 포트 인터페이스 세분화

* refactor(Schedule): 아웃바운드 포트 인터페이스 세분화

* refactor(Review): 아웃바운드 포트 인터페이스 세분화

* refactor(Recruitment): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Product): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Position): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Notification): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(News): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Notification): 아웃바운드 포트 인터페이스 세분화

* refactor(Position): 아웃바운드 포트 인터페이스 세분화

* refactor(MembershipFee): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(JobPosting): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Donation): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Comment): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Book): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Board): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Blog): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(BlacklistIp): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Award): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Application): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(ActivityPhoto): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Accuse): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Event): 파일 위치 변경

* refactor(Login): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Member): 응용 계층과 영속 계층 간의 통신을 추상화, 유스케이스에 따른 로직 분리

* refactor(Schedule): 파일 복원

* refactor(Member): MemberLookupUseCase 로직 간소화

* refactor(Member): MemberLookupUseCase 메소드명 변경

* refactor(Member): MemberLookupUseCase 세분화

* refactor(Coupling): 다른 도메인을 참조할 때 인바운드 포트를 이용하도록 변경

* refactor(Service): LookupService 제거

* refactor(Convention): 인바운드 포트의 이름을 동사로 시작하도록 변경

* refactor(Accuse): 인바운드 포트의 메소드명이 수행하는 동작을 명시하도록 변경

* refactor(Accuse): 아웃바운드 포트 CRUD로 구분하여 통합

* refactor(Port): 아웃바운드 포트 CRUD로 구분하여 통합

* refactor(Port): 아웃바운드 포트 CRUD로 구분하여 통합

* refactor(Port): 인바운드 포트가 유스케이스를 명확하게 표현할 수 있도록 이름 변경

* refactor(Controller): 반환 타입 수정

* fix(File): 컴파일 오류 수정

* fix(OrderSpecifierUtil): 가독성 향상

* refactor(OrderSpecifierUtil): 가독성 향상

* refactor(Convention): 코드 컨벤션 수정

* refactor(Convention): 코드 컨벤션 수정
@limehee limehee added 🔨 Refactor 코드 수정 및 개선 ✨ Feature 새로운 기능 명세 및 개발 labels Jul 7, 2024
@limehee limehee self-assigned this Jul 7, 2024
@limehee limehee merged commit c3ca931 into main Jul 7, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 새로운 기능 명세 및 개발 🔨 Refactor 코드 수정 및 개선
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants