Home / File/ select.types.ts — drizzle-orm Source File

select.types.ts — drizzle-orm Source File

Architecture documentation for select.types.ts, a typescript file in the drizzle-orm codebase. 7 imports, 1 dependents.

File typescript DrizzleORM 7 imports 1 dependents

Entity Profile

Dependency Diagram

graph LR
  7e7f8434_4765_0a70_b7fa_d197dd2fa706["select.types.ts"]
  2dc784c6_95e9_4e28_ec81_7caf4acbd426["column-builder.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> 2dc784c6_95e9_4e28_ec81_7caf4acbd426
  05f0a280_d0c9_693a_a4bf_83cc671012d2["column.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> 05f0a280_d0c9_693a_a4bf_83cc671012d2
  8809dea6_3f84_fb1a_7eed_e0d9bd54d799["operations.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> 8809dea6_3f84_fb1a_7eed_e0d9bd54d799
  be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd
  4d55618d_fa7b_8e54_edb2_b85ae393d95b["subquery.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> 4d55618d_fa7b_8e54_edb2_b85ae393d95b
  1fd6ac27_a0fb_a054_a358_c8766c3fcbd7["table.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> 1fd6ac27_a0fb_a054_a358_c8766c3fcbd7
  ecce3253_1e75_a87f_27b3_ca87e81a3024["utils.ts"]
  7e7f8434_4765_0a70_b7fa_d197dd2fa706 --> ecce3253_1e75_a87f_27b3_ca87e81a3024
  99737bc3_a631_a054_9291_f966c791930f["utils.ts"]
  99737bc3_a631_a054_9291_f966c791930f --> 7e7f8434_4765_0a70_b7fa_d197dd2fa706
  style 7e7f8434_4765_0a70_b7fa_d197dd2fa706 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { ChangeColumnTableName, ColumnDataType, Dialect } from '~/column-builder.ts';
import type { AnyColumn, Column, ColumnBaseConfig, GetColumnData, UpdateColConfig } from '~/column.ts';
import type { SelectedFields } from '~/operations.ts';
import type { ColumnsSelection, SQL, View } from '~/sql/sql.ts';
import type { Subquery } from '~/subquery.ts';
import type { Table } from '~/table.ts';
import type { Assume, DrizzleTypeError, Equal, FromSingleKeyObject, IsAny, IsUnion, Not, Simplify } from '~/utils.ts';

export type JoinType = 'inner' | 'left' | 'right' | 'full' | 'cross';

export type JoinNullability = 'nullable' | 'not-null';

export type ApplyNullability<T, TNullability extends JoinNullability> = TNullability extends 'nullable' ? T | null
	: TNullability extends 'null' ? null
	: T;

export type ApplyNullabilityToColumn<TColumn extends Column, TNullability extends JoinNullability> =
	TNullability extends 'not-null' ? TColumn
		: Column<
			Assume<
				UpdateColConfig<TColumn['_'], {
					notNull: TNullability extends 'nullable' ? false : TColumn['_']['notNull'];
				}>,
				ColumnBaseConfig<ColumnDataType, string>
			>
		>;

export type ApplyNotNullMapToJoins<TResult, TNullabilityMap extends Record<string, JoinNullability>> =
	& {
		[TTableName in keyof TResult & keyof TNullabilityMap & string]: ApplyNullability<
			TResult[TTableName],
			TNullabilityMap[TTableName]
		>;
	}
	& {};

export type SelectMode = 'partial' | 'single' | 'multiple';

export type SelectResult<
	TResult,
	TSelectMode extends SelectMode,
	TNullabilityMap extends Record<string, JoinNullability>,
> = TSelectMode extends 'partial' ? SelectPartialResult<TResult, TNullabilityMap>
	: TSelectMode extends 'single' ? SelectResultFields<TResult>
	: ApplyNotNullMapToJoins<SelectResultFields<TResult>, TNullabilityMap>;

type SelectPartialResult<TFields, TNullability extends Record<string, JoinNullability>> = TNullability extends
	TNullability ? {
		[Key in keyof TFields]: TFields[Key] extends infer TField
			? TField extends Table ? TField['_']['name'] extends keyof TNullability ? ApplyNullability<
						SelectResultFields<TField['_']['columns']>,
						TNullability[TField['_']['name']]
					>
				: never
			: TField extends Column
				? TField['_']['tableName'] extends keyof TNullability
					? ApplyNullability<SelectResultField<TField>, TNullability[TField['_']['tableName']]>
				: never
			: TField extends SQL | SQL.Aliased ? SelectResultField<TField>
			: TField extends Subquery ? FromSingleKeyObject<
// ... (116 more lines)

Domain

Dependencies

  • column-builder.ts
  • column.ts
  • operations.ts
  • sql.ts
  • subquery.ts
  • table.ts
  • utils.ts

Frequently Asked Questions

What does select.types.ts do?
select.types.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain.
What does select.types.ts depend on?
select.types.ts imports 7 module(s): column-builder.ts, column.ts, operations.ts, sql.ts, subquery.ts, table.ts, utils.ts.
What files import select.types.ts?
select.types.ts is imported by 1 file(s): utils.ts.
Where is select.types.ts in the architecture?
select.types.ts is located at drizzle-orm/src/query-builders/select.types.ts (domain: DrizzleORM, directory: drizzle-orm/src/query-builders).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free