(
client: TClient,
config: DrizzleConfig<TSchema> = {},
)
| 122 | } |
| 123 | |
| 124 | function construct< |
| 125 | TSchema extends Record<string, unknown> = Record<string, never>, |
| 126 | TClient extends NeonQueryFunction<any, any> = NeonQueryFunction<any, any>, |
| 127 | >( |
| 128 | client: TClient, |
| 129 | config: DrizzleConfig<TSchema> = {}, |
| 130 | ): NeonHttpDatabase<TSchema> & { |
| 131 | $client: TClient; |
| 132 | } { |
| 133 | const dialect = new PgDialect({ casing: config.casing }); |
| 134 | let logger; |
| 135 | if (config.logger === true) { |
| 136 | logger = new DefaultLogger(); |
| 137 | } else if (config.logger !== false) { |
| 138 | logger = config.logger; |
| 139 | } |
| 140 | |
| 141 | let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined; |
| 142 | if (config.schema) { |
| 143 | const tablesConfig = extractTablesRelationalConfig( |
| 144 | config.schema, |
| 145 | createTableRelationsHelpers, |
| 146 | ); |
| 147 | schema = { |
| 148 | fullSchema: config.schema, |
| 149 | schema: tablesConfig.tables, |
| 150 | tableNamesMap: tablesConfig.tableNamesMap, |
| 151 | }; |
| 152 | } |
| 153 | |
| 154 | const driver = new NeonHttpDriver(client, dialect, { logger, cache: config.cache }); |
| 155 | const session = driver.createSession(schema); |
| 156 | |
| 157 | const db = new NeonHttpDatabase( |
| 158 | dialect, |
| 159 | session, |
| 160 | schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined, |
| 161 | ); |
| 162 | (<any> db).$client = client; |
| 163 | (<any> db).$cache = config.cache; |
| 164 | if ((<any> db).$cache) { |
| 165 | (<any> db).$cache['invalidate'] = config.cache?.onMutate; |
| 166 | } |
| 167 | |
| 168 | return db as any; |
| 169 | } |
| 170 | |
| 171 | export function drizzle< |
| 172 | TSchema extends Record<string, unknown> = Record<string, never>, |
no test coverage detected