"실제로 존재하는 글을 모델링하고 달력 보기는 계산해."
무엇이 오래 사나
매일 하는 연습은 날짜마다 container를 만들고 싶게 해. 그러면 오늘은 쉬워도 나머지가 전부 어색해져. 오래 남는 건 엔트리고 날짜와 태그, 필사 상태는 보기를 만드는 속성이야.
보기는 query로
안정된 id와 원문, 원문 언어, entry_date, timestamp, 상태를 가진 entries table 하나를 써. 오늘과 최근 창, 달력, 검색이 day bucket에 복사하지 않고 같은 행을 조회하게 해.
경계를 안 쓰면 생기는 일
날짜별 파일은 엔트리 이동과 수정, 검색을 container 사이 작업으로 만들어. 빈 날도 기록이 필요하다는 잘못된 생각도 부르고. 컬렉션은 글을 저장하지 의무를 저장하지 않아.
같은 엔트리를 네 창에서 봐
이 구조를 확인하려면 엔트리 하나를 오늘, 7일, 30일, 달력에서 차례로 조회해. 복사본을 만드는지 같은 행을 다른 조건으로 보는지 적고, 기기 entry_date와 절대 timestamp가 각각 답하는 질문을 분리해. 빈 날 때문에 가짜 엔트리를 만들면 모델이 의무를 저장하기 시작한 거야.
직접 query해
같은 entries table로 오늘 보기와 달력 점 query를 써. 월말과 연말, 자정 근처, 같은 날 여러 엔트리, status = 'live'도 포함해. 화면 숫자가 맞는지만 보지 말고 어떤 범위 조건과 index가 그 답을 만들었는지 설명해.
기억은 다시 찾게 해야 해
날짜와 키워드는 글을 평가하지 않고 돌아가는 길을 만들어. 검색 결과가 원문과 필사 상태를 같은 엔트리에서 읽고, 태그가 prompt provenance와 연결돼 있으면 하나의 컬렉션이 정말 자기 역사를 갖게 돼.
이 레슨의 query
오늘 보기는 entry_date = :today, 달력 점은 날짜별 count, 검색은 원문과 keyword join으로 답하면 돼. 셋이 모두 같은 entry id를 돌려주면 수정과 삭제, 필사 상태가 어느 화면에서도 동시에 같은 뜻을 가져.
달력은 데이터의 주인이 아니라 데이터에 묻는 질문이야. 보기가 늘어도 canonical entry를 복사하지 않는 이유가 여기에 있어.