/* * 훅이 저장소에 닿는 두 자리 — 연결을 찾는 것과 커서를 적는 것. * * ── 왜 갈라져 있나 (2026-08-31) ────────────────────────────────────────── * `reference-hook.ts` 가 엔티티를 직접 가져오면 그 파일을 부르는 시험이 TypeORM 데코레이터를 지나게 * 되고, 시험이 서지 않는다. 실제로 훅 시험이 규약 파일(`hook-contract.ts`)만 부르고 있었던 이유가 * 그것이다 — 그래서 **배선은 아무 시험도 걷지 않았다.** * * 저장소에 닿는 두 함수만 여기로 내면, 처리 순서 전체를 시험이 같은 함수로 걸을 수 있다. 시험은 * 저장본을 손에 들고 있는 구현을 넣어 재기동까지 넣는다. */ import { getRepository } from '@things-factory/shell' import { TwinReference } from './twin-reference.js' import type { HookStore } from './reference-hook.js' /** 실제 저장소를 쓰는 구현 — 라우터가 이것을 넣는다. */ export function databaseStore(): HookStore { return { load: (domainId: string, source: string) => getRepository(TwinReference) .findOne({ where: { domain: { id: domainId }, source } }) .catch(() => null), saveCursor: async (refId: string, cursor: unknown) => { await getRepository(TwinReference).update({ id: refId }, { liveCursor: cursor } as any) } } }