@xata.io/drizzle 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +14 -0
- package/dist/index.cjs +10 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +12 -17
- package/dist/index.mjs.map +1 -1
- package/dist/pg.cjs +7 -10
- package/dist/pg.cjs.map +1 -1
- package/dist/pg.d.ts +1 -1
- package/dist/pg.mjs +8 -11
- package/dist/pg.mjs.map +1 -1
- package/package.json +5 -5
- package/test/drizzle.test.ts +10 -8
package/.turbo/turbo-build.log
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
|
2
|
-
> @xata.io/drizzle@0.0.
|
2
|
+
> @xata.io/drizzle@0.0.23 build /home/runner/work/client-ts/client-ts/packages/plugin-client-drizzle
|
3
3
|
> rimraf dist && rollup -c
|
4
4
|
|
5
5
|
[36m
|
6
6
|
[1msrc/index.ts[22m → [1mdist/index.cjs, dist/index.mjs[22m...[39m
|
7
7
|
[1m[33m(!) Unresolved dependencies[39m[22m
|
8
8
|
[90mhttps://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency[39m
|
9
|
-
[1mdrizzle-orm[22m (imported by "src/http/
|
10
|
-
[1mdrizzle-orm/pg-core[22m (imported by "src/http/
|
11
|
-
[32mcreated [1mdist/index.cjs, dist/index.mjs[22m in [
|
9
|
+
[1mdrizzle-orm[22m (imported by "src/http/driver.ts", "src/http/session.ts" and "src/shared/utils.ts")
|
10
|
+
[1mdrizzle-orm/pg-core[22m (imported by "src/http/driver.ts" and "src/http/session.ts")
|
11
|
+
[32mcreated [1mdist/index.cjs, dist/index.mjs[22m in [1m493ms[22m[39m
|
12
12
|
[36m
|
13
13
|
[1msrc/index.ts[22m → [1mdist/index.d.ts[22m...[39m
|
14
14
|
[32mcreated [1mdist/index.d.ts[22m in [1m6.6s[22m[39m
|
@@ -19,7 +19,7 @@
|
|
19
19
|
[1mdrizzle-orm[22m (imported by "src/pg/driver.ts", "src/pg/session.ts" and "src/shared/utils.ts")
|
20
20
|
[1mdrizzle-orm/pg-core[22m (imported by "src/pg/driver.ts" and "src/pg/session.ts")
|
21
21
|
[1mpg[22m (imported by "src/pg/session.ts")
|
22
|
-
[32mcreated [1mdist/pg.cjs, dist/pg.mjs[22m in [
|
22
|
+
[32mcreated [1mdist/pg.cjs, dist/pg.mjs[22m in [1m34ms[22m[39m
|
23
23
|
[36m
|
24
24
|
[1msrc/pg/index.ts[22m → [1mdist/pg.d.ts[22m...[39m
|
25
|
-
[32mcreated [1mdist/pg.d.ts[22m in [1m1.
|
25
|
+
[32mcreated [1mdist/pg.d.ts[22m in [1m1.5s[22m[39m
|
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# @xata.io/drizzle
|
2
2
|
|
3
|
+
## 0.0.23
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Updated dependencies [[`cc673c9`](https://github.com/xataio/client-ts/commit/cc673c9a7885351082020e360630eab5db78c652)]:
|
8
|
+
- @xata.io/client@0.30.0
|
9
|
+
|
10
|
+
## 0.0.22
|
11
|
+
|
12
|
+
### Patch Changes
|
13
|
+
|
14
|
+
- Updated dependencies [[`6b754d2`](https://github.com/xataio/client-ts/commit/6b754d2f6a1f7b9378a96fe27502ff6c29ff5ed8)]:
|
15
|
+
- @xata.io/client@0.29.5
|
16
|
+
|
3
17
|
## 0.0.21
|
4
18
|
|
5
19
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
@@ -46,8 +46,8 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
46
46
|
return result;
|
47
47
|
}
|
48
48
|
|
49
|
-
var _a$1, _b$1, _c;
|
50
|
-
class XataHttpPreparedQuery extends pgCore.PgPreparedQuery {
|
49
|
+
var _a$1, _b$1, _c$1, _d, _e, _f;
|
50
|
+
class XataHttpPreparedQuery extends (_b$1 = pgCore.PgPreparedQuery, _a$1 = drizzleOrm.entityKind, _b$1) {
|
51
51
|
constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
|
52
52
|
super(query);
|
53
53
|
this.client = client;
|
@@ -65,8 +65,7 @@ class XataHttpPreparedQuery extends pgCore.PgPreparedQuery {
|
|
65
65
|
return { rowCount: result.records.length, rows: result.records, rowAsArray: false };
|
66
66
|
}
|
67
67
|
const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
|
68
|
-
if (warning)
|
69
|
-
console.warn(warning);
|
68
|
+
if (warning) console.warn(warning);
|
70
69
|
const joinsNotNullableMap = this.joinsNotNullableMap;
|
71
70
|
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
72
71
|
}
|
@@ -85,9 +84,8 @@ class XataHttpPreparedQuery extends pgCore.PgPreparedQuery {
|
|
85
84
|
return this._isResponseInArrayMode;
|
86
85
|
}
|
87
86
|
}
|
88
|
-
_a$1 = drizzleOrm.entityKind;
|
89
87
|
XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
|
90
|
-
class XataHttpSession extends pgCore.PgSession {
|
88
|
+
class XataHttpSession extends (_d = pgCore.PgSession, _c$1 = drizzleOrm.entityKind, _d) {
|
91
89
|
constructor(client, dialect, schema, options = {}) {
|
92
90
|
super(dialect);
|
93
91
|
this.client = client;
|
@@ -126,17 +124,16 @@ class XataHttpSession extends pgCore.PgSession {
|
|
126
124
|
throw new Error("No transactions support in Xata Http driver");
|
127
125
|
}
|
128
126
|
}
|
129
|
-
|
130
|
-
|
131
|
-
class XataTransaction extends pgCore.PgTransaction {
|
127
|
+
XataHttpSession[_c$1] = "XataHttpSession";
|
128
|
+
class XataTransaction extends (_f = pgCore.PgTransaction, _e = drizzleOrm.entityKind, _f) {
|
132
129
|
async transaction(_transaction) {
|
133
130
|
throw new Error("No transactions support in Xata Http driver");
|
134
131
|
}
|
135
132
|
}
|
136
|
-
|
137
|
-
XataTransaction[_c] = "XataHttpTransaction";
|
133
|
+
XataTransaction[_e] = "XataHttpTransaction";
|
138
134
|
|
139
|
-
var _a, _b;
|
135
|
+
var _a, _b, _c;
|
136
|
+
_a = drizzleOrm.entityKind;
|
140
137
|
class XataHttpDriver {
|
141
138
|
constructor(client, dialect, options = {}) {
|
142
139
|
this.client = client;
|
@@ -152,11 +149,9 @@ class XataHttpDriver {
|
|
152
149
|
initMappers() {
|
153
150
|
}
|
154
151
|
}
|
155
|
-
_a = drizzleOrm.entityKind;
|
156
152
|
XataHttpDriver[_a] = "XataDriver";
|
157
|
-
class XataHttpDatabase extends pgCore.PgDatabase {
|
153
|
+
class XataHttpDatabase extends (_c = pgCore.PgDatabase, _b = drizzleOrm.entityKind, _c) {
|
158
154
|
}
|
159
|
-
_b = drizzleOrm.entityKind;
|
160
155
|
XataHttpDatabase[_b] = "XataHttpDatabase";
|
161
156
|
function drizzle(client, config = {}) {
|
162
157
|
const dialect = new pgCore.PgDialect();
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport interface QueryResults<ArrayMode extends 'json' | 'array'> {\n rowCount: number;\n rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];\n rowAsArray: ArrayMode extends 'array' ? true : false;\n}\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super(query);\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n\n this.logger.logQuery(this.query.sql, params);\n\n const { fields, client, query, customResultMapper } = this;\n\n if (!fields && !customResultMapper) {\n const result = await this.client.sql<Record<string, any>>({ statement: query.sql, params });\n return { rowCount: result.records.length, rows: result.records, rowAsArray: false };\n }\n\n const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: 'array' });\n if (warning) console.warn(warning);\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(rows as unknown[][])\n : rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params, responseType: 'array' }).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query,\n this.logger,\n fields,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResults<'array'>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params, responseType: 'array' });\n\n return {\n rowCount: result.rows.length,\n rows: result.rows,\n rowAsArray: true\n };\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>> {\n const result = await this.client.sql<Record<string, any>>({ statement: query, params });\n\n return {\n rowCount: result.records.length,\n rows: result.records,\n rowAsArray: false\n };\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n _config: PgTransactionConfig = {}\n ): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpTransaction';\n\n override async transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport interface XataHttpQueryResultHKT extends QueryResultHKT {\n type: SQLQueryResult<this['row']>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n> {\n static readonly [entityKind]: string = 'XataHttpDatabase';\n\n /** @internal */\n declare readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new XataHttpDatabase(\n dialect,\n session,\n schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined\n );\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","_b","PgPreparedQuery","fillPlaceholders","entityKind","PgSession","NoopLogger","PgTransaction","PgDatabase","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport interface QueryResults<ArrayMode extends 'json' | 'array'> {\n rowCount: number;\n rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];\n rowAsArray: ArrayMode extends 'array' ? true : false;\n}\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super(query);\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n\n this.logger.logQuery(this.query.sql, params);\n\n const { fields, client, query, customResultMapper } = this;\n\n if (!fields && !customResultMapper) {\n const result = await this.client.sql<Record<string, any>>({ statement: query.sql, params });\n return { rowCount: result.records.length, rows: result.records, rowAsArray: false };\n }\n\n const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: 'array' });\n if (warning) console.warn(warning);\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(rows as unknown[][])\n : rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params, responseType: 'array' }).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query,\n this.logger,\n fields,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResults<'array'>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params, responseType: 'array' });\n\n return {\n rowCount: result.rows.length,\n rows: result.rows,\n rowAsArray: true\n };\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>> {\n const result = await this.client.sql<Record<string, any>>({ statement: query, params });\n\n return {\n rowCount: result.records.length,\n rows: result.records,\n rowAsArray: false\n };\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n _config: PgTransactionConfig = {}\n ): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpTransaction';\n\n override async transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport interface XataHttpQueryResultHKT extends QueryResultHKT {\n type: SQLQueryResult<this['row']>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n> {\n static readonly [entityKind]: string = 'XataHttpDatabase';\n\n /** @internal */\n declare readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new XataHttpDatabase(\n dialect,\n session,\n schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined\n );\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","_b","_c","PgPreparedQuery","entityKind","fillPlaceholders","PgSession","NoopLogger","PgTransaction","PgDatabase","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -17,7 +17,7 @@ declare class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPre
|
|
17
17
|
private _isResponseInArrayMode;
|
18
18
|
private customResultMapper?;
|
19
19
|
static readonly [entityKind]: string;
|
20
|
-
constructor(client: XataHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T[
|
20
|
+
constructor(client: XataHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
|
21
21
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
22
22
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
23
23
|
values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
|
package/dist/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { is, Column, SQL, getTableName,
|
2
|
-
import { PgPreparedQuery, PgSession, PgTransaction,
|
1
|
+
import { is, Column, SQL, getTableName, entityKind, fillPlaceholders, NoopLogger, DefaultLogger, extractTablesRelationalConfig, createTableRelationsHelpers } from 'drizzle-orm';
|
2
|
+
import { PgPreparedQuery, PgSession, PgTransaction, PgDialect, PgDatabase } from 'drizzle-orm/pg-core';
|
3
3
|
|
4
4
|
function mapResultRow(columns, row, joinsNotNullableMap) {
|
5
5
|
const nullifyMap = {};
|
@@ -44,8 +44,8 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
44
44
|
return result;
|
45
45
|
}
|
46
46
|
|
47
|
-
var _a$1, _b$1, _c;
|
48
|
-
class XataHttpPreparedQuery extends PgPreparedQuery {
|
47
|
+
var _a$1, _b$1, _c$1, _d, _e, _f;
|
48
|
+
class XataHttpPreparedQuery extends (_b$1 = PgPreparedQuery, _a$1 = entityKind, _b$1) {
|
49
49
|
constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
|
50
50
|
super(query);
|
51
51
|
this.client = client;
|
@@ -63,8 +63,7 @@ class XataHttpPreparedQuery extends PgPreparedQuery {
|
|
63
63
|
return { rowCount: result.records.length, rows: result.records, rowAsArray: false };
|
64
64
|
}
|
65
65
|
const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
|
66
|
-
if (warning)
|
67
|
-
console.warn(warning);
|
66
|
+
if (warning) console.warn(warning);
|
68
67
|
const joinsNotNullableMap = this.joinsNotNullableMap;
|
69
68
|
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
70
69
|
}
|
@@ -83,9 +82,8 @@ class XataHttpPreparedQuery extends PgPreparedQuery {
|
|
83
82
|
return this._isResponseInArrayMode;
|
84
83
|
}
|
85
84
|
}
|
86
|
-
_a$1 = entityKind;
|
87
85
|
XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
|
88
|
-
class XataHttpSession extends PgSession {
|
86
|
+
class XataHttpSession extends (_d = PgSession, _c$1 = entityKind, _d) {
|
89
87
|
constructor(client, dialect, schema, options = {}) {
|
90
88
|
super(dialect);
|
91
89
|
this.client = client;
|
@@ -124,17 +122,16 @@ class XataHttpSession extends PgSession {
|
|
124
122
|
throw new Error("No transactions support in Xata Http driver");
|
125
123
|
}
|
126
124
|
}
|
127
|
-
|
128
|
-
|
129
|
-
class XataTransaction extends PgTransaction {
|
125
|
+
XataHttpSession[_c$1] = "XataHttpSession";
|
126
|
+
class XataTransaction extends (_f = PgTransaction, _e = entityKind, _f) {
|
130
127
|
async transaction(_transaction) {
|
131
128
|
throw new Error("No transactions support in Xata Http driver");
|
132
129
|
}
|
133
130
|
}
|
134
|
-
|
135
|
-
XataTransaction[_c] = "XataHttpTransaction";
|
131
|
+
XataTransaction[_e] = "XataHttpTransaction";
|
136
132
|
|
137
|
-
var _a, _b;
|
133
|
+
var _a, _b, _c;
|
134
|
+
_a = entityKind;
|
138
135
|
class XataHttpDriver {
|
139
136
|
constructor(client, dialect, options = {}) {
|
140
137
|
this.client = client;
|
@@ -150,11 +147,9 @@ class XataHttpDriver {
|
|
150
147
|
initMappers() {
|
151
148
|
}
|
152
149
|
}
|
153
|
-
_a = entityKind;
|
154
150
|
XataHttpDriver[_a] = "XataDriver";
|
155
|
-
class XataHttpDatabase extends PgDatabase {
|
151
|
+
class XataHttpDatabase extends (_c = PgDatabase, _b = entityKind, _c) {
|
156
152
|
}
|
157
|
-
_b = entityKind;
|
158
153
|
XataHttpDatabase[_b] = "XataHttpDatabase";
|
159
154
|
function drizzle(client, config = {}) {
|
160
155
|
const dialect = new PgDialect();
|
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport interface QueryResults<ArrayMode extends 'json' | 'array'> {\n rowCount: number;\n rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];\n rowAsArray: ArrayMode extends 'array' ? true : false;\n}\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super(query);\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n\n this.logger.logQuery(this.query.sql, params);\n\n const { fields, client, query, customResultMapper } = this;\n\n if (!fields && !customResultMapper) {\n const result = await this.client.sql<Record<string, any>>({ statement: query.sql, params });\n return { rowCount: result.records.length, rows: result.records, rowAsArray: false };\n }\n\n const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: 'array' });\n if (warning) console.warn(warning);\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(rows as unknown[][])\n : rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params, responseType: 'array' }).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query,\n this.logger,\n fields,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResults<'array'>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params, responseType: 'array' });\n\n return {\n rowCount: result.rows.length,\n rows: result.rows,\n rowAsArray: true\n };\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>> {\n const result = await this.client.sql<Record<string, any>>({ statement: query, params });\n\n return {\n rowCount: result.records.length,\n rows: result.records,\n rowAsArray: false\n };\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n _config: PgTransactionConfig = {}\n ): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpTransaction';\n\n override async transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport interface XataHttpQueryResultHKT extends QueryResultHKT {\n type: SQLQueryResult<this['row']>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n> {\n static readonly [entityKind]: string = 'XataHttpDatabase';\n\n /** @internal */\n declare readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new XataHttpDatabase(\n dialect,\n session,\n schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined\n );\n}\n"],"names":["result","_a","_b"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport interface QueryResults<ArrayMode extends 'json' | 'array'> {\n rowCount: number;\n rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];\n rowAsArray: ArrayMode extends 'array' ? true : false;\n}\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super(query);\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n\n this.logger.logQuery(this.query.sql, params);\n\n const { fields, client, query, customResultMapper } = this;\n\n if (!fields && !customResultMapper) {\n const result = await this.client.sql<Record<string, any>>({ statement: query.sql, params });\n return { rowCount: result.records.length, rows: result.records, rowAsArray: false };\n }\n\n const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: 'array' });\n if (warning) console.warn(warning);\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(rows as unknown[][])\n : rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params, responseType: 'array' }).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query,\n this.logger,\n fields,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResults<'array'>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params, responseType: 'array' });\n\n return {\n rowCount: result.rows.length,\n rows: result.rows,\n rowAsArray: true\n };\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>> {\n const result = await this.client.sql<Record<string, any>>({ statement: query, params });\n\n return {\n rowCount: result.records.length,\n rows: result.records,\n rowAsArray: false\n };\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n _config: PgTransactionConfig = {}\n ): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpTransaction';\n\n override async transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n throw new Error('No transactions support in Xata Http driver');\n }\n}\n\nexport interface XataHttpQueryResultHKT extends QueryResultHKT {\n type: SQLQueryResult<this['row']>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n> {\n static readonly [entityKind]: string = 'XataHttpDatabase';\n\n /** @internal */\n declare readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new XataHttpDatabase(\n dialect,\n session,\n schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined\n );\n}\n"],"names":["result","_a","_b","_c"],"mappings":"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"}
|
package/dist/pg.cjs
CHANGED
@@ -47,8 +47,8 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
47
47
|
return result;
|
48
48
|
}
|
49
49
|
|
50
|
-
var _a$1, _b, _c;
|
51
|
-
class XataPreparedQuery extends pgCore.PgPreparedQuery {
|
50
|
+
var _a$1, _b, _c, _d, _e, _f;
|
51
|
+
class XataPreparedQuery extends (_b = pgCore.PgPreparedQuery, _a$1 = drizzleOrm.entityKind, _b) {
|
52
52
|
constructor(client, queryString, params, logger, fields, name, _isResponseInArrayMode, customResultMapper) {
|
53
53
|
super({ sql: queryString, params });
|
54
54
|
this.client = client;
|
@@ -100,9 +100,8 @@ class XataPreparedQuery extends pgCore.PgPreparedQuery {
|
|
100
100
|
return this._isResponseInArrayMode;
|
101
101
|
}
|
102
102
|
}
|
103
|
-
_a$1 = drizzleOrm.entityKind;
|
104
103
|
XataPreparedQuery[_a$1] = "XataPreparedQuery";
|
105
|
-
const _XataSession = class _XataSession extends pgCore.PgSession {
|
104
|
+
const _XataSession = class _XataSession extends (_d = pgCore.PgSession, _c = drizzleOrm.entityKind, _d) {
|
106
105
|
constructor(client, dialect, schema, options = {}) {
|
107
106
|
super(dialect);
|
108
107
|
this.client = client;
|
@@ -147,10 +146,9 @@ const _XataSession = class _XataSession extends pgCore.PgSession {
|
|
147
146
|
}
|
148
147
|
}
|
149
148
|
};
|
150
|
-
|
151
|
-
_XataSession[_b] = "XataSession";
|
149
|
+
_XataSession[_c] = "XataSession";
|
152
150
|
let XataSession = _XataSession;
|
153
|
-
const _XataTransaction = class _XataTransaction extends pgCore.PgTransaction {
|
151
|
+
const _XataTransaction = class _XataTransaction extends (_f = pgCore.PgTransaction, _e = drizzleOrm.entityKind, _f) {
|
154
152
|
async transaction(transaction) {
|
155
153
|
const savepointName = `sp${this.nestedIndex + 1}`;
|
156
154
|
const tx = new _XataTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);
|
@@ -165,11 +163,11 @@ const _XataTransaction = class _XataTransaction extends pgCore.PgTransaction {
|
|
165
163
|
}
|
166
164
|
}
|
167
165
|
};
|
168
|
-
|
169
|
-
_XataTransaction[_c] = "XataTransaction";
|
166
|
+
_XataTransaction[_e] = "XataTransaction";
|
170
167
|
let XataTransaction = _XataTransaction;
|
171
168
|
|
172
169
|
var _a;
|
170
|
+
_a = drizzleOrm.entityKind;
|
173
171
|
class XataDriver {
|
174
172
|
constructor(client, dialect, options = {}) {
|
175
173
|
this.client = client;
|
@@ -183,7 +181,6 @@ class XataDriver {
|
|
183
181
|
initMappers() {
|
184
182
|
}
|
185
183
|
}
|
186
|
-
_a = drizzleOrm.entityKind;
|
187
184
|
XataDriver[_a] = "XataDriver";
|
188
185
|
function drizzle(client, config = {}) {
|
189
186
|
const dialect = new pgCore.PgDialect();
|
package/dist/pg.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pg.cjs","sources":["../src/shared/utils.ts","../src/pg/session.ts","../src/pg/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import {\n Assume,\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders,\n sql\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { Client, Pool, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataClient = Pool | PoolClient | Client;\n\nexport class XataPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataPreparedQuery';\n\n private rawQueryConfig: QueryConfig;\n private queryConfig: QueryArrayConfig;\n\n constructor(\n private client: XataClient,\n queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super({ sql: queryString, params });\n this.rawQueryConfig = {\n name,\n text: queryString\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: 'array'\n };\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n\n this.logger.logQuery(this.rawQueryConfig.text, params);\n\n const {\n fields,\n client,\n rawQueryConfig: rawQuery,\n queryConfig: query,\n // @ts-expect-error joinsNotNullableMap is internal\n joinsNotNullableMap,\n customResultMapper\n } = this;\n if (!fields && !customResultMapper) {\n return await client.query(rawQuery, params);\n }\n\n const result = await client.query(query, params);\n\n return customResultMapper\n ? customResultMapper(result.rows)\n : result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.queryConfig, params).then((result) => result.rows);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataSessionOptions {\n logger?: Logger;\n}\n\nexport class XataSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResult> {\n this.logger.logQuery(query, params);\n return await this.client.query({ rowMode: 'array', text: query, values: params });\n }\n\n async queryObjects<T extends QueryResultRow>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n return await this.client.query<T>(query, params);\n }\n\n override async transaction<T>(\n transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n config: PgTransactionConfig = {}\n ): Promise<T> {\n const session =\n this.client instanceof Pool\n ? new XataSession(await this.client.connect(), this.dialect, this.schema, this.options)\n : this;\n const tx = new XataTransaction(this.dialect, session, this.schema);\n // @ts-expect-error getTransactionConfigSQL is internal\n await tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool) {\n (session.client as PoolClient).release();\n }\n }\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataTransaction';\n\n override async transaction<T>(transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n const savepointName = `sp${this.nestedIndex + 1}`;\n // @ts-expect-error session and dialect are internal\n const tx = new XataTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (e) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw e;\n }\n }\n}\n\nexport interface XataQueryResultHKT extends QueryResultHKT {\n type: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport type { XataClient, XataQueryResultHKT } from './session.js';\nimport { XataSession } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataSession(this.client, this.dialect, schema, { logger: this.options.logger });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataQueryResultHKT,\n TSchema\n>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataClient,\n config: DrizzleConfig<TSchema> = {}\n): XataDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n return new PgDatabase(dialect, session, schema) as XataDatabase<TSchema>;\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","PgPreparedQuery","fillPlaceholders","entityKind","PgSession","NoopLogger","Pool","sql","PgTransaction","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers","PgDatabase"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"pg.cjs","sources":["../src/shared/utils.ts","../src/pg/session.ts","../src/pg/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import {\n Assume,\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders,\n sql\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { Client, Pool, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataClient = Pool | PoolClient | Client;\n\nexport class XataPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataPreparedQuery';\n\n private rawQueryConfig: QueryConfig;\n private queryConfig: QueryArrayConfig;\n\n constructor(\n private client: XataClient,\n queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super({ sql: queryString, params });\n this.rawQueryConfig = {\n name,\n text: queryString\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: 'array'\n };\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n\n this.logger.logQuery(this.rawQueryConfig.text, params);\n\n const {\n fields,\n client,\n rawQueryConfig: rawQuery,\n queryConfig: query,\n // @ts-expect-error joinsNotNullableMap is internal\n joinsNotNullableMap,\n customResultMapper\n } = this;\n if (!fields && !customResultMapper) {\n return await client.query(rawQuery, params);\n }\n\n const result = await client.query(query, params);\n\n return customResultMapper\n ? customResultMapper(result.rows)\n : result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.queryConfig, params).then((result) => result.rows);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataSessionOptions {\n logger?: Logger;\n}\n\nexport class XataSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResult> {\n this.logger.logQuery(query, params);\n return await this.client.query({ rowMode: 'array', text: query, values: params });\n }\n\n async queryObjects<T extends QueryResultRow>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n return await this.client.query<T>(query, params);\n }\n\n override async transaction<T>(\n transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n config: PgTransactionConfig = {}\n ): Promise<T> {\n const session =\n this.client instanceof Pool\n ? new XataSession(await this.client.connect(), this.dialect, this.schema, this.options)\n : this;\n const tx = new XataTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n // @ts-expect-error getTransactionConfigSQL is internal\n await tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool) {\n (session.client as PoolClient).release();\n }\n }\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataTransaction';\n\n override async transaction<T>(transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n const savepointName = `sp${this.nestedIndex + 1}`;\n // @ts-expect-error session and dialect are internal\n const tx = new XataTransaction<TFullSchema, TSchema>(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (e) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw e;\n }\n }\n}\n\nexport interface XataQueryResultHKT extends QueryResultHKT {\n type: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport type { XataClient, XataQueryResultHKT } from './session.js';\nimport { XataSession } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataSession(this.client, this.dialect, schema, { logger: this.options.logger });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataQueryResultHKT,\n TSchema\n>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataClient,\n config: DrizzleConfig<TSchema> = {}\n): XataDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n return new PgDatabase(dialect, session, schema) as XataDatabase<TSchema>;\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","PgPreparedQuery","entityKind","fillPlaceholders","PgSession","NoopLogger","Pool","sql","PgTransaction","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers","PgDatabase"],"mappings":"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"}
|
package/dist/pg.d.ts
CHANGED
@@ -13,7 +13,7 @@ declare class XataPreparedQuery<T extends PreparedQueryConfig> extends PgPrepare
|
|
13
13
|
static readonly [entityKind]: string;
|
14
14
|
private rawQueryConfig;
|
15
15
|
private queryConfig;
|
16
|
-
constructor(client: XataClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T[
|
16
|
+
constructor(client: XataClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
|
17
17
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
18
18
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
19
19
|
values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
|
package/dist/pg.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { is, Column, SQL, getTableName,
|
1
|
+
import { is, Column, SQL, getTableName, entityKind, fillPlaceholders, NoopLogger, sql, DefaultLogger, extractTablesRelationalConfig, createTableRelationsHelpers } from 'drizzle-orm';
|
2
2
|
import { PgPreparedQuery, PgSession, PgTransaction, PgDialect, PgDatabase } from 'drizzle-orm/pg-core';
|
3
3
|
import { Pool } from 'pg';
|
4
4
|
|
@@ -45,8 +45,8 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
45
45
|
return result;
|
46
46
|
}
|
47
47
|
|
48
|
-
var _a$1, _b, _c;
|
49
|
-
class XataPreparedQuery extends PgPreparedQuery {
|
48
|
+
var _a$1, _b, _c, _d, _e, _f;
|
49
|
+
class XataPreparedQuery extends (_b = PgPreparedQuery, _a$1 = entityKind, _b) {
|
50
50
|
constructor(client, queryString, params, logger, fields, name, _isResponseInArrayMode, customResultMapper) {
|
51
51
|
super({ sql: queryString, params });
|
52
52
|
this.client = client;
|
@@ -98,9 +98,8 @@ class XataPreparedQuery extends PgPreparedQuery {
|
|
98
98
|
return this._isResponseInArrayMode;
|
99
99
|
}
|
100
100
|
}
|
101
|
-
_a$1 = entityKind;
|
102
101
|
XataPreparedQuery[_a$1] = "XataPreparedQuery";
|
103
|
-
const _XataSession = class _XataSession extends PgSession {
|
102
|
+
const _XataSession = class _XataSession extends (_d = PgSession, _c = entityKind, _d) {
|
104
103
|
constructor(client, dialect, schema, options = {}) {
|
105
104
|
super(dialect);
|
106
105
|
this.client = client;
|
@@ -145,10 +144,9 @@ const _XataSession = class _XataSession extends PgSession {
|
|
145
144
|
}
|
146
145
|
}
|
147
146
|
};
|
148
|
-
|
149
|
-
_XataSession[_b] = "XataSession";
|
147
|
+
_XataSession[_c] = "XataSession";
|
150
148
|
let XataSession = _XataSession;
|
151
|
-
const _XataTransaction = class _XataTransaction extends PgTransaction {
|
149
|
+
const _XataTransaction = class _XataTransaction extends (_f = PgTransaction, _e = entityKind, _f) {
|
152
150
|
async transaction(transaction) {
|
153
151
|
const savepointName = `sp${this.nestedIndex + 1}`;
|
154
152
|
const tx = new _XataTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);
|
@@ -163,11 +161,11 @@ const _XataTransaction = class _XataTransaction extends PgTransaction {
|
|
163
161
|
}
|
164
162
|
}
|
165
163
|
};
|
166
|
-
|
167
|
-
_XataTransaction[_c] = "XataTransaction";
|
164
|
+
_XataTransaction[_e] = "XataTransaction";
|
168
165
|
let XataTransaction = _XataTransaction;
|
169
166
|
|
170
167
|
var _a;
|
168
|
+
_a = entityKind;
|
171
169
|
class XataDriver {
|
172
170
|
constructor(client, dialect, options = {}) {
|
173
171
|
this.client = client;
|
@@ -181,7 +179,6 @@ class XataDriver {
|
|
181
179
|
initMappers() {
|
182
180
|
}
|
183
181
|
}
|
184
|
-
_a = entityKind;
|
185
182
|
XataDriver[_a] = "XataDriver";
|
186
183
|
function drizzle(client, config = {}) {
|
187
184
|
const dialect = new PgDialect();
|
package/dist/pg.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pg.mjs","sources":["../src/shared/utils.ts","../src/pg/session.ts","../src/pg/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import {\n Assume,\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders,\n sql\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { Client, Pool, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataClient = Pool | PoolClient | Client;\n\nexport class XataPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataPreparedQuery';\n\n private rawQueryConfig: QueryConfig;\n private queryConfig: QueryArrayConfig;\n\n constructor(\n private client: XataClient,\n queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super({ sql: queryString, params });\n this.rawQueryConfig = {\n name,\n text: queryString\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: 'array'\n };\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n\n this.logger.logQuery(this.rawQueryConfig.text, params);\n\n const {\n fields,\n client,\n rawQueryConfig: rawQuery,\n queryConfig: query,\n // @ts-expect-error joinsNotNullableMap is internal\n joinsNotNullableMap,\n customResultMapper\n } = this;\n if (!fields && !customResultMapper) {\n return await client.query(rawQuery, params);\n }\n\n const result = await client.query(query, params);\n\n return customResultMapper\n ? customResultMapper(result.rows)\n : result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.queryConfig, params).then((result) => result.rows);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataSessionOptions {\n logger?: Logger;\n}\n\nexport class XataSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResult> {\n this.logger.logQuery(query, params);\n return await this.client.query({ rowMode: 'array', text: query, values: params });\n }\n\n async queryObjects<T extends QueryResultRow>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n return await this.client.query<T>(query, params);\n }\n\n override async transaction<T>(\n transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n config: PgTransactionConfig = {}\n ): Promise<T> {\n const session =\n this.client instanceof Pool\n ? new XataSession(await this.client.connect(), this.dialect, this.schema, this.options)\n : this;\n const tx = new XataTransaction(this.dialect, session, this.schema);\n // @ts-expect-error getTransactionConfigSQL is internal\n await tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool) {\n (session.client as PoolClient).release();\n }\n }\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataTransaction';\n\n override async transaction<T>(transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n const savepointName = `sp${this.nestedIndex + 1}`;\n // @ts-expect-error session and dialect are internal\n const tx = new XataTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (e) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw e;\n }\n }\n}\n\nexport interface XataQueryResultHKT extends QueryResultHKT {\n type: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport type { XataClient, XataQueryResultHKT } from './session.js';\nimport { XataSession } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataSession(this.client, this.dialect, schema, { logger: this.options.logger });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataQueryResultHKT,\n TSchema\n>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataClient,\n config: DrizzleConfig<TSchema> = {}\n): XataDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n return new PgDatabase(dialect, session, schema) as XataDatabase<TSchema>;\n}\n"],"names":["result","_a"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"pg.mjs","sources":["../src/shared/utils.ts","../src/pg/session.ts","../src/pg/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import {\n Assume,\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders,\n sql\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { Client, Pool, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataClient = Pool | PoolClient | Client;\n\nexport class XataPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataPreparedQuery';\n\n private rawQueryConfig: QueryConfig;\n private queryConfig: QueryArrayConfig;\n\n constructor(\n private client: XataClient,\n queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super({ sql: queryString, params });\n this.rawQueryConfig = {\n name,\n text: queryString\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: 'array'\n };\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n\n this.logger.logQuery(this.rawQueryConfig.text, params);\n\n const {\n fields,\n client,\n rawQueryConfig: rawQuery,\n queryConfig: query,\n // @ts-expect-error joinsNotNullableMap is internal\n joinsNotNullableMap,\n customResultMapper\n } = this;\n if (!fields && !customResultMapper) {\n return await client.query(rawQuery, params);\n }\n\n const result = await client.query(query, params);\n\n return customResultMapper\n ? customResultMapper(result.rows)\n : result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.client.query(this.queryConfig, params).then((result) => result.rows);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataSessionOptions {\n logger?: Logger;\n}\n\nexport class XataSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResult> {\n this.logger.logQuery(query, params);\n return await this.client.query({ rowMode: 'array', text: query, values: params });\n }\n\n async queryObjects<T extends QueryResultRow>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n return await this.client.query<T>(query, params);\n }\n\n override async transaction<T>(\n transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n config: PgTransactionConfig = {}\n ): Promise<T> {\n const session =\n this.client instanceof Pool\n ? new XataSession(await this.client.connect(), this.dialect, this.schema, this.options)\n : this;\n const tx = new XataTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n // @ts-expect-error getTransactionConfigSQL is internal\n await tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool) {\n (session.client as PoolClient).release();\n }\n }\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataTransaction';\n\n override async transaction<T>(transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n const savepointName = `sp${this.nestedIndex + 1}`;\n // @ts-expect-error session and dialect are internal\n const tx = new XataTransaction<TFullSchema, TSchema>(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (e) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw e;\n }\n }\n}\n\nexport interface XataQueryResultHKT extends QueryResultHKT {\n type: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport type { XataClient, XataQueryResultHKT } from './session.js';\nimport { XataSession } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataSession(this.client, this.dialect, schema, { logger: this.options.logger });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataQueryResultHKT,\n TSchema\n>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataClient,\n config: DrizzleConfig<TSchema> = {}\n): XataDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n return new PgDatabase(dialect, session, schema) as XataDatabase<TSchema>;\n}\n"],"names":["result","_a"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@xata.io/drizzle",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.23",
|
4
4
|
"description": "",
|
5
5
|
"main": "./dist/index.cjs",
|
6
6
|
"module": "./dist/index.mjs",
|
@@ -23,12 +23,12 @@
|
|
23
23
|
"url": "https://github.com/xataio/client-ts/issues"
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@xata.io/client": "0.
|
26
|
+
"@xata.io/client": "0.30.0"
|
27
27
|
},
|
28
28
|
"devDependencies": {
|
29
|
-
"@types/pg": "^8.11.
|
30
|
-
"drizzle-orm": "^0.
|
31
|
-
"pg": "^8.
|
29
|
+
"@types/pg": "^8.11.6",
|
30
|
+
"drizzle-orm": "^0.31.2",
|
31
|
+
"pg": "^8.12.0"
|
32
32
|
},
|
33
33
|
"peerDependencies": {
|
34
34
|
"drizzle-orm": "*"
|
package/test/drizzle.test.ts
CHANGED
@@ -78,10 +78,9 @@ function getDrizzleClient(type: string, branch: string) {
|
|
78
78
|
|
79
79
|
describe.concurrent.each([{ type: 'pg' }, { type: 'http' }])('Drizzle $type', ({ type }) => {
|
80
80
|
beforeAll(async () => {
|
81
|
-
await api.
|
82
|
-
workspace,
|
83
|
-
|
84
|
-
data: { region, branchName: 'main' },
|
81
|
+
await api.databases.createDatabase({
|
82
|
+
pathParams: { workspaceId: workspace, dbName: database },
|
83
|
+
body: { region, branchName: 'main' },
|
85
84
|
headers: { 'X-Features': 'feat-pgroll-migrations=1' }
|
86
85
|
});
|
87
86
|
|
@@ -155,12 +154,15 @@ describe.concurrent.each([{ type: 'pg' }, { type: 'http' }])('Drizzle $type', ({
|
|
155
154
|
});
|
156
155
|
|
157
156
|
afterAll(async () => {
|
158
|
-
await api.
|
157
|
+
await api.databases.deleteDatabase({ pathParams: { workspaceId: workspace, dbName: database } });
|
159
158
|
});
|
160
159
|
|
161
160
|
beforeEach(async (ctx) => {
|
162
161
|
ctx.branch = `test-${Math.random().toString(36).substring(7)}`;
|
163
|
-
await api.
|
162
|
+
await api.branch.createBranch({
|
163
|
+
pathParams: { workspace, region, dbBranchName: `${database}:${ctx.branch}` },
|
164
|
+
body: { from: 'main' }
|
165
|
+
});
|
164
166
|
|
165
167
|
const { db, client } = getDrizzleClient(type, ctx.branch);
|
166
168
|
await client?.connect();
|
@@ -171,7 +173,7 @@ describe.concurrent.each([{ type: 'pg' }, { type: 'http' }])('Drizzle $type', ({
|
|
171
173
|
|
172
174
|
afterEach(async (ctx) => {
|
173
175
|
await ctx.client?.end();
|
174
|
-
await api.
|
176
|
+
await api.branch.deleteBranch({ pathParams: { workspace, region, dbBranchName: `${database}:${ctx.branch}` } });
|
175
177
|
});
|
176
178
|
|
177
179
|
/*
|
@@ -6285,7 +6287,7 @@ describe.concurrent.each([{ type: 'pg' }, { type: 'http' }])('Drizzle $type', ({
|
|
6285
6287
|
async function waitForReplication(): Promise<void> {
|
6286
6288
|
try {
|
6287
6289
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
6288
|
-
await api.
|
6290
|
+
await api.branch.getBranchList({ pathParams: { workspace, dbName: database, region } });
|
6289
6291
|
} catch (error) {
|
6290
6292
|
console.log(`Replication not ready yet, retrying...`);
|
6291
6293
|
return await waitForReplication();
|