본문으로 건너뛰기

인터페이스: Context

정의 위치: packages/db/src/query/builder/types.ts:44

Context - 쿼리 빌더 작업을 위한 중앙 상태 컨테이너입니다.

이 인터페이스는 쿼리를 빌드하고 타입을 검사하는 데 필요한 모든 정보를 추적합니다:

스키마 관리:

  • baseSchema: from() 절의 원래 테이블/컬렉션
  • schema: 현재 사용 가능한 테이블(join에 따라 확장되고 서브쿼리에 따라 축소됨)

쿼리 상태:

  • fromSourceName: from() 또는 첫 번째 unionAll() 소스에서 사용된 테이블 - 선택성 로직에 필요합니다.
  • hasJoins: 조인이 추가되었는지 여부입니다(결과 타입 추론에 영향을 줍니다).
  • joinTypes: 선택성 계산을 위해 테이블 별칭을 조인 타입에 매핑합니다.

결과 추적:

  • result: select() 후의 최종 형태입니다 - select가 호출될 때까지 정의되지 않습니다.

쿼리 빌더 체인을 거치면서 컨텍스트가 발전합니다:

  1. from()는 baseSchema와 schema를 동일한 값으로 설정합니다.
  2. join()는 schema를 확장하고 hasJoins/joinTypes를 설정합니다.
  3. select()는 투영된 형태로 result를 설정합니다.

속성

baseSchema

baseSchema: ContextSchema;

정의 위치: packages/db/src/query/builder/types.ts:46


fromSourceName

fromSourceName: string;

정의 위치: packages/db/src/query/builder/types.ts:52


fromSourceNames?

optional fromSourceNames: readonly string[];

정의 위치: packages/db/src/query/builder/types.ts:54


hasJoins?

optional hasJoins: boolean;

정의 위치: packages/db/src/query/builder/types.ts:58


hasResult?

optional hasResult: true;

정의 위치: packages/db/src/query/builder/types.ts:67


hasUnionFrom?

optional hasUnionFrom: true;

정의 위치: packages/db/src/query/builder/types.ts:56


joinTypes?

optional joinTypes: Record<string, "inner" | "left" | "right" | "full" | "outer" | "cross">;

정의 위치: packages/db/src/query/builder/types.ts:60


refsSchema?

optional refsSchema: ContextSchema;

정의 위치: packages/db/src/query/builder/types.ts:50


result?

optional result: any;

정의 위치: packages/db/src/query/builder/types.ts:65


schema

schema: ContextSchema;

정의 위치: packages/db/src/query/builder/types.ts:48


singleResult?

optional singleResult: boolean;

정의 위치: packages/db/src/query/builder/types.ts:69