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

feat ✨ feed #417

Closed
wants to merge 37 commits into from
Closed

feat ✨ feed #417

wants to merge 37 commits into from

Conversation

niamu01
Copy link
Contributor

@niamu01 niamu01 commented Mar 9, 2024

사담:
가상 면접 사례로 배우는 대규모 시스템 설계 기초 << 라는 책 요즘 읽고 있는데 참고하니 좋더라구요...
최근 전 sqld 시험을 보고 왔습니다. 👍

만든 것:
getFeed와 페이지네이션에 대해 구조만 구현해뒀습니다.
local에 cache가 있는 follow 먼저 만들어 봤습니다. 이어서 만들어야 함
만든 followFeed는 temp_follow를 통해 테스트했습니다.

해결 못한 이슈:
union type을 paginated할 수 없어 as any를 적어둔 부분

요청:
이슈와 함께 이대로 가도 괜찮은지 간단하게 점검
프론트도 주로 작업을 백로컬+프론트로컬로 하는 것 같아 dev에 합치지 않아도 되지만... dev답게 사용해 볼까... 란 마음도 있음

fragment UserPreview on UserPreview {
  id
  login
  imgUrl
}

query {
  getFeed(first: 5) {
    pageInfo {
      totalCount
      hasNextPage
      endCursor
    }
    edges {
      cursor
      node {
        __typename
        ... on FollowFeed {
          userPreview {
            ...UserPreview
          }
          createdAt
          type
          followed {
            ...UserPreview
          }
        }
        __typename
        ... on LocationFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          location
        }
        __typename
        ... on StatusMessageFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          message
        }
        __typename
        ... on TeamStatusFinishedFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          teamInfo
        }
        __typename
        ... on EventFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          event
        }
        __typename
        ... on NewMemberFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          memberAt
        }
        __typename
        ... on BlackholedAtFeed {
          createdAt
          userPreview {
            ...UserPreview
          }
          type
          blackholedAt
        }
      }
    }
  }
}

- #405

feat: ✨ MakeFollow: 프론트 테스트용 임시 함수 추가

- #405

refactor: ♻️ 변수명 수정 및 함수 분리

login -> target, FollowListByMe -> FollowList, FollowUserList -> FollowListWithCount, followUser->followLser, cursusUserService에 유저 아이디 찾는 함수 추가, 중복되는 함수 분리

- #405

refactor: ♻️ checkFollowingStatus 함수 활용하도록 변경

- #405
- #405

refactor: ♻️ 프론트 테스트용 임시 함수 리팩토링

- #405

refactor: ♻️ type-only import 추가

- #405

fix: 🐛 mutation이 아닌 쿼리에 대해서 mutation -> query 변경

- #405
- #406

revert: 🔥 임시 함수 삭제 및 주석 삭제

- #406
- #406

fix: 🐛 following 관련 함수에서 사용한 follower -> following 수정

- #406

fix: 🐛 파일명 수정 resolve -> resolver

style: 🎨 변수 선언 시 필요 없는 타입 어노테이션 제거

- #406

fix: 🐛 필요없는 if 검사 삭제

- #406

fix: 🐛 변수 대입을 안하고 있었던 부분 수정 (...)
- #406

revert: 🔥 의미없는 코드 삭제
- #406

refactor: ♻️ 팔로우 여부에 대해 나 자신 예외처리 제거, input을 login에서 id로 변경

- #406

revert: 🔥 follower, following List 삭제

- #406

refactor: ♻️ findOne 할 때 select 추가
- #406

refactor: ♻️ targetLogin -> targetId 로 변경

- #406

fix: 🐛 변수명 오류 수정
- #413

fix: 🐛 follow create 안하던 부분 수정
db에 요청: userId, followId 로 follower/following 리스트를 만든 후, userPreview와 followAt 을 추가해 cache와 같은 타입으로 변환 / cache에 요청, db요청 이후: {userPreview, followAt}[] 에 로그인 한 유저에 맞춰 isFollowing 추가 후 반환

- #413

fix: 🐛 존재하는 유저인지 검사 후 db에 write

- #413

fix: 🐛 실수 수정 following->follower

프론트와 디버깅 중 발견했습니다

- #413

feat: ✨ preload 임시 적용

이후 중복되는 코드를 정리해야합니다

- #413

refactor: ♻️ 주석 삭제 및 중복되는 함수 분리

- #413

fix: 🐛 팔로우 리스트 캐시 업데이트시 배열의 push를 사용하여 무조건 뒤에 붙던 일 임시 해결

sort를 밖에서 하는 방식으로 변경할 예정입니다

- #413
FollowList[] -> Follow[], cache되던 형태의 FollowListCacheType를 Follow로 변경하고 원래 Follow였던 최종 반환 형태를 MyFollow로 변경, 이에 따른 dto파일명이나 pagination 타입도 함께 맞추어 변경

- #413
@niamu01 niamu01 requested a review from jpham005 March 9, 2024 07:16
@niamu01 niamu01 self-assigned this Mar 9, 2024
@niamu01 niamu01 added enhancement New feature or request help wanted Extra attention is needed labels Mar 9, 2024
Copy link
Member

@jpham005 jpham005 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

바쁘게 쓰느라 일단 짧게 달아놨는데, 한번 보면서 아니다 싶은건 피드백 해주세요.

이후 캐시같은거 다 작업 했다고 생각하고 구조 먼저 다듬고 하는게 좋아 보입니다.

app/src/feed/feed.cache.service.ts Outdated Show resolved Hide resolved
app/src/feed/feed.cache.service.ts Outdated Show resolved Hide resolved
app/src/feed/db/feed.database.schema.ts Outdated Show resolved Hide resolved
app/src/feed/feed.service.ts Outdated Show resolved Hide resolved
app/src/feed/feed.service.ts Show resolved Hide resolved
app/src/feed/feed.resolver.ts Outdated Show resolved Hide resolved
app/src/feed/feed.service.ts Outdated Show resolved Hide resolved
app/src/feed/model/feed.model.ts Outdated Show resolved Hide resolved
app/src/follow/follow.cache.service.ts Outdated Show resolved Hide resolved
app/src/feed/model/feed.model.ts Show resolved Hide resolved
@jpham005
Copy link
Member

그리고 프론트 제발 로컬에서 돌리지 말라고 하세요.

@niamu01 niamu01 force-pushed the feat/feed branch 2 times, most recently from a70cdd7 to 7d9ec24 Compare April 2, 2024 08:40
@niamu01 niamu01 removed the help wanted Extra attention is needed label Apr 5, 2024
@niamu01
Copy link
Contributor Author

niamu01 commented Apr 5, 2024

3/31에 마지막 시험 보고 4/1부터 다시 진행 중입니다 😬
프론트는 follow 관련된 pr 진행 중이라구 하구용
만들다가 헷갈려서 다 쪼개졌었는데 다시 처음 하려던 대로 구조 잡아봤습니다.

아직 cache는 제외하고 db에서 바로 aggregate 후 반환하게 만들었구,
location 생성 시 feed db에 추가되는 부분 lambda에서 만들고 cache 시작할 것 같습니다.

그다음 할 일은 상태 메세지를 db에서 어떻게 둘지 고민하는 정도...

Copy link
Member

@jpham005 jpham005 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

feed pagination 에 대해선 방향성을 다시 잡아야 할 것 같습니다.
기간이나 숫자의 제약이 있는 방식으로요.

app/src/follow/follow.cache.service.ts Show resolved Hide resolved
app/src/feed/feed.service.ts Show resolved Hide resolved
app/src/feed/feed.service.ts Outdated Show resolved Hide resolved
flatMap은 빈 배열을 합치지 못하더라구용

- #416
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants