Chaeyeon0 / GreenDay_Study

여은개의 공부 일지
0 stars 0 forks source link

[20240517] 게시판 DB 설계 마무리, Domain/Dto 패키지 작성 #6

Closed janghw0126 closed 3 weeks ago

janghw0126 commented 1 month ago

1. 게시판 DB 설계 마무리

고민하고 또 고민했던 DB 설계를 마무리하게 되었습니다.. 피그마를 바탕으로 고민해보았을 때 화면에서 가져올 데이터는 게시글을 구분하기 위한 게시글 번호, 작성자의 정보를 나타내는 이메일, 게시판 내용, 작성 일자, 수정 일자라서 DB를 다음과 같이 설계해 보았습니당

CREATE TABLE notice_board (
        board_id VARCHAR2(50) PRIMARY KEY NOT NULL,
    user_email NVARCHAR2(50) references member(email) ,
    board_content text NOT NULL,
    update_date datetime ,
    modified_date datetime
);

image 간단한 코드 넣고 실행해보았을 때 DB에 데이터가 잘 저장되었다는 것을 확인할 수 있었구요

여기서 또 문제가 생길 부분은 member 테이블에서 이메일을 외래키로 가져올 껀데, 게시글이 올라올 때는 외래키를 쓰면 되겠지만, 수정할 때는 자신의 글만 수정할 수 있는 권한을 줘야 되기 때문에 본인 인증을 할만한 수단이 필요하단 말이죠오 근데 그 본인인증은 아마도 네이버에서 토큰을 받아와서 그 토큰으로 본인인지 아닌지 확인하는 방법 밖에 없는 것 같은데 근데 이것도 외래키로 해결 가능할 것 같긴 한데,,,,일단 이 부분은 더 자세히 알아봐야 될 것 같습니다,,!

2. 게시판 패키지 구성

image 게시판 패키지는 위와 같이 진행될 것 같구요 레퍼런스를 참고해서 DTO, Domain 패키지 부분 작성하고 수정해가꼬 이 부분 코드는 거의 마무리 된 상태입니당

⬇️DTO package

package com.example.greenday_board.dto;

import com.example.greenday_board.domain.entity.BoardEntity;
import lombok.*;

import java.time.LocalDateTime;

@Getter
@Setter
@ToString
@NoArgsConstructor
public class BoardDto {
    private Long id;
    private String writer;
    private String title;
    private String content;
    private LocalDateTime createdDate;
    private LocalDateTime modifiedDate;

    public BoardEntity toEntity(){
        BoardEntity boardEntity = BoardEntity.builder()
                .id(id)
                .writer(writer)
                .title(title)
                .content(content)
                .build();
        return boardEntity;
    }

    @Builder
    public BoardDto(Long id, String title, String content, String writer, LocalDateTime createdDate, LocalDateTime modifiedDate) {
        this.id = id;
        this.writer = writer;
        this.title = title;
        this.content = content;
        this.createdDate = createdDate;
        this.modifiedDate = modifiedDate;
    }
}

레퍼런스를 참고한거라서 아직 이 코드가 정확하지는 않구 계속 수정해나갈 예정입니다아

⬇️Domain(Entity) package

package com.example.greenday_board.domain.entity;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;

import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "notice_board")
public class BoardEntity {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long board_id;

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

    @Column(length = 100, nullable = false)
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String board_content;

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime modifiedDate;

    @Builder
    public BoardEntity(Long id, String title, String content, String writer) {
        this.board_id = id;
        this.user_email = writer;
        this.title = title;
        this.board_content = content;
        this.createdDate = LocalDateTime.now();
        this.modifiedDate = LocalDateTime.now();
    }
}

3. 403 오류,,🤯

image 그리고 어플리케이션을 수정하는 도중에 자꾸 403오류가 떠서 이거 해결하구 있습니다아 아마 서버가 요청을 했는데 해당 요청을 수행할 권한이 없어서 그런거라 시큐리티 권한 부분을 제대로 짜야 될 것 같네유..갈 길이 멀ㄷㅏ....우하핳😅😅

다들 최종 발표 때까지 홧팅입니당👊

aranlll commented 1 month ago

중간에 저 정신차리라고 보고 진짜 웃엇어욬ㅋㅋㅋㅋ DB..이녀석.. 잘은 모르지만 매우 어려운 녀석 같군뇨 ... 수고햇어용 !!!! 🥰

khw010419 commented 1 month ago

수고해써요!!!!!!!!! 나도 정신차려야지 .... 최종까지 파이팅팅

Chaeyeon0 commented 1 month ago

403도 권한에 관한 에러군요,, 저도 하나 알아갑니다 ! 제가 401 에러가 났을 때 시큐리티에 관련된 부분에 문제가 있어 해결한 것을 노션에 올려놨었는데, 혹시나 궁금하시면 스터디 노션 확인해보셔도 될 것 같습니다아 !