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.
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
Types
- AddAliasToSelection
- AppendToNullabilityMap
- AppendToResult
- ApplyNotNullMapToJoins
- ApplyNullability
- ApplyNullabilityToColumn
- BuildSubquerySelection
- GetSelectTableName
- GetSelectTableSelection
- JoinNullability
- JoinType
- MapColumnsToTableAlias
- SelectMode
- SelectPartialResult
- SelectResult
- SelectResultField
- SelectResultFields
- SetJoinsNullability
- SetOperator
- TableLike
Dependencies
- column-builder.ts
- column.ts
- operations.ts
- sql.ts
- subquery.ts
- table.ts
- utils.ts
Imported By
Source
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