반응형
프로필 페이지 작업에 대한 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
}
현재 문제점
- test code 실행 시 test db에 user 정보가 저장되지만 코드 실행 시 C_UserInfo에서 오류 발생 (C_UserInfo 결과가 nil)
- 로그인 시 ID, NickName, ProfileImg를 쿠키의 값으로 전달 중
- JWT과 Session 등을 통하여 정보를 감추는 방법 활용
반응형
'개발일기 > Prism' 카테고리의 다른 글
[개발일기] Backend 리팩토링 (Session, DB, 경로 관리) (2) | 2023.12.11 |
---|---|
[개발일기] 로그인 로그아웃 구현 (Cookie, Session) (0) | 2023.12.10 |
[개발일기] 카카오 로그인 구현 - Token 발급 (React with Golang) (2) | 2023.12.02 |
[개발일기] Header 구현 (React - Typescript) (0) | 2023.12.01 |
[개발 일기] Prism 프로젝트를 준비한 이유, 시작 전 다짐 (2) | 2023.11.29 |