타입 별칭: MergeContextWithJoinType<TContext, TNewSchema, TJoinType>
type MergeContextWithJoinType<TContext, TNewSchema, TJoinType> = object & PreserveSingleResultFlag<TContext["singleResult"]> & PreserveHasResultFlag<TContext["hasResult"]> & PreserveUnionFromFlag<TContext["hasUnionFrom"]> & PreserveFromSourceNames<TContext["fromSourceNames"]>;
정의 위치: packages/db/src/query/builder/types.ts:943
MergeContextWithJoinType - 조인 작업 후 새 컨텍스트를 생성합니다
테이블을 조인할 때 스키마를 병합하는 복잡한 로직을 처리하고, 조인 유형에 따라 올바른 선택 사항 여부를 적용하는 핵심 타입입니다.
주요 책임:
- 스키마 병합: 기존 스키마와 새로 조인된 테이블을 결합합니다.
- 선택 사항 여부 로직: 조인별 선택 사항 여부 규칙을 적용합니다:
LEFT JOIN: 새 테이블이 선택 사항이 됩니다.RIGHT JOIN: 기존 테이블이 선택 사항이 됩니다.FULL JOIN: 기존 테이블과 새 테이블이 모두 선택 사항이 됩니다.INNER JOIN: 어떤 테이블도 선택 사항이 되지 않습니다.
- 상태 추적: 이후 작업을 위해 hasJoins 및 joinTypes를 업데이트합니다.
컨텍스트 변화:
baseSchema: 변경되지 않습니다(항상 원래from()테이블입니다).schema: 새 테이블과 적절한 선택 사항 여부가 반영되어 확장됩니다.hasJoins: true로 설정됩니다.joinTypes: 이 조인 유형을 추적하도록 업데이트됩니다.result: 이전 작업에서 보존됩니다.singleResult: 이미 true인 경우에만 보존됩니다(PreserveSingleResultFlag를 통해).
타입 선언
baseSchema
baseSchema: TContext["baseSchema"];
fromSourceName
fromSourceName: TContext["fromSourceName"];
hasJoins
hasJoins: true;
joinTypes
joinTypes: TContext["joinTypes"] extends Record<string, any> ? TContext["joinTypes"] : object & { [K in keyof TNewSchema & string]: TJoinType };
refsSchema
refsSchema: ApplyJoinOptionalityToMergedSchema<RefsSchemaForContext<TContext>, TNewSchema, TJoinType, FromSourceNamesForOptionality<TContext>>;
result
result: TContext["result"];
schema
schema: ApplyJoinOptionalityToMergedSchema<TContext["schema"], TNewSchema, TJoinType, FromSourceNamesForOptionality<TContext>>;
타입 매개변수
TContext
TContext extends Context
TNewSchema
TNewSchema extends ContextSchema
TJoinType
TJoinType extends "inner" | "left" | "right" | "full" | "outer" | "cross"