무지개곰
article thumbnail
반응형

프로필 페이지 작업에 대한 1차 기록입니다.

작업을 진행하며 완료한 내용, 추가적으로 필요하다고 생각되는 내용, 문제점을 기록하였습니다.

목차

프로필 페이지 Front

ERD

프로필 페이지 back


프로필 페이지 Front

완료된 내용

  • 드롭 다운 메뉴를 통하여 프로필 페이지로 이동
  • 로그인 정보를 통한 프로필 사진, 닉네임 출력
  • 기술 스택에 대한 정보(언어, 레벨) 등 표시를 위한 컴포넌트 생성

추가로 필요한 작업

  • 드롭다운 메뉴에 로그아웃 추가
  • 수정 버튼 클릭 시 /profile/update/:id로 이동
  • update 페이지
    • 이미지 클릭 시 업로드 기능
    • 닉네임 수정 버튼
    • 한 줄 소개 수정 버튼 클릭 시 input창으로 변경
    • 해시태그 추가 방법 고민
    • 기술 스택 추가 버튼
    • 기술 스택 삭제 버튼
    • 기술 스택 레벨 조정 버튼

ERD 구성

프로필 페이지 Back

test code

func TestR_UserInfo(t * testing.T) {
    setupTestDB()
    defer teardownTestDB()

    userToCreate := User{
        ID:          "5555",
        NickName:    "무지개곰",
        ProfileImg:  "http://example.com/profile.jpg",

    }

    result, err := R_UserInfo(userToCreate, testDB)
    if err != nil {
        t.Fatalf("Failed to create user: %v", err)
    }

    if result == nil {
        t.Fatalf("결과가 nil")
    }

    fmt.Println("Read(UserInfo) 테스트 완료")
}



func TestIsSavedID(t *testing.T){
    setupTestDB()
    defer teardownTestDB()

    userToCreate := User{
        ID:          "3333",
        NickName:    "무지개곰",
        ProfileImg:  "http://example.com/profile.jpg",
    }

    if !IsSavedID(userToCreate, testDB) {
        err := C_UserInfo(userToCreate, testDB)
        if err != nil {
            t.Fatal("생성 실패")
        }
    }
}

User 정보 DB에서 읽어오기

func R_UserInfo(user User, db *sql.DB) ([]User, error) {
    query := "SELECT * FROM userinfo WHERE id = ?"
    id, _ := strconv.Atoi(user.ID)
    rows, err := db.Query(query, id)
    if err != nil {
        return nil, fmt.Errorf("User Id 값 읽기 실패")
    }

    result := []User{}
    for rows.Next() {
        var data User
        if err := rows.Scan(&data.ID, &data.NickName, &data.ProfileImg); err != nil {
            return nil, err
        }

        result = append(result, data)
    }
    return result, nil
}

User 정보 DB에 저장

func C_UserInfo(user User, db *sql.DB) error {
    query := "INSERT INTO userinfo (ID, NickName, ProfileImg) VALUES (?, ?, ?)"
    id, _ := strconv.Atoi(user.ID)

    result, err := db.Exec(query, id, user.NickName, user.ProfileImg)
    fmt.Println("C_UesrInfo 결과 : ", result)

    if err != nil {
        return fmt.Errorf("사용자 정보 저장 실패")
    }
    return nil
}

이미 저장된 정보인지 확인

func IsSavedID(user User, db *sql.DB) (bool, error) {
    list, err := R_UserInfo(user, db)
    if err != nil {
        fmt.Println(err)
        return false, err
    }

    if len(list) != 0 {
        return true, nil
    }
    return false, nil
}

현재 문제점

  1. test code 실행 시 test db에 user 정보가 저장되지만 코드 실행 시 C_UserInfo에서 오류 발생 (C_UserInfo 결과가 nil)
  2. 로그인 시 ID, NickName, ProfileImg를 쿠키의 값으로 전달 중
    • JWT과 Session 등을 통하여 정보를 감추는 방법 활용
반응형
profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!