MCPcopy
hub / github.com/drizzle-team/drizzle-orm / construct

Function construct

drizzle-orm/src/node-postgres/driver.ts:49–89  ·  view source on GitHub ↗
(
	client: TClient,
	config: DrizzleConfig<TSchema> = {},
)

Source from the content-addressed store, hash-verified

47}
48
49function construct<
50 TSchema extends Record<string, unknown> = Record<string, never>,
51 TClient extends NodePgClient = NodePgClient,
52>(
53 client: TClient,
54 config: DrizzleConfig<TSchema> = {},
55): NodePgDatabase<TSchema> & {
56 $client: NodePgClient extends TClient ? Pool : TClient;
57} {
58 const dialect = new PgDialect({ casing: config.casing });
59 let logger;
60 if (config.logger === true) {
61 logger = new DefaultLogger();
62 } else if (config.logger !== false) {
63 logger = config.logger;
64 }
65
66 let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;
67 if (config.schema) {
68 const tablesConfig = extractTablesRelationalConfig(
69 config.schema,
70 createTableRelationsHelpers,
71 );
72 schema = {
73 fullSchema: config.schema,
74 schema: tablesConfig.tables,
75 tableNamesMap: tablesConfig.tableNamesMap,
76 };
77 }
78
79 const driver = new NodePgDriver(client, dialect, { logger, cache: config.cache });
80 const session = driver.createSession(schema);
81 const db = new NodePgDatabase(dialect, session, schema as any) as NodePgDatabase<TSchema>;
82 (<any> db).$client = client;
83 (<any> db).$cache = config.cache;
84 if ((<any> db).$cache) {
85 (<any> db).$cache['invalidate'] = config.cache?.onMutate;
86 }
87
88 return db as any;
89}
90
91export function drizzle<
92 TSchema extends Record<string, unknown> = Record<string, never>,

Callers 2

drizzleFunction · 0.70
mockFunction · 0.70

Calls 2

createSessionMethod · 0.95

Tested by

no test coverage detected