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

Function construct

drizzle-orm/src/planetscale-serverless/driver.ts:29–85  ·  view source on GitHub ↗
(
	client: TClient,
	config: DrizzleConfig<TSchema> = {},
)

Source from the content-addressed store, hash-verified

27}
28
29function construct<
30 TSchema extends Record<string, unknown> = Record<string, never>,
31 TClient extends Client = Client,
32>(
33 client: TClient,
34 config: DrizzleConfig<TSchema> = {},
35): PlanetScaleDatabase<TSchema> & {
36 $client: TClient;
37} {
38 // Client is not Drizzle Object, so we can ignore this rule here
39 // eslint-disable-next-line no-instanceof/no-instanceof
40 if (!(client instanceof Client)) {
41 throw new Error(`Warning: You need to pass an instance of Client:
42
43import { Client } from "@planetscale/database";
44
45const client = new Client({
46 host: process.env["DATABASE_HOST"],
47 username: process.env["DATABASE_USERNAME"],
48 password: process.env["DATABASE_PASSWORD"],
49});
50
51const db = drizzle(client);
52 `);
53 }
54
55 const dialect = new MySqlDialect({ casing: config.casing });
56 let logger;
57 if (config.logger === true) {
58 logger = new DefaultLogger();
59 } else if (config.logger !== false) {
60 logger = config.logger;
61 }
62
63 let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;
64 if (config.schema) {
65 const tablesConfig = extractTablesRelationalConfig(
66 config.schema,
67 createTableRelationsHelpers,
68 );
69 schema = {
70 fullSchema: config.schema,
71 schema: tablesConfig.tables,
72 tableNamesMap: tablesConfig.tableNamesMap,
73 };
74 }
75
76 const session = new PlanetscaleSession(client, dialect, undefined, schema, { logger, cache: config.cache });
77 const db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;
78 (<any> db).$client = client;
79 (<any> db).$cache = config.cache;
80 if ((<any> db).$cache) {
81 (<any> db).$cache['invalidate'] = config.cache?.onMutate;
82 }
83
84 return db as any;
85}
86

Callers 2

drizzleFunction · 0.70
mockFunction · 0.70

Calls 1

Tested by

no test coverage detected