@xata.io/drizzle 0.0.0-alpha.vcf8f11cade1aeb5e318fc16f42ddc96e46b17b8e → 0.0.0-alpha.vcfebdb3456448b48e0e754c70082ac82ec57911e
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 +14 -3
- package/CHANGELOG.md +51 -3
- package/dist/index.cjs +54 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +22 -13
- package/dist/index.mjs +56 -43
- package/dist/index.mjs.map +1 -1
- package/dist/pg.cjs +212 -0
- package/dist/pg.cjs.map +1 -0
- package/dist/pg.d.ts +61 -0
- package/dist/pg.mjs +206 -0
- package/dist/pg.mjs.map +1 -0
- package/package.json +11 -6
- package/test/{pg.test.ts → drizzle.test.ts} +269 -262
package/.turbo/turbo-build.log
CHANGED
@@ -1,5 +1,5 @@
|
|
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
|
@@ -8,7 +8,18 @@
|
|
8
8
|
[90mhttps://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency[39m
|
9
9
|
[1mdrizzle-orm[22m (imported by "src/http/driver.ts", "src/http/session.ts" and "src/shared/utils.ts")
|
10
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 [
|
11
|
+
[32mcreated [1mdist/index.cjs, dist/index.mjs[22m in [1m341ms[22m[39m
|
12
12
|
[36m
|
13
13
|
[1msrc/index.ts[22m → [1mdist/index.d.ts[22m...[39m
|
14
|
-
[32mcreated [1mdist/index.d.ts[22m in [1m6.
|
14
|
+
[32mcreated [1mdist/index.d.ts[22m in [1m6.9s[22m[39m
|
15
|
+
[36m
|
16
|
+
[1msrc/pg/index.ts[22m → [1mdist/pg.cjs, dist/pg.mjs[22m...[39m
|
17
|
+
[1m[33m(!) Unresolved dependencies[39m[22m
|
18
|
+
[90mhttps://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency[39m
|
19
|
+
[1mdrizzle-orm[22m (imported by "src/pg/driver.ts", "src/pg/session.ts" and "src/shared/utils.ts")
|
20
|
+
[1mdrizzle-orm/pg-core[22m (imported by "src/pg/driver.ts" and "src/pg/session.ts")
|
21
|
+
[1mpg[22m (imported by "src/pg/session.ts")
|
22
|
+
[32mcreated [1mdist/pg.cjs, dist/pg.mjs[22m in [1m34ms[22m[39m
|
23
|
+
[36m
|
24
|
+
[1msrc/pg/index.ts[22m → [1mdist/pg.d.ts[22m...[39m
|
25
|
+
[32mcreated [1mdist/pg.d.ts[22m in [1m1.4s[22m[39m
|
package/CHANGELOG.md
CHANGED
@@ -1,13 +1,61 @@
|
|
1
1
|
# @xata.io/drizzle
|
2
2
|
|
3
|
-
## 0.0.0-alpha.
|
3
|
+
## 0.0.0-alpha.vcfebdb3456448b48e0e754c70082ac82ec57911e
|
4
4
|
|
5
5
|
### Patch Changes
|
6
6
|
|
7
7
|
- Force canary build
|
8
8
|
|
9
|
-
- Updated dependencies [
|
10
|
-
- @xata.io/client@0.0.0-alpha.
|
9
|
+
- Updated dependencies []:
|
10
|
+
- @xata.io/client@0.0.0-alpha.vcfebdb3456448b48e0e754c70082ac82ec57911e
|
11
|
+
|
12
|
+
## 0.0.23
|
13
|
+
|
14
|
+
### Patch Changes
|
15
|
+
|
16
|
+
- Updated dependencies [[`cc673c9`](https://github.com/xataio/client-ts/commit/cc673c9a7885351082020e360630eab5db78c652)]:
|
17
|
+
- @xata.io/client@0.30.0
|
18
|
+
|
19
|
+
## 0.0.22
|
20
|
+
|
21
|
+
### Patch Changes
|
22
|
+
|
23
|
+
- Updated dependencies [[`6b754d2`](https://github.com/xataio/client-ts/commit/6b754d2f6a1f7b9378a96fe27502ff6c29ff5ed8)]:
|
24
|
+
- @xata.io/client@0.29.5
|
25
|
+
|
26
|
+
## 0.0.21
|
27
|
+
|
28
|
+
### Patch Changes
|
29
|
+
|
30
|
+
- Updated dependencies [[`2140a24`](https://github.com/xataio/client-ts/commit/2140a24f32a94f36bab8c8268033c7dcf235dddc), [`d8032f2`](https://github.com/xataio/client-ts/commit/d8032f2e07bdcc653db1606796d27f08d397cdbe)]:
|
31
|
+
- @xata.io/client@0.29.4
|
32
|
+
|
33
|
+
## 0.0.20
|
34
|
+
|
35
|
+
### Patch Changes
|
36
|
+
|
37
|
+
- [#1341](https://github.com/xataio/client-ts/pull/1341) [`9f12319`](https://github.com/xataio/client-ts/commit/9f12319d5464e997f72272aa400d7fba1f29a797) Thanks [@SferaDev](https://github.com/SferaDev)! - Update drizzle driver
|
38
|
+
|
39
|
+
## 0.0.19
|
40
|
+
|
41
|
+
### Patch Changes
|
42
|
+
|
43
|
+
- Updated dependencies [[`02053fb`](https://github.com/xataio/client-ts/commit/02053fbb10479b8e9453691f957d3235762555aa), [`e27cb74`](https://github.com/xataio/client-ts/commit/e27cb74143aa9b6c654713878e5d3776858e5290)]:
|
44
|
+
- @xata.io/client@0.29.3
|
45
|
+
|
46
|
+
## 0.0.18
|
47
|
+
|
48
|
+
### Patch Changes
|
49
|
+
|
50
|
+
- Updated dependencies [[`e8db1cd`](https://github.com/xataio/client-ts/commit/e8db1cd394ccbed32403548bf9d09a5c3973d850)]:
|
51
|
+
- @xata.io/client@0.29.2
|
52
|
+
|
53
|
+
## 0.0.17
|
54
|
+
|
55
|
+
### Patch Changes
|
56
|
+
|
57
|
+
- Updated dependencies [[`d0f5d12`](https://github.com/xataio/client-ts/commit/d0f5d125e6c2f4c82f8a0a6b4a30d255c58e8326), [`212b53d`](https://github.com/xataio/client-ts/commit/212b53d07498def0d2ed8942691eff982e448969), [`9fd8c42`](https://github.com/xataio/client-ts/commit/9fd8c428d71b476f1951123c6cba5e803b983e54), [`368d4aa`](https://github.com/xataio/client-ts/commit/368d4aa16cd1cc1da93a142406c5d41bbc15b082)]:
|
58
|
+
- @xata.io/client@0.29.1
|
11
59
|
|
12
60
|
## 0.0.16
|
13
61
|
|
package/dist/index.cjs
CHANGED
@@ -46,46 +46,46 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
46
46
|
return result;
|
47
47
|
}
|
48
48
|
|
49
|
-
var _a$1, _b, _c;
|
50
|
-
class XataHttpPreparedQuery extends pgCore.
|
51
|
-
constructor(client,
|
52
|
-
super();
|
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
|
+
constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
|
52
|
+
super(query);
|
53
53
|
this.client = client;
|
54
|
-
this.queryString = queryString;
|
55
|
-
this.params = params;
|
56
54
|
this.logger = logger;
|
57
55
|
this.fields = fields;
|
58
|
-
this.
|
56
|
+
this._isResponseInArrayMode = _isResponseInArrayMode;
|
59
57
|
this.customResultMapper = customResultMapper;
|
60
58
|
}
|
61
59
|
async execute(placeholderValues = {}) {
|
62
|
-
const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
|
63
|
-
this.logger.logQuery(this.
|
64
|
-
const { fields, client,
|
60
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
61
|
+
this.logger.logQuery(this.query.sql, params);
|
62
|
+
const { fields, client, query, customResultMapper } = this;
|
65
63
|
if (!fields && !customResultMapper) {
|
66
|
-
|
64
|
+
const result = await this.client.sql({ statement: query.sql, params });
|
65
|
+
return { rowCount: result.records.length, rows: result.records, rowAsArray: false };
|
67
66
|
}
|
68
|
-
const {
|
69
|
-
if (warning)
|
70
|
-
console.warn(warning);
|
71
|
-
const rows = records.map((record) => Object.values(record));
|
67
|
+
const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
|
68
|
+
if (warning) console.warn(warning);
|
72
69
|
const joinsNotNullableMap = this.joinsNotNullableMap;
|
73
70
|
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
74
71
|
}
|
75
72
|
all(placeholderValues = {}) {
|
76
|
-
const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
|
77
|
-
this.logger.logQuery(this.
|
78
|
-
return this.client.sql({ statement: this.
|
73
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
74
|
+
this.logger.logQuery(this.query.sql, params);
|
75
|
+
return this.client.sql({ statement: this.query.sql, params, responseType: "array" }).then((result) => result.rows);
|
79
76
|
}
|
80
77
|
values(placeholderValues = {}) {
|
81
|
-
const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
|
82
|
-
this.logger.logQuery(this.
|
83
|
-
return this.client.sql({ statement: this.
|
78
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
79
|
+
this.logger.logQuery(this.query.sql, params);
|
80
|
+
return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);
|
81
|
+
}
|
82
|
+
/** @internal */
|
83
|
+
isResponseInArrayMode() {
|
84
|
+
return this._isResponseInArrayMode;
|
84
85
|
}
|
85
86
|
}
|
86
|
-
_a$1 = drizzleOrm.entityKind;
|
87
87
|
XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
|
88
|
-
class XataHttpSession extends pgCore.PgSession {
|
88
|
+
class XataHttpSession extends (_d = pgCore.PgSession, _c$1 = drizzleOrm.entityKind, _d) {
|
89
89
|
constructor(client, dialect, schema, options = {}) {
|
90
90
|
super(dialect);
|
91
91
|
this.client = client;
|
@@ -93,40 +93,47 @@ class XataHttpSession extends pgCore.PgSession {
|
|
93
93
|
this.options = options;
|
94
94
|
this.logger = options.logger ?? new drizzleOrm.NoopLogger();
|
95
95
|
}
|
96
|
-
prepareQuery(query, fields, name, customResultMapper) {
|
96
|
+
prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
|
97
97
|
return new XataHttpPreparedQuery(
|
98
98
|
this.client,
|
99
|
-
query
|
100
|
-
query.params,
|
99
|
+
query,
|
101
100
|
this.logger,
|
102
101
|
fields,
|
103
|
-
|
102
|
+
isResponseInArrayMode,
|
104
103
|
customResultMapper
|
105
104
|
);
|
106
105
|
}
|
107
106
|
async query(query, params) {
|
108
107
|
this.logger.logQuery(query, params);
|
109
|
-
const result = await this.client.sql({ statement: query, params });
|
110
|
-
return
|
108
|
+
const result = await this.client.sql({ statement: query, params, responseType: "array" });
|
109
|
+
return {
|
110
|
+
rowCount: result.rows.length,
|
111
|
+
rows: result.rows,
|
112
|
+
rowAsArray: true
|
113
|
+
};
|
111
114
|
}
|
112
115
|
async queryObjects(query, params) {
|
113
|
-
|
116
|
+
const result = await this.client.sql({ statement: query, params });
|
117
|
+
return {
|
118
|
+
rowCount: result.records.length,
|
119
|
+
rows: result.records,
|
120
|
+
rowAsArray: false
|
121
|
+
};
|
114
122
|
}
|
115
123
|
async transaction(_transaction, _config = {}) {
|
116
|
-
throw new Error("No transactions support in
|
124
|
+
throw new Error("No transactions support in Xata Http driver");
|
117
125
|
}
|
118
126
|
}
|
119
|
-
|
120
|
-
|
121
|
-
class XataTransaction extends pgCore.PgTransaction {
|
127
|
+
XataHttpSession[_c$1] = "XataHttpSession";
|
128
|
+
class XataTransaction extends (_f = pgCore.PgTransaction, _e = drizzleOrm.entityKind, _f) {
|
122
129
|
async transaction(_transaction) {
|
123
|
-
throw new Error("No transactions support in
|
130
|
+
throw new Error("No transactions support in Xata Http driver");
|
124
131
|
}
|
125
132
|
}
|
126
|
-
|
127
|
-
XataTransaction[_c] = "XataHttpTransaction";
|
133
|
+
XataTransaction[_e] = "XataHttpTransaction";
|
128
134
|
|
129
|
-
var _a;
|
135
|
+
var _a, _b, _c;
|
136
|
+
_a = drizzleOrm.entityKind;
|
130
137
|
class XataHttpDriver {
|
131
138
|
constructor(client, dialect, options = {}) {
|
132
139
|
this.client = client;
|
@@ -142,8 +149,10 @@ class XataHttpDriver {
|
|
142
149
|
initMappers() {
|
143
150
|
}
|
144
151
|
}
|
145
|
-
_a = drizzleOrm.entityKind;
|
146
152
|
XataHttpDriver[_a] = "XataDriver";
|
153
|
+
class XataHttpDatabase extends (_c = pgCore.PgDatabase, _b = drizzleOrm.entityKind, _c) {
|
154
|
+
}
|
155
|
+
XataHttpDatabase[_b] = "XataHttpDatabase";
|
147
156
|
function drizzle(client, config = {}) {
|
148
157
|
const dialect = new pgCore.PgDialect();
|
149
158
|
let logger;
|
@@ -163,9 +172,14 @@ function drizzle(client, config = {}) {
|
|
163
172
|
}
|
164
173
|
const driver = new XataHttpDriver(client, dialect, { logger });
|
165
174
|
const session = driver.createSession(schema);
|
166
|
-
return new
|
175
|
+
return new XataHttpDatabase(
|
176
|
+
dialect,
|
177
|
+
session,
|
178
|
+
schema
|
179
|
+
);
|
167
180
|
}
|
168
181
|
|
182
|
+
exports.XataHttpDatabase = XataHttpDatabase;
|
169
183
|
exports.XataHttpDriver = XataHttpDriver;
|
170
184
|
exports.XataHttpPreparedQuery = XataHttpPreparedQuery;
|
171
185
|
exports.XataHttpSession = XataHttpSession;
|
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 PreparedQuery,\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 class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n private queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private name: string | undefined,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super();\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.queryString, params);\n\n const { fields, client, queryString, customResultMapper } = this;\n if (!fields && !customResultMapper) {\n return client.sql({ statement: queryString, params });\n }\n\n const { records, warning } = await client.sql<Record<string, unknown>>({ statement: queryString, params });\n if (warning) console.warn(warning);\n\n // TODO: FIXME: Order is not guaranteed and we fail to map the result to the correct fields\n const rows = records.map((record) => Object.values(record));\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.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);\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 customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params });\n return result;\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>> {\n return this.client.sql({ statement: query, params });\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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<unknown>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\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 type XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataHttpQueryResultHKT,\n 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 PgDatabase(dialect, session, schema) as XataHttpDatabase<TSchema>;\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","PreparedQuery","fillPlaceholders","entityKind","PgSession","NoopLogger","PgTransaction","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers","PgDatabase"],"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":";;;;;AAEgB,SAAA,YAAA,CACd,OACA,EAAA,GAAA,EACA,mBACS,EAAA;AAET,EAAA,MAAM,aAA6C,EAAC,CAAA;AAEpD,EAAM,MAAA,MAAA,GAAS,QAAQ,MAA4B,CAAA,CAACA,SAAQ,EAAE,IAAA,EAAM,KAAM,EAAA,EAAG,WAAgB,KAAA;AAC3F,IAAI,IAAA,OAAA,CAAA;AACJ,IAAI,IAAAC,aAAA,CAAG,KAAO,EAAAC,iBAAM,CAAG,EAAA;AACrB,MAAU,OAAA,GAAA,KAAA,CAAA;AAAA,KACD,MAAA,IAAAD,aAAA,CAAG,KAAO,EAAAE,cAAG,CAAG,EAAA;AACzB,MAAA,OAAA,GAAW,KAAc,CAAA,OAAA,CAAA;AAAA,KACpB,MAAA;AACL,MAAA,OAAA,GAAW,MAAM,GAAY,CAAA,OAAA,CAAA;AAAA,KAC/B;AACA,IAAA,IAAI,IAAOH,GAAAA,OAAAA,CAAAA;AACX,IAAA,KAAA,MAAW,CAAC,cAAgB,EAAA,SAAS,CAAK,IAAA,IAAA,CAAK,SAAW,EAAA;AACxD,MAAI,IAAA,cAAA,GAAiB,IAAK,CAAA,MAAA,GAAS,CAAG,EAAA;AACpC,QAAI,IAAA,EAAE,aAAa,IAAO,CAAA,EAAA;AACxB,UAAK,IAAA,CAAA,SAAS,IAAI,EAAC,CAAA;AAAA,SACrB;AACA,QAAA,IAAA,GAAO,KAAK,SAAS,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAM,MAAA,QAAA,GAAW,IAAI,WAAW,CAAA,CAAA;AAChC,QAAM,MAAA,KAAA,GAAS,KAAK,SAAS,CAAA,GAAI,aAAa,IAAO,GAAA,IAAA,GAAO,OAAQ,CAAA,kBAAA,CAAmB,QAAQ,CAAA,CAAA;AAE/F,QAAA,IAAI,uBAAuBC,aAAG,CAAA,KAAA,EAAOC,iBAAM,CAAK,IAAA,IAAA,CAAK,WAAW,CAAG,EAAA;AACjE,UAAM,MAAA,UAAA,GAAa,KAAK,CAAC,CAAA,CAAA;AACzB,UAAI,IAAA,EAAE,cAAc,UAAa,CAAA,EAAA;AAC/B,YAAA,UAAA,CAAW,UAAU,CAAI,GAAA,KAAA,KAAU,OAAOE,uBAAa,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,WAEtE,MAAA,IAAA,OAAO,UAAW,CAAA,UAAU,CAAM,KAAA,QAAA,IAClC,UAAW,CAAA,UAAU,CAAM,KAAAA,uBAAA,CAAa,KAAM,CAAA,KAAK,CACnD,EAAA;AACA,YAAA,UAAA,CAAW,UAAU,CAAI,GAAA,KAAA,CAAA;AAAA,WAC3B;AAAA,SACF;AAAA,OACF;AAAA,KACF;AACA,IAAOJ,OAAAA,OAAAA,CAAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAGL,EAAA,IAAI,uBAAuB,MAAO,CAAA,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,CAAG,EAAA;AAC7D,IAAA,KAAA,MAAW,CAAC,UAAY,EAAA,SAAS,KAAK,MAAO,CAAA,OAAA,CAAQ,UAAU,CAAG,EAAA;AAChE,MAAA,IAAI,OAAO,SAAc,KAAA,QAAA,IAAY,CAAC,mBAAA,CAAoB,SAAS,CAAG,EAAA;AACpE,QAAA,MAAA,CAAO,UAAU,CAAI,GAAA,IAAA,CAAA;AAAA,OACvB;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;ACxDA,IAAAK,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAiCa,MAAA,qBAAA,UAA6DD,IACvD,GAAAE,sBAAA,EAAAH,IAAA,GAAAI,qBAAA,EADuDH,IAAmB,EAAA;AAAA,EAG3F,YACU,MACR,EAAA,KAAA,EACQ,MACA,EAAA,MAAA,EACA,wBACA,kBACR,EAAA;AACA,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAPH,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,sBAAA,GAAA,sBAAA,CAAA;AACA,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA,CAAA;AAAA,GAGV;AAAA,EAEA,MAAM,OAAA,CAAQ,iBAAyD,GAAA,EAA2B,EAAA;AAChG,IAAA,MAAM,MAAS,GAAAI,2BAAA,CAAiB,IAAK,CAAA,KAAA,CAAM,QAAQ,iBAAiB,CAAA,CAAA;AAEpE,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,KAAK,MAAM,CAAA,CAAA;AAE3C,IAAA,MAAM,EAAE,MAAA,EAAQ,MAAQ,EAAA,KAAA,EAAO,oBAAuB,GAAA,IAAA,CAAA;AAEtD,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,kBAAoB,EAAA;AAClC,MAAM,MAAA,MAAA,GAAS,MAAM,IAAA,CAAK,MAAO,CAAA,GAAA,CAAyB,EAAE,SAAW,EAAA,KAAA,CAAM,GAAK,EAAA,MAAA,EAAQ,CAAA,CAAA;AAC1F,MAAO,OAAA,EAAE,UAAU,MAAO,CAAA,OAAA,CAAQ,QAAQ,IAAM,EAAA,MAAA,CAAO,OAAS,EAAA,UAAA,EAAY,KAAM,EAAA,CAAA;AAAA,KACpF;AAEA,IAAA,MAAM,EAAE,IAAA,EAAM,OAAQ,EAAA,GAAI,MAAM,MAAO,CAAA,GAAA,CAAI,EAAE,SAAA,EAAW,KAAM,CAAA,GAAA,EAAK,MAAQ,EAAA,YAAA,EAAc,SAAS,CAAA,CAAA;AAClG,IAAI,IAAA,OAAA,EAAiB,OAAA,CAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAGjC,IAAA,MAAM,sBAAsB,IAAK,CAAA,mBAAA,CAAA;AAEjC,IAAA,OAAO,kBACH,GAAA,kBAAA,CAAmB,IAAmB,CAAA,GACtC,IAAK,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,YAA2B,CAAA,MAAA,EAAS,GAAkB,EAAA,mBAAmB,CAAC,CAAA,CAAA;AAAA,GAClG;AAAA,EAEA,GAAA,CAAI,iBAAyD,GAAA,EAAuB,EAAA;AAClF,IAAA,MAAM,MAAS,GAAAA,2BAAA,CAAiB,IAAK,CAAA,KAAA,CAAM,QAAQ,iBAAiB,CAAA,CAAA;AACpE,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,KAAK,MAAM,CAAA,CAAA;AAC3C,IAAA,OAAO,KAAK,MAAO,CAAA,GAAA,CAAI,EAAE,SAAA,EAAW,KAAK,KAAM,CAAA,GAAA,EAAK,MAAQ,EAAA,YAAA,EAAc,SAAS,CAAA,CAAE,KAAK,CAAC,MAAA,KAAW,OAAO,IAAI,CAAA,CAAA;AAAA,GACnH;AAAA,EAEA,MAAA,CAAO,iBAAyD,GAAA,EAA0B,EAAA;AACxF,IAAA,MAAM,MAAS,GAAAA,2BAAA,CAAiB,IAAK,CAAA,KAAA,CAAM,QAAQ,iBAAiB,CAAA,CAAA;AACpE,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,KAAK,MAAM,CAAA,CAAA;AAC3C,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,GAAI,CAAA,EAAE,WAAW,IAAK,CAAA,KAAA,CAAM,GAAK,EAAA,MAAA,EAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,MAAA,KAAW,OAAO,OAAO,CAAA,CAAA;AAAA,GAC/F;AAAA;AAAA,EAGA,qBAAwB,GAAA;AACtB,IAAA,OAAO,IAAK,CAAA,sBAAA,CAAA;AAAA,GACd;AACF,CAAA;AArDa,qBAAA,CACML,IAAsB,CAAA,GAAA,uBAAA,CAAA;AA0D5B,MAAA,eAAA,UAGH,EACS,GAAAM,gBAAA,EAAAJ,IAAA,GAAAE,qBAAA,EADT,EAAwD,EAAA;AAAA,EAKhE,YACU,MACR,EAAA,OAAA,EACQ,MACA,EAAA,OAAA,GAAkC,EAC1C,EAAA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AALL,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAGR,IAAA,IAAA,CAAK,MAAS,GAAA,OAAA,CAAQ,MAAU,IAAA,IAAIG,qBAAW,EAAA,CAAA;AAAA,GACjD;AAAA,EAEA,YACE,CAAA,KAAA,EACA,MACA,EAAA,IAAA,EACA,uBACA,kBACoB,EAAA;AACpB,IAAA,OAAO,IAAI,qBAAA;AAAA,MACT,IAAK,CAAA,MAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAK,CAAA,MAAA;AAAA,MACL,MAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,MAAM,KAAM,CAAA,KAAA,EAAe,MAAmD,EAAA;AAC5E,IAAK,IAAA,CAAA,MAAA,CAAO,QAAS,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAClC,IAAM,MAAA,MAAA,GAAS,MAAM,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,EAAE,SAAA,EAAW,KAAO,EAAA,MAAA,EAAQ,YAAc,EAAA,OAAA,EAAS,CAAA,CAAA;AAExF,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,OAAO,IAAK,CAAA,MAAA;AAAA,MACtB,MAAM,MAAO,CAAA,IAAA;AAAA,MACb,UAAY,EAAA,IAAA;AAAA,KACd,CAAA;AAAA,GACF;AAAA,EAEA,MAAM,YAAa,CAAA,KAAA,EAAe,MAAkD,EAAA;AAClF,IAAM,MAAA,MAAA,GAAS,MAAM,IAAK,CAAA,MAAA,CAAO,IAAyB,EAAE,SAAA,EAAW,KAAO,EAAA,MAAA,EAAQ,CAAA,CAAA;AAEtF,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,OAAO,OAAQ,CAAA,MAAA;AAAA,MACzB,MAAM,MAAO,CAAA,OAAA;AAAA,MACb,UAAY,EAAA,KAAA;AAAA,KACd,CAAA;AAAA,GACF;AAAA,EAEA,MAAe,WAAA,CACb,YACA,EAAA,OAAA,GAA+B,EACnB,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA,CAAA;AAAA,GAC/D;AACF,CAAA;AA9Da,eAAA,CAIML,IAAsB,CAAA,GAAA,iBAAA,CAAA;AA4D5B,MAAA,eAAA,UAGH,EACS,GAAAM,oBAAA,EAAA,EAAA,GAAAJ,qBAAA,EADT,EAA4D,EAAA;AAAA,EAGpE,MAAe,YAAe,YAAqF,EAAA;AACjH,IAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA,CAAA;AAAA,GAC/D;AACF,CAAA;AATa,eAAA,CAIM,EAAsB,CAAA,GAAA,qBAAA;;AChKzC,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAmBmB,EAAA,GAAAA,qBAAA,CAAA;AADZ,MAAM,cAAe,CAAA;AAAA,EAG1B,WAAoB,CAAA,MAAA,EAAgC,OAA4B,EAAA,OAAA,GAA6B,EAAI,EAAA;AAA7F,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAAgC,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAA4B,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAC9E,IAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AAAA,GACnB;AAAA,EAEA,cACE,MACkE,EAAA;AAClE,IAAA,OAAO,IAAI,eAAgB,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,CAAK,SAAS,MAAQ,EAAA;AAAA,MAC5D,MAAA,EAAQ,KAAK,OAAQ,CAAA,MAAA;AAAA,KACtB,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,WAAc,GAAA;AAAA,GAEd;AACF,CAAA;AAlBa,cAAA,CACM,EAAsB,CAAA,GAAA,YAAA,CAAA;AAmB5B,MAAA,gBAAA,UAA0F,EAIpF,GAAAK,iBAAA,EAAA,EAAA,GAAAL,qBAAA,EAJoF,EAGrG,EAAA;AAKF,CAAA;AARa,gBAAA,CAIM,EAAsB,CAAA,GAAA,kBAAA,CAAA;AAMlC,SAAS,OACd,CAAA,MAAA,EACA,MAAiC,GAAA,EACN,EAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,IAAIM,gBAAU,EAAA,CAAA;AAC9B,EAAI,IAAA,MAAA,CAAA;AACJ,EAAI,IAAA,MAAA,CAAO,WAAW,IAAM,EAAA;AAC1B,IAAA,MAAA,GAAS,IAAIC,wBAAc,EAAA,CAAA;AAAA,GAC7B,MAAA,IAAW,MAAO,CAAA,MAAA,KAAW,KAAO,EAAA;AAClC,IAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,GAClB;AAEA,EAAI,IAAA,MAAA,CAAA;AACJ,EAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,IAAA,MAAM,YAAe,GAAAC,wCAAA,CAA8B,MAAO,CAAA,MAAA,EAAQC,sCAA2B,CAAA,CAAA;AAC7F,IAAS,MAAA,GAAA;AAAA,MACP,YAAY,MAAO,CAAA,MAAA;AAAA,MACnB,QAAQ,YAAa,CAAA,MAAA;AAAA,MACrB,eAAe,YAAa,CAAA,aAAA;AAAA,KAC9B,CAAA;AAAA,GACF;AAEA,EAAA,MAAM,SAAS,IAAI,cAAA,CAAe,QAAQ,OAAS,EAAA,EAAE,QAAQ,CAAA,CAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;AAE3C,EAAA,OAAO,IAAI,gBAAA;AAAA,IACT,OAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AACF;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
@@ -1,23 +1,28 @@
|
|
1
|
-
import { entityKind, Logger, SelectedFieldsOrdered, TablesRelationalConfig, RelationalSchemaConfig,
|
1
|
+
import { entityKind, Query, Logger, SelectedFieldsOrdered, TablesRelationalConfig, RelationalSchemaConfig, ExtractTablesWithRelations, DrizzleConfig } from 'drizzle-orm';
|
2
2
|
import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';
|
3
|
-
import { PreparedQueryConfig,
|
3
|
+
import { PreparedQueryConfig, PgPreparedQuery, PgColumn, PgSession, PgDialect, PgTransactionConfig, PgTransaction, QueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
|
4
4
|
|
5
5
|
type XataHttpClient = {
|
6
6
|
sql: SQLPluginResult;
|
7
7
|
};
|
8
|
-
|
8
|
+
interface QueryResults<ArrayMode extends 'json' | 'array'> {
|
9
|
+
rowCount: number;
|
10
|
+
rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];
|
11
|
+
rowAsArray: ArrayMode extends 'array' ? true : false;
|
12
|
+
}
|
13
|
+
declare class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {
|
9
14
|
private client;
|
10
|
-
private queryString;
|
11
|
-
private params;
|
12
15
|
private logger;
|
13
16
|
private fields;
|
14
|
-
private
|
17
|
+
private _isResponseInArrayMode;
|
15
18
|
private customResultMapper?;
|
16
19
|
static readonly [entityKind]: string;
|
17
|
-
constructor(client: XataHttpClient,
|
20
|
+
constructor(client: XataHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
|
18
21
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
19
22
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
20
23
|
values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
|
24
|
+
/** @internal */
|
25
|
+
isResponseInArrayMode(): boolean;
|
21
26
|
}
|
22
27
|
interface XataHttpSessionOptions {
|
23
28
|
logger?: Logger;
|
@@ -29,9 +34,9 @@ declare class XataHttpSession<TFullSchema extends Record<string, unknown>, TSche
|
|
29
34
|
static readonly [entityKind]: string;
|
30
35
|
private logger;
|
31
36
|
constructor(client: XataHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: XataHttpSessionOptions);
|
32
|
-
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']):
|
33
|
-
query(query: string, params: unknown[]): Promise<
|
34
|
-
queryObjects(query: string, params: unknown[]): Promise<
|
37
|
+
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
|
38
|
+
query(query: string, params: unknown[]): Promise<QueryResults<'array'>>;
|
39
|
+
queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>>;
|
35
40
|
transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>, _config?: PgTransactionConfig): Promise<T>;
|
36
41
|
}
|
37
42
|
declare class XataTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {
|
@@ -39,7 +44,7 @@ declare class XataTransaction<TFullSchema extends Record<string, unknown>, TSche
|
|
39
44
|
transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
40
45
|
}
|
41
46
|
interface XataHttpQueryResultHKT extends QueryResultHKT {
|
42
|
-
type: SQLQueryResult<
|
47
|
+
type: SQLQueryResult<this['row']>;
|
43
48
|
}
|
44
49
|
|
45
50
|
interface XataDriverOptions {
|
@@ -54,7 +59,11 @@ declare class XataHttpDriver {
|
|
54
59
|
createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): XataHttpSession<Record<string, unknown>, TablesRelationalConfig>;
|
55
60
|
initMappers(): void;
|
56
61
|
}
|
57
|
-
|
62
|
+
declare class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<XataHttpQueryResultHKT, TSchema> {
|
63
|
+
static readonly [entityKind]: string;
|
64
|
+
/** @internal */
|
65
|
+
readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;
|
66
|
+
}
|
58
67
|
declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: XataHttpClient, config?: DrizzleConfig<TSchema>): XataHttpDatabase<TSchema>;
|
59
68
|
|
60
|
-
export { type XataDriverOptions, type XataHttpClient,
|
69
|
+
export { type QueryResults, type XataDriverOptions, type XataHttpClient, XataHttpDatabase, XataHttpDriver, XataHttpPreparedQuery, type XataHttpQueryResultHKT, XataHttpSession, type XataHttpSessionOptions, XataTransaction, drizzle };
|
package/dist/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { is, Column, SQL, getTableName,
|
2
|
-
import {
|
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,46 +44,46 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
44
44
|
return result;
|
45
45
|
}
|
46
46
|
|
47
|
-
var _a$1, _b, _c;
|
48
|
-
class XataHttpPreparedQuery extends
|
49
|
-
constructor(client,
|
50
|
-
super();
|
47
|
+
var _a$1, _b$1, _c$1, _d, _e, _f;
|
48
|
+
class XataHttpPreparedQuery extends (_b$1 = PgPreparedQuery, _a$1 = entityKind, _b$1) {
|
49
|
+
constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
|
50
|
+
super(query);
|
51
51
|
this.client = client;
|
52
|
-
this.queryString = queryString;
|
53
|
-
this.params = params;
|
54
52
|
this.logger = logger;
|
55
53
|
this.fields = fields;
|
56
|
-
this.
|
54
|
+
this._isResponseInArrayMode = _isResponseInArrayMode;
|
57
55
|
this.customResultMapper = customResultMapper;
|
58
56
|
}
|
59
57
|
async execute(placeholderValues = {}) {
|
60
|
-
const params = fillPlaceholders(this.params, placeholderValues);
|
61
|
-
this.logger.logQuery(this.
|
62
|
-
const { fields, client,
|
58
|
+
const params = fillPlaceholders(this.query.params, placeholderValues);
|
59
|
+
this.logger.logQuery(this.query.sql, params);
|
60
|
+
const { fields, client, query, customResultMapper } = this;
|
63
61
|
if (!fields && !customResultMapper) {
|
64
|
-
|
62
|
+
const result = await this.client.sql({ statement: query.sql, params });
|
63
|
+
return { rowCount: result.records.length, rows: result.records, rowAsArray: false };
|
65
64
|
}
|
66
|
-
const {
|
67
|
-
if (warning)
|
68
|
-
console.warn(warning);
|
69
|
-
const rows = records.map((record) => Object.values(record));
|
65
|
+
const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
|
66
|
+
if (warning) console.warn(warning);
|
70
67
|
const joinsNotNullableMap = this.joinsNotNullableMap;
|
71
68
|
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
72
69
|
}
|
73
70
|
all(placeholderValues = {}) {
|
74
|
-
const params = fillPlaceholders(this.params, placeholderValues);
|
75
|
-
this.logger.logQuery(this.
|
76
|
-
return this.client.sql({ statement: this.
|
71
|
+
const params = fillPlaceholders(this.query.params, placeholderValues);
|
72
|
+
this.logger.logQuery(this.query.sql, params);
|
73
|
+
return this.client.sql({ statement: this.query.sql, params, responseType: "array" }).then((result) => result.rows);
|
77
74
|
}
|
78
75
|
values(placeholderValues = {}) {
|
79
|
-
const params = fillPlaceholders(this.params, placeholderValues);
|
80
|
-
this.logger.logQuery(this.
|
81
|
-
return this.client.sql({ statement: this.
|
76
|
+
const params = fillPlaceholders(this.query.params, placeholderValues);
|
77
|
+
this.logger.logQuery(this.query.sql, params);
|
78
|
+
return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);
|
79
|
+
}
|
80
|
+
/** @internal */
|
81
|
+
isResponseInArrayMode() {
|
82
|
+
return this._isResponseInArrayMode;
|
82
83
|
}
|
83
84
|
}
|
84
|
-
_a$1 = entityKind;
|
85
85
|
XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
|
86
|
-
class XataHttpSession extends PgSession {
|
86
|
+
class XataHttpSession extends (_d = PgSession, _c$1 = entityKind, _d) {
|
87
87
|
constructor(client, dialect, schema, options = {}) {
|
88
88
|
super(dialect);
|
89
89
|
this.client = client;
|
@@ -91,40 +91,47 @@ class XataHttpSession extends PgSession {
|
|
91
91
|
this.options = options;
|
92
92
|
this.logger = options.logger ?? new NoopLogger();
|
93
93
|
}
|
94
|
-
prepareQuery(query, fields, name, customResultMapper) {
|
94
|
+
prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
|
95
95
|
return new XataHttpPreparedQuery(
|
96
96
|
this.client,
|
97
|
-
query
|
98
|
-
query.params,
|
97
|
+
query,
|
99
98
|
this.logger,
|
100
99
|
fields,
|
101
|
-
|
100
|
+
isResponseInArrayMode,
|
102
101
|
customResultMapper
|
103
102
|
);
|
104
103
|
}
|
105
104
|
async query(query, params) {
|
106
105
|
this.logger.logQuery(query, params);
|
107
|
-
const result = await this.client.sql({ statement: query, params });
|
108
|
-
return
|
106
|
+
const result = await this.client.sql({ statement: query, params, responseType: "array" });
|
107
|
+
return {
|
108
|
+
rowCount: result.rows.length,
|
109
|
+
rows: result.rows,
|
110
|
+
rowAsArray: true
|
111
|
+
};
|
109
112
|
}
|
110
113
|
async queryObjects(query, params) {
|
111
|
-
|
114
|
+
const result = await this.client.sql({ statement: query, params });
|
115
|
+
return {
|
116
|
+
rowCount: result.records.length,
|
117
|
+
rows: result.records,
|
118
|
+
rowAsArray: false
|
119
|
+
};
|
112
120
|
}
|
113
121
|
async transaction(_transaction, _config = {}) {
|
114
|
-
throw new Error("No transactions support in
|
122
|
+
throw new Error("No transactions support in Xata Http driver");
|
115
123
|
}
|
116
124
|
}
|
117
|
-
|
118
|
-
|
119
|
-
class XataTransaction extends PgTransaction {
|
125
|
+
XataHttpSession[_c$1] = "XataHttpSession";
|
126
|
+
class XataTransaction extends (_f = PgTransaction, _e = entityKind, _f) {
|
120
127
|
async transaction(_transaction) {
|
121
|
-
throw new Error("No transactions support in
|
128
|
+
throw new Error("No transactions support in Xata Http driver");
|
122
129
|
}
|
123
130
|
}
|
124
|
-
|
125
|
-
XataTransaction[_c] = "XataHttpTransaction";
|
131
|
+
XataTransaction[_e] = "XataHttpTransaction";
|
126
132
|
|
127
|
-
var _a;
|
133
|
+
var _a, _b, _c;
|
134
|
+
_a = entityKind;
|
128
135
|
class XataHttpDriver {
|
129
136
|
constructor(client, dialect, options = {}) {
|
130
137
|
this.client = client;
|
@@ -140,8 +147,10 @@ class XataHttpDriver {
|
|
140
147
|
initMappers() {
|
141
148
|
}
|
142
149
|
}
|
143
|
-
_a = entityKind;
|
144
150
|
XataHttpDriver[_a] = "XataDriver";
|
151
|
+
class XataHttpDatabase extends (_c = PgDatabase, _b = entityKind, _c) {
|
152
|
+
}
|
153
|
+
XataHttpDatabase[_b] = "XataHttpDatabase";
|
145
154
|
function drizzle(client, config = {}) {
|
146
155
|
const dialect = new PgDialect();
|
147
156
|
let logger;
|
@@ -161,8 +170,12 @@ function drizzle(client, config = {}) {
|
|
161
170
|
}
|
162
171
|
const driver = new XataHttpDriver(client, dialect, { logger });
|
163
172
|
const session = driver.createSession(schema);
|
164
|
-
return new
|
173
|
+
return new XataHttpDatabase(
|
174
|
+
dialect,
|
175
|
+
session,
|
176
|
+
schema
|
177
|
+
);
|
165
178
|
}
|
166
179
|
|
167
|
-
export { XataHttpDriver, XataHttpPreparedQuery, XataHttpSession, XataTransaction, drizzle };
|
180
|
+
export { XataHttpDatabase, XataHttpDriver, XataHttpPreparedQuery, XataHttpSession, XataTransaction, drizzle };
|
168
181
|
//# sourceMappingURL=index.mjs.map
|