(
client: TClient,
config: DrizzleConfig<TSchema> = {},
)
| 27 | } |
| 28 | |
| 29 | function 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 | |
| 43 | import { Client } from "@planetscale/database"; |
| 44 | |
| 45 | const client = new Client({ |
| 46 | host: process.env["DATABASE_HOST"], |
| 47 | username: process.env["DATABASE_USERNAME"], |
| 48 | password: process.env["DATABASE_PASSWORD"], |
| 49 | }); |
| 50 | |
| 51 | const 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 |
no test coverage detected