schema.ts — drizzle-orm Source File
Architecture documentation for schema.ts, a typescript file in the drizzle-orm codebase. 9 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7["schema.ts"] 56015c82_287b_9f6e_abba_3d7f471c1e5c["column.ts"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 56015c82_287b_9f6e_abba_3d7f471c1e5c 06e21ad5_4a79_38ca_ddc3_d0ed3cb1ab5c["columnToSchema"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 06e21ad5_4a79_38ca_ddc3_d0ed3cb1ab5c 8725eccf_899f_f8ab_d772_88de638f2609["mapEnumValues"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 8725eccf_899f_f8ab_d772_88de638f2609 224d090d_0385_ea0a_7fbe_57b37e55038e["schema.types.internal.ts"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 224d090d_0385_ea0a_7fbe_57b37e55038e b0f80f81_d8ca_1927_f5f8_c8088fb077bb["schema.types.ts"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> b0f80f81_d8ca_1927_f5f8_c8088fb077bb 0dcff89a_a60f_bf80_037e_d24dd39456e3["utils.ts"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 0dcff89a_a60f_bf80_037e_d24dd39456e3 26760edf_9a0c_0204_77e6_f8bffa96e354["typebox"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 26760edf_9a0c_0204_77e6_f8bffa96e354 690f7dfc_0aea_9ee8_d6e7_26bbb3689031["drizzle-orm"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 690f7dfc_0aea_9ee8_d6e7_26bbb3689031 53497908_16e7_977d_e97d_7414884a88a6["pg-core"] 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 --> 53497908_16e7_977d_e97d_7414884a88a6 style 8dacc372_d6d5_e273_f9e6_3a10af9bc4a7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { Type as t } from '@sinclair/typebox';
import type { TSchema } from '@sinclair/typebox';
import { Column, getTableColumns, getViewSelectedFields, is, isTable, isView, SQL } from 'drizzle-orm';
import type { Table, View } from 'drizzle-orm';
import type { PgEnum } from 'drizzle-orm/pg-core';
import { columnToSchema, mapEnumValues } from './column.ts';
import type { Conditions } from './schema.types.internal.ts';
import type {
CreateInsertSchema,
CreateSchemaFactoryOptions,
CreateSelectSchema,
CreateUpdateSchema,
} from './schema.types.ts';
import { isPgEnum } from './utils.ts';
export function getColumns(tableLike: Table | View) {
return isTable(tableLike) ? getTableColumns(tableLike) : getViewSelectedFields(tableLike);
}
export function handleColumns(
columns: Record<string, any>,
refinements: Record<string, any>,
conditions: Conditions,
factory?: CreateSchemaFactoryOptions,
): TSchema {
const columnSchemas: Record<string, TSchema> = {};
for (const [key, selected] of Object.entries(columns)) {
if (!is(selected, Column) && !is(selected, SQL) && !is(selected, SQL.Aliased) && typeof selected === 'object') {
const columns = isTable(selected) || isView(selected) ? getColumns(selected) : selected;
columnSchemas[key] = handleColumns(columns, refinements[key] ?? {}, conditions, factory);
continue;
}
const refinement = refinements[key];
if (refinement !== undefined && typeof refinement !== 'function') {
columnSchemas[key] = refinement;
continue;
}
const column = is(selected, Column) ? selected : undefined;
const schema = column ? columnToSchema(column, factory?.typeboxInstance ?? t) : t.Any();
const refined = typeof refinement === 'function' ? refinement(schema) : schema;
if (conditions.never(column)) {
continue;
} else {
columnSchemas[key] = refined;
}
if (column) {
if (conditions.nullable(column)) {
columnSchemas[key] = t.Union([columnSchemas[key]!, t.Null()]);
}
if (conditions.optional(column)) {
columnSchemas[key] = t.Optional(columnSchemas[key]!);
}
}
}
// ... (85 more lines)
Domain
Subdomains
Functions
- createInsertSchema()
- createSchemaFactory()
- createSelectSchema()
- createUpdateSchema()
- getColumns()
- handleColumns()
- handleEnum()
- insertConditions.never()
- insertConditions.nullable()
- insertConditions.optional()
- selectConditions.never()
- selectConditions.nullable()
- selectConditions.optional()
- updateConditions.never()
- updateConditions.nullable()
- updateConditions.optional()
Dependencies
- column.ts
- columnToSchema
- drizzle-orm
- mapEnumValues
- pg-core
- schema.types.internal.ts
- schema.types.ts
- typebox
- utils.ts
Source
Frequently Asked Questions
What does schema.ts do?
schema.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the ValidationAdapters domain, SchemaRefinement subdomain.
What functions are defined in schema.ts?
schema.ts defines 16 function(s): createInsertSchema, createSchemaFactory, createSelectSchema, createUpdateSchema, getColumns, handleColumns, handleEnum, insertConditions.never, insertConditions.nullable, insertConditions.optional, and 6 more.
What does schema.ts depend on?
schema.ts imports 9 module(s): column.ts, columnToSchema, drizzle-orm, mapEnumValues, pg-core, schema.types.internal.ts, schema.types.ts, typebox, and 1 more.
Where is schema.ts in the architecture?
schema.ts is located at drizzle-typebox/src/schema.ts (domain: ValidationAdapters, subdomain: SchemaRefinement, directory: drizzle-typebox/src).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free