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

Function construct

drizzle-orm/src/mysql2/driver.ts:60–111  ·  view source on GitHub ↗
(
	client: TClient,
	config: MySql2DrizzleConfig<TSchema> = {},
)

Source from the content-addressed store, hash-verified

58 & ({ schema: TSchema; mode: Mode } | { schema?: undefined; mode?: Mode });
59
60function construct<
61 TSchema extends Record<string, unknown> = Record<string, never>,
62 TClient extends Pool | Connection | CallbackPool | CallbackConnection = CallbackPool,
63>(
64 client: TClient,
65 config: MySql2DrizzleConfig<TSchema> = {},
66): MySql2Database<TSchema> & {
67 $client: AnyMySql2Connection extends TClient ? CallbackPool : TClient;
68} {
69 const dialect = new MySqlDialect({ casing: config.casing });
70 let logger;
71 if (config.logger === true) {
72 logger = new DefaultLogger();
73 } else if (config.logger !== false) {
74 logger = config.logger;
75 }
76
77 const clientForInstance = isCallbackClient(client) ? client.promise() : client;
78
79 let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;
80 if (config.schema) {
81 if (config.mode === undefined) {
82 throw new DrizzleError({
83 message:
84 'You need to specify "mode": "planetscale" or "default" when providing a schema. Read more: https://orm.drizzle.team/docs/rqb#modes',
85 });
86 }
87
88 const tablesConfig = extractTablesRelationalConfig(
89 config.schema,
90 createTableRelationsHelpers,
91 );
92 schema = {
93 fullSchema: config.schema,
94 schema: tablesConfig.tables,
95 tableNamesMap: tablesConfig.tableNamesMap,
96 };
97 }
98
99 const mode = config.mode ?? 'default';
100
101 const driver = new MySql2Driver(clientForInstance as MySql2Client, dialect, { logger, cache: config.cache });
102 const session = driver.createSession(schema, mode);
103 const db = new MySql2Database(dialect, session, schema as any, mode) as MySql2Database<TSchema>;
104 (<any> db).$client = client;
105 (<any> db).$cache = config.cache;
106 if ((<any> db).$cache) {
107 (<any> db).$cache['invalidate'] = config.cache?.onMutate;
108 }
109
110 return db as any;
111}
112
113interface CallbackClient {
114 promise(): MySql2Client;

Callers 2

drizzleFunction · 0.70
mockFunction · 0.70

Calls 4

createSessionMethod · 0.95
isCallbackClientFunction · 0.70
promiseMethod · 0.65

Tested by

no test coverage detected