@xata.io/drizzle 0.0.0-alpha.vf3ab3ad → 0.0.0-alpha.vf455e66cda21d00ed37168f3b02730a799f48650
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 +16 -5
- package/CHANGELOG.md +70 -2
- package/dist/index.cjs +98 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +47 -65
- package/dist/index.mjs +95 -114
- package/dist/index.mjs.map +1 -1
- package/dist/pg.cjs +215 -0
- package/dist/pg.cjs.map +1 -0
- package/dist/pg.d.ts +61 -0
- package/dist/pg.mjs +209 -0
- package/dist/pg.mjs.map +1 -0
- package/package.json +11 -4
- package/test/drizzle.test.ts +6293 -0
- package/test/schema.ts +85 -0
package/.turbo/turbo-build.log
CHANGED
@@ -1,14 +1,25 @@
|
|
1
1
|
|
2
|
-
> @xata.io/drizzle@0.0.
|
2
|
+
> @xata.io/drizzle@0.0.20 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/driver.ts", "src/session.ts" and "src/utils.ts")
|
10
|
-
[1mdrizzle-orm/pg-core[22m (imported by "src/driver.ts"
|
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 [1m476ms[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.6s[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 [1m33ms[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,11 +1,79 @@
|
|
1
1
|
# @xata.io/drizzle
|
2
2
|
|
3
|
-
## 0.0.0-alpha.
|
3
|
+
## 0.0.0-alpha.vf455e66cda21d00ed37168f3b02730a799f48650
|
4
4
|
|
5
5
|
### Patch Changes
|
6
6
|
|
7
|
+
- Force canary build
|
8
|
+
|
7
9
|
- Updated dependencies []:
|
8
|
-
- @xata.io/client@0.0.0-alpha.
|
10
|
+
- @xata.io/client@0.0.0-alpha.vf455e66cda21d00ed37168f3b02730a799f48650
|
11
|
+
|
12
|
+
## 0.0.20
|
13
|
+
|
14
|
+
### Patch Changes
|
15
|
+
|
16
|
+
- [#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
|
17
|
+
|
18
|
+
## 0.0.19
|
19
|
+
|
20
|
+
### Patch Changes
|
21
|
+
|
22
|
+
- Updated dependencies [[`02053fb`](https://github.com/xataio/client-ts/commit/02053fbb10479b8e9453691f957d3235762555aa), [`e27cb74`](https://github.com/xataio/client-ts/commit/e27cb74143aa9b6c654713878e5d3776858e5290)]:
|
23
|
+
- @xata.io/client@0.29.3
|
24
|
+
|
25
|
+
## 0.0.18
|
26
|
+
|
27
|
+
### Patch Changes
|
28
|
+
|
29
|
+
- Updated dependencies [[`e8db1cd`](https://github.com/xataio/client-ts/commit/e8db1cd394ccbed32403548bf9d09a5c3973d850)]:
|
30
|
+
- @xata.io/client@0.29.2
|
31
|
+
|
32
|
+
## 0.0.17
|
33
|
+
|
34
|
+
### Patch Changes
|
35
|
+
|
36
|
+
- 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)]:
|
37
|
+
- @xata.io/client@0.29.1
|
38
|
+
|
39
|
+
## 0.0.16
|
40
|
+
|
41
|
+
### Patch Changes
|
42
|
+
|
43
|
+
- [#1329](https://github.com/xataio/client-ts/pull/1329) [`0ec026a`](https://github.com/xataio/client-ts/commit/0ec026a92bdb1a405cb9d90cb1d506ff159f98e8) Thanks [@eemmiillyy](https://github.com/eemmiillyy)! - Remove object column type
|
44
|
+
|
45
|
+
- Updated dependencies [[`0ec026a`](https://github.com/xataio/client-ts/commit/0ec026a92bdb1a405cb9d90cb1d506ff159f98e8), [`6414bd3`](https://github.com/xataio/client-ts/commit/6414bd3d8bdb84961e68968df4b0b025503f0d72), [`27773df`](https://github.com/xataio/client-ts/commit/27773df5addf0013d1a7238ac490904e7aad2334)]:
|
46
|
+
- @xata.io/client@0.29.0
|
47
|
+
|
48
|
+
## 0.0.15
|
49
|
+
|
50
|
+
### Patch Changes
|
51
|
+
|
52
|
+
- Updated dependencies [[`adc961b`](https://github.com/xataio/client-ts/commit/adc961b886b789010e6512c17cb2377eceab665a), [`6031a9d`](https://github.com/xataio/client-ts/commit/6031a9de63c264b7db5b031bb1795258c2bf8150)]:
|
53
|
+
- @xata.io/client@0.28.4
|
54
|
+
|
55
|
+
## 0.0.14
|
56
|
+
|
57
|
+
### Patch Changes
|
58
|
+
|
59
|
+
- [#1302](https://github.com/xataio/client-ts/pull/1302) [`181e3e3`](https://github.com/xataio/client-ts/commit/181e3e3c578334351050ccfdc1d4d9134e2a859c) Thanks [@eemmiillyy](https://github.com/eemmiillyy)! - fix: drizzle internal columns
|
60
|
+
|
61
|
+
- Updated dependencies [[`b7f3ec9`](https://github.com/xataio/client-ts/commit/b7f3ec9eabe3642929131e244bd774f4d3134482)]:
|
62
|
+
- @xata.io/client@0.28.3
|
63
|
+
|
64
|
+
## 0.0.13
|
65
|
+
|
66
|
+
### Patch Changes
|
67
|
+
|
68
|
+
- Updated dependencies [[`c9178e1`](https://github.com/xataio/client-ts/commit/c9178e1e3f2268513e78dcfce396a99a8fca5dfb)]:
|
69
|
+
- @xata.io/client@0.28.2
|
70
|
+
|
71
|
+
## 0.0.12
|
72
|
+
|
73
|
+
### Patch Changes
|
74
|
+
|
75
|
+
- Updated dependencies [[`9a7e3f5`](https://github.com/xataio/client-ts/commit/9a7e3f5029e53efc6750e9c86bab936427788209)]:
|
76
|
+
- @xata.io/client@0.28.1
|
9
77
|
|
10
78
|
## 0.0.11
|
11
79
|
|
package/dist/index.cjs
CHANGED
@@ -45,73 +45,49 @@ function mapResultRow(columns, row, joinsNotNullableMap) {
|
|
45
45
|
}
|
46
46
|
return result;
|
47
47
|
}
|
48
|
-
const exhaustiveCheck = (x) => {
|
49
|
-
throw new Error(`Unhandled discriminated union member: ${x}`);
|
50
|
-
};
|
51
48
|
|
52
|
-
var _a, _b;
|
53
|
-
class
|
54
|
-
constructor(client,
|
55
|
-
super();
|
49
|
+
var _a$1, _b$1, _c;
|
50
|
+
class XataHttpPreparedQuery extends pgCore.PgPreparedQuery {
|
51
|
+
constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
|
52
|
+
super(query);
|
56
53
|
this.client = client;
|
57
|
-
this.params = params;
|
58
54
|
this.logger = logger;
|
59
55
|
this.fields = fields;
|
56
|
+
this._isResponseInArrayMode = _isResponseInArrayMode;
|
60
57
|
this.customResultMapper = customResultMapper;
|
61
|
-
this.query = {
|
62
|
-
name,
|
63
|
-
statement: queryString
|
64
|
-
};
|
65
58
|
}
|
66
59
|
async execute(placeholderValues = {}) {
|
67
|
-
const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
|
68
|
-
this.logger.logQuery(this.query.
|
69
|
-
const {
|
70
|
-
|
71
|
-
params
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
path: [key],
|
76
|
-
field: {
|
77
|
-
sql: {
|
78
|
-
decoder: {
|
79
|
-
mapFromDriverValue: (value) => value
|
80
|
-
}
|
81
|
-
}
|
82
|
-
}
|
83
|
-
})
|
84
|
-
);
|
60
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
61
|
+
this.logger.logQuery(this.query.sql, params);
|
62
|
+
const { fields, client, query, customResultMapper } = this;
|
63
|
+
if (!fields && !customResultMapper) {
|
64
|
+
const result = await this.client.sql({ statement: query.sql, params });
|
65
|
+
return { rowCount: result.records.length, rows: result.records, rowAsArray: false };
|
66
|
+
}
|
67
|
+
const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
|
85
68
|
if (warning)
|
86
69
|
console.warn(warning);
|
87
|
-
const
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
const
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
|
104
|
-
this.logger.logQuery(this.query.statement, params);
|
105
|
-
const { records } = await this.client.sql({
|
106
|
-
statement: this.query.statement,
|
107
|
-
params
|
108
|
-
});
|
109
|
-
return records;
|
70
|
+
const joinsNotNullableMap = this.joinsNotNullableMap;
|
71
|
+
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
72
|
+
}
|
73
|
+
all(placeholderValues = {}) {
|
74
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
75
|
+
this.logger.logQuery(this.query.sql, params);
|
76
|
+
return this.client.sql({ statement: this.query.sql, params, responseType: "array" }).then((result) => result.rows);
|
77
|
+
}
|
78
|
+
values(placeholderValues = {}) {
|
79
|
+
const params = drizzleOrm.fillPlaceholders(this.query.params, placeholderValues);
|
80
|
+
this.logger.logQuery(this.query.sql, params);
|
81
|
+
return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);
|
82
|
+
}
|
83
|
+
/** @internal */
|
84
|
+
isResponseInArrayMode() {
|
85
|
+
return this._isResponseInArrayMode;
|
110
86
|
}
|
111
87
|
}
|
112
|
-
_a = drizzleOrm.entityKind;
|
113
|
-
|
114
|
-
class
|
88
|
+
_a$1 = drizzleOrm.entityKind;
|
89
|
+
XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
|
90
|
+
class XataHttpSession extends pgCore.PgSession {
|
115
91
|
constructor(client, dialect, schema, options = {}) {
|
116
92
|
super(dialect);
|
117
93
|
this.client = client;
|
@@ -119,23 +95,69 @@ class XataSession extends pgCore.PgSession {
|
|
119
95
|
this.options = options;
|
120
96
|
this.logger = options.logger ?? new drizzleOrm.NoopLogger();
|
121
97
|
}
|
122
|
-
prepareQuery(query, fields, name, customResultMapper) {
|
123
|
-
return new
|
98
|
+
prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
|
99
|
+
return new XataHttpPreparedQuery(
|
100
|
+
this.client,
|
101
|
+
query,
|
102
|
+
this.logger,
|
103
|
+
fields,
|
104
|
+
isResponseInArrayMode,
|
105
|
+
customResultMapper
|
106
|
+
);
|
124
107
|
}
|
125
108
|
async query(query, params) {
|
126
109
|
this.logger.logQuery(query, params);
|
127
|
-
|
110
|
+
const result = await this.client.sql({ statement: query, params, responseType: "array" });
|
111
|
+
return {
|
112
|
+
rowCount: result.rows.length,
|
113
|
+
rows: result.rows,
|
114
|
+
rowAsArray: true
|
115
|
+
};
|
128
116
|
}
|
129
117
|
async queryObjects(query, params) {
|
130
|
-
|
118
|
+
const result = await this.client.sql({ statement: query, params });
|
119
|
+
return {
|
120
|
+
rowCount: result.records.length,
|
121
|
+
rows: result.records,
|
122
|
+
rowAsArray: false
|
123
|
+
};
|
131
124
|
}
|
132
|
-
async transaction(_transaction, _config) {
|
133
|
-
throw new Error("
|
125
|
+
async transaction(_transaction, _config = {}) {
|
126
|
+
throw new Error("No transactions support in Xata Http driver");
|
134
127
|
}
|
135
128
|
}
|
136
|
-
_b = drizzleOrm.entityKind;
|
137
|
-
|
129
|
+
_b$1 = drizzleOrm.entityKind;
|
130
|
+
XataHttpSession[_b$1] = "XataHttpSession";
|
131
|
+
class XataTransaction extends pgCore.PgTransaction {
|
132
|
+
async transaction(_transaction) {
|
133
|
+
throw new Error("No transactions support in Xata Http driver");
|
134
|
+
}
|
135
|
+
}
|
136
|
+
_c = drizzleOrm.entityKind;
|
137
|
+
XataTransaction[_c] = "XataHttpTransaction";
|
138
138
|
|
139
|
+
var _a, _b;
|
140
|
+
class XataHttpDriver {
|
141
|
+
constructor(client, dialect, options = {}) {
|
142
|
+
this.client = client;
|
143
|
+
this.dialect = dialect;
|
144
|
+
this.options = options;
|
145
|
+
this.initMappers();
|
146
|
+
}
|
147
|
+
createSession(schema) {
|
148
|
+
return new XataHttpSession(this.client, this.dialect, schema, {
|
149
|
+
logger: this.options.logger
|
150
|
+
});
|
151
|
+
}
|
152
|
+
initMappers() {
|
153
|
+
}
|
154
|
+
}
|
155
|
+
_a = drizzleOrm.entityKind;
|
156
|
+
XataHttpDriver[_a] = "XataDriver";
|
157
|
+
class XataHttpDatabase extends pgCore.PgDatabase {
|
158
|
+
}
|
159
|
+
_b = drizzleOrm.entityKind;
|
160
|
+
XataHttpDatabase[_b] = "XataHttpDatabase";
|
139
161
|
function drizzle(client, config = {}) {
|
140
162
|
const dialect = new pgCore.PgDialect();
|
141
163
|
let logger;
|
@@ -153,58 +175,19 @@ function drizzle(client, config = {}) {
|
|
153
175
|
tableNamesMap: tablesConfig.tableNamesMap
|
154
176
|
};
|
155
177
|
}
|
156
|
-
const
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
case "text":
|
164
|
-
case "email":
|
165
|
-
case "link":
|
166
|
-
return pgCore.text(column.name);
|
167
|
-
case "bool":
|
168
|
-
return pgCore.boolean(column.name);
|
169
|
-
case "int":
|
170
|
-
return pgCore.integer(column.name);
|
171
|
-
case "float":
|
172
|
-
return pgCore.decimal(column.name);
|
173
|
-
case "datetime":
|
174
|
-
return pgCore.date(column.name);
|
175
|
-
case "multiple":
|
176
|
-
case "object":
|
177
|
-
case "vector":
|
178
|
-
case "file[]":
|
179
|
-
case "file":
|
180
|
-
case "json":
|
181
|
-
throw new Error(`Unsupported column type: ${column.type}`);
|
182
|
-
default:
|
183
|
-
return exhaustiveCheck(column.type);
|
184
|
-
}
|
185
|
-
}
|
186
|
-
function buildColumn(column) {
|
187
|
-
let type = buildColumnType(column);
|
188
|
-
if (column.notNull) {
|
189
|
-
type = type.notNull();
|
190
|
-
}
|
191
|
-
if (column.unique) {
|
192
|
-
type = type.unique();
|
193
|
-
}
|
194
|
-
return type;
|
195
|
-
}
|
196
|
-
function buildTable(schema) {
|
197
|
-
const columns = schema.columns.map((column) => [column.name, buildColumn(column)]);
|
198
|
-
const definition = { id: pgCore.text("id"), ...Object.fromEntries(columns) };
|
199
|
-
return pgCore.pgTable(schema.name, definition);
|
200
|
-
}
|
201
|
-
function buildModels(tables) {
|
202
|
-
const entries = tables.map((table) => [table.name, buildTable(table)]);
|
203
|
-
return Object.fromEntries(entries);
|
178
|
+
const driver = new XataHttpDriver(client, dialect, { logger });
|
179
|
+
const session = driver.createSession(schema);
|
180
|
+
return new XataHttpDatabase(
|
181
|
+
dialect,
|
182
|
+
session,
|
183
|
+
schema
|
184
|
+
);
|
204
185
|
}
|
205
186
|
|
206
|
-
exports.
|
207
|
-
exports.
|
208
|
-
exports.
|
187
|
+
exports.XataHttpDatabase = XataHttpDatabase;
|
188
|
+
exports.XataHttpDriver = XataHttpDriver;
|
189
|
+
exports.XataHttpPreparedQuery = XataHttpPreparedQuery;
|
190
|
+
exports.XataHttpSession = XataHttpSession;
|
191
|
+
exports.XataTransaction = XataTransaction;
|
209
192
|
exports.drizzle = drizzle;
|
210
193
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/session.ts","../src/driver.ts","../src/generate.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, getTableName, is } from 'drizzle-orm';\n\ntype SelectedFieldsOrdered<TColumn extends Column> = {\n path: string[];\n field: TColumn | SQL | SQL.Aliased;\n}[];\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 as any).sql.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\nexport const exhaustiveCheck = (x: never): never => {\n throw new Error(`Unhandled discriminated union member: ${x}`);\n};\n","import {\n Assume,\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgDialect,\n PgSession,\n PgTransactionConfig,\n PreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT,\n SelectedFieldsOrdered\n} from 'drizzle-orm/pg-core';\nimport { XataClient } from './driver';\nimport { mapResultRow } from './utils';\n\ntype QueryResult<T = Record<string, unknown>> = {\n records: T[];\n warning?: string;\n};\n\nexport class XataPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {\n static readonly [entityKind]: string = 'VercelPgPreparedQuery';\n\n private query: {\n name: string | undefined;\n statement: string;\n };\n\n constructor(\n private client: XataClient,\n queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered | undefined,\n name: string | undefined,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super();\n\n this.query = {\n name,\n statement: queryString\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.query.statement, params);\n\n const { records = [], warning } = await this.client.sql<Record<string, unknown>>({\n statement: this.query.statement,\n params\n });\n\n // FIXME: This is a hack, we should be able to get the fields from the query but SELECT * fails\n const fields =\n this.fields ??\n Object.keys(records[0]!).map(\n (key) =>\n ({\n path: [key],\n field: {\n sql: {\n decoder: {\n mapFromDriverValue: (value: unknown) => value\n }\n }\n }\n } as any)\n );\n\n if (warning) console.warn(warning);\n\n const rows = records.map((record) => fields.map((field) => record[field.path.join('.')]));\n\n if (this.customResultMapper) {\n return this.customResultMapper(rows);\n }\n\n return rows.map((row) => mapResultRow<T['execute']>(fields, row, undefined));\n }\n\n async all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.query.statement, params);\n\n const { records } = await this.client.sql({\n statement: this.query.statement,\n params\n });\n\n return records;\n }\n\n async values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.query.statement, params);\n\n const { records } = await this.client.sql({\n statement: this.query.statement,\n params\n });\n\n return records;\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 = 'VercelPgSession';\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 | undefined,\n name: string | undefined,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PreparedQuery<T> {\n return new XataPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, customResultMapper);\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResult> {\n this.logger.logQuery(query, params);\n return await this.client.sql({ statement: query, params });\n }\n\n async queryObjects<T extends Record<string, unknown>>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n return this.client.sql({ statement: query, params });\n }\n\n override async transaction<T>(\n _transaction: (tx: any) => Promise<T>,\n _config?: PgTransactionConfig | undefined\n ): Promise<T> {\n throw new Error('Transactions are not supported');\n }\n}\n\nexport interface XataQueryResultHKT extends QueryResultHKT {\n type: QueryResult<Assume<this['row'], Record<string, unknown>>[]>;\n}\n","import { SQLPluginResult } from '@xata.io/client';\nimport {\n DefaultLogger,\n DrizzleConfig,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\nimport { XataQueryResultHKT, XataSession } from './session';\n\nexport type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataQueryResultHKT,\n TSchema\n>;\n\nexport type XataClient = {\n sql: SQLPluginResult;\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 session = new XataSession(client, dialect, schema, { logger });\n return new PgDatabase(dialect, session, schema) as XataDatabase<TSchema>;\n}\n","import { BaseSchema, Schemas } from '@xata.io/client';\nimport { boolean, date, decimal, integer, pgTable, text } from 'drizzle-orm/pg-core';\nimport { exhaustiveCheck } from './utils';\n\nfunction buildColumnType(column: Schemas.Column) {\n switch (column.type) {\n case 'string':\n case 'text':\n case 'email':\n case 'link':\n return text(column.name);\n case 'bool':\n return boolean(column.name);\n case 'int':\n return integer(column.name);\n case 'float':\n return decimal(column.name);\n case 'datetime':\n return date(column.name);\n case 'multiple':\n case 'object':\n case 'vector':\n case 'file[]':\n case 'file':\n case 'json':\n throw new Error(`Unsupported column type: ${column.type}`);\n default:\n return exhaustiveCheck(column.type);\n }\n}\n\nfunction buildColumn(column: Schemas.Column) {\n let type = buildColumnType(column);\n\n if (column.notNull) {\n type = type.notNull();\n }\n\n if (column.unique) {\n type = type.unique();\n }\n\n return type;\n}\n\nfunction buildTable(schema: Schemas.Table) {\n const columns = schema.columns.map((column) => [column.name, buildColumn(column)]);\n const definition = { id: text('id'), ...Object.fromEntries(columns) };\n return pgTable(schema.name, definition);\n}\n\nexport type DrizzleModels<T extends readonly BaseSchema[]> = T extends never[]\n ? Record<string, Record<string, any>>\n : T extends readonly unknown[]\n ? T[number] extends { name: string; columns: readonly unknown[] }\n ? {\n [K in T[number]['name']]: ReturnType<typeof buildTable>;\n }\n : never\n : never;\n\nexport function buildModels<T extends readonly BaseSchema[]>(tables: T): DrizzleModels<T> {\n const entries = tables.map((table) => [table.name, buildTable(table as Schemas.Table)]);\n return Object.fromEntries(entries);\n}\n"],"names":["result","is","Column","SQL","getTableName","PreparedQuery","fillPlaceholders","entityKind","PgSession","NoopLogger","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers","PgDatabase","text","boolean","integer","decimal","date","pgTable"],"mappings":";;;;;AAOgB,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,MAAc,GAAI,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,CAAA;AAEa,MAAA,eAAA,GAAkB,CAAC,CAAoB,KAAA;AAClD,EAAA,MAAM,IAAI,KAAA,CAAM,CAAyC,sCAAA,EAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AAC9D,CAAA;;ACjEA,IAAA,EAAA,EAAA,EAAA,CAAA;AA2BO,MAAM,0BAAyDK,oBAAiB,CAAA;AAAA,EAQrF,YACU,MACR,EAAA,WAAA,EACQ,QACA,MACA,EAAA,MAAA,EACR,MACQ,kBACR,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AARE,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,MAAA,GAAA,MAAA,CAAA;AAEA,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA,CAAA;AAIR,IAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,MACX,IAAA;AAAA,MACA,SAAW,EAAA,WAAA;AAAA,KACb,CAAA;AAAA,GACF;AAAA,EAEA,MAAM,OAAA,CAAQ,iBAAyD,GAAA,EAA2B,EAAA;AAChG,IAAA,MAAM,MAAS,GAAAC,2BAAA,CAAiB,IAAK,CAAA,MAAA,EAAQ,iBAAiB,CAAA,CAAA;AAE9D,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,WAAW,MAAM,CAAA,CAAA;AAEjD,IAAM,MAAA,EAAE,UAAU,EAAC,EAAG,SAAY,GAAA,MAAM,IAAK,CAAA,MAAA,CAAO,GAA6B,CAAA;AAAA,MAC/E,SAAA,EAAW,KAAK,KAAM,CAAA,SAAA;AAAA,MACtB,MAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,MAAA,GACJ,KAAK,MACL,IAAA,MAAA,CAAO,KAAK,OAAQ,CAAA,CAAC,CAAE,CAAE,CAAA,GAAA;AAAA,MACvB,CAAC,GACE,MAAA;AAAA,QACC,IAAA,EAAM,CAAC,GAAG,CAAA;AAAA,QACV,KAAO,EAAA;AAAA,UACL,GAAK,EAAA;AAAA,YACH,OAAS,EAAA;AAAA,cACP,kBAAA,EAAoB,CAAC,KAAmB,KAAA,KAAA;AAAA,aAC1C;AAAA,WACF;AAAA,SACF;AAAA,OACF,CAAA;AAAA,KACJ,CAAA;AAEF,IAAI,IAAA,OAAA;AAAS,MAAA,OAAA,CAAQ,KAAK,OAAO,CAAA,CAAA;AAEjC,IAAA,MAAM,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,KAAW,OAAO,GAAI,CAAA,CAAC,KAAU,KAAA,MAAA,CAAO,MAAM,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAC,CAAC,CAAA,CAAA;AAExF,IAAA,IAAI,KAAK,kBAAoB,EAAA;AAC3B,MAAO,OAAA,IAAA,CAAK,mBAAmB,IAAI,CAAA,CAAA;AAAA,KACrC;AAEA,IAAO,OAAA,IAAA,CAAK,IAAI,CAAC,GAAA,KAAQ,aAA2B,MAAQ,EAAA,GAAA,EAAK,MAAS,CAAC,CAAA,CAAA;AAAA,GAC7E;AAAA,EAEA,MAAM,GAAA,CAAI,iBAAyD,GAAA,EAAuB,EAAA;AACxF,IAAA,MAAM,MAAS,GAAAA,2BAAA,CAAiB,IAAK,CAAA,MAAA,EAAQ,iBAAiB,CAAA,CAAA;AAC9D,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,WAAW,MAAM,CAAA,CAAA;AAEjD,IAAA,MAAM,EAAE,OAAQ,EAAA,GAAI,MAAM,IAAA,CAAK,OAAO,GAAI,CAAA;AAAA,MACxC,SAAA,EAAW,KAAK,KAAM,CAAA,SAAA;AAAA,MACtB,MAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,MAAA,CAAO,iBAAyD,GAAA,EAA0B,EAAA;AAC9F,IAAA,MAAM,MAAS,GAAAA,2BAAA,CAAiB,IAAK,CAAA,MAAA,EAAQ,iBAAiB,CAAA,CAAA;AAC9D,IAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,WAAW,MAAM,CAAA,CAAA;AAEjD,IAAA,MAAM,EAAE,OAAQ,EAAA,GAAI,MAAM,IAAA,CAAK,OAAO,GAAI,CAAA;AAAA,MACxC,SAAA,EAAW,KAAK,KAAM,CAAA,SAAA;AAAA,MACtB,MAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA;AArFmB,EAAA,GAAAC,qBAAA,CAAA;AADN,iBAAA,CACM,EAAsB,CAAA,GAAA,uBAAA,CAAA;AA2FlC,MAAM,oBAGHC,gBAAoD,CAAA;AAAA,EAK5D,YACU,MACR,EAAA,OAAA,EACQ,MACA,EAAA,OAAA,GAA8B,EACtC,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,IAAIC,qBAAW,EAAA,CAAA;AAAA,GACjD;AAAA,EAEA,YACE,CAAA,KAAA,EACA,MACA,EAAA,IAAA,EACA,kBACkB,EAAA;AAClB,IAAA,OAAO,IAAI,iBAAA,CAAkB,IAAK,CAAA,MAAA,EAAQ,KAAM,CAAA,GAAA,EAAK,KAAM,CAAA,MAAA,EAAQ,IAAK,CAAA,MAAA,EAAQ,MAAQ,EAAA,IAAA,EAAM,kBAAkB,CAAA,CAAA;AAAA,GAClH;AAAA,EAEA,MAAM,KAAM,CAAA,KAAA,EAAe,MAAyC,EAAA;AAClE,IAAK,IAAA,CAAA,MAAA,CAAO,QAAS,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAClC,IAAO,OAAA,MAAM,KAAK,MAAO,CAAA,GAAA,CAAI,EAAE,SAAW,EAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AAAA,GAC3D;AAAA,EAEA,MAAM,YAAgD,CAAA,KAAA,EAAe,MAA4C,EAAA;AAC/G,IAAA,OAAO,KAAK,MAAO,CAAA,GAAA,CAAI,EAAE,SAAW,EAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AAAA,GACrD;AAAA,EAEA,MAAe,WACb,CAAA,YAAA,EACA,OACY,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,gCAAgC,CAAA,CAAA;AAAA,GAClD;AACF,CAAA;AAtCmB,EAAA,GAAAF,qBAAA,CAAA;AAJN,WAAA,CAIM,EAAsB,CAAA,GAAA,iBAAA;;ACtGlC,SAAS,OACd,CAAA,MAAA,EACA,MAAiC,GAAA,EACV,EAAA;AACvB,EAAM,MAAA,OAAA,GAAU,IAAIG,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,EAAM,MAAA,OAAA,GAAU,IAAI,WAAY,CAAA,MAAA,EAAQ,SAAS,MAAQ,EAAA,EAAE,QAAQ,CAAA,CAAA;AACnE,EAAA,OAAO,IAAIC,iBAAA,CAAW,OAAS,EAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAChD;;ACzCA,SAAS,gBAAgB,MAAwB,EAAA;AAC/C,EAAA,QAAQ,OAAO,IAAM;AAAA,IACnB,KAAK,QAAA,CAAA;AAAA,IACL,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAO,OAAAC,WAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,IACzB,KAAK,MAAA;AACH,MAAO,OAAAC,cAAA,CAAQ,OAAO,IAAI,CAAA,CAAA;AAAA,IAC5B,KAAK,KAAA;AACH,MAAO,OAAAC,cAAA,CAAQ,OAAO,IAAI,CAAA,CAAA;AAAA,IAC5B,KAAK,OAAA;AACH,MAAO,OAAAC,cAAA,CAAQ,OAAO,IAAI,CAAA,CAAA;AAAA,IAC5B,KAAK,UAAA;AACH,MAAO,OAAAC,WAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,IACzB,KAAK,UAAA,CAAA;AAAA,IACL,KAAK,QAAA,CAAA;AAAA,IACL,KAAK,QAAA,CAAA;AAAA,IACL,KAAK,QAAA,CAAA;AAAA,IACL,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,MAAM,IAAI,KAAA,CAAM,CAA4B,yBAAA,EAAA,MAAA,CAAO,IAAI,CAAE,CAAA,CAAA,CAAA;AAAA,IAC3D;AACE,MAAO,OAAA,eAAA,CAAgB,OAAO,IAAI,CAAA,CAAA;AAAA,GACtC;AACF,CAAA;AAEA,SAAS,YAAY,MAAwB,EAAA;AAC3C,EAAI,IAAA,IAAA,GAAO,gBAAgB,MAAM,CAAA,CAAA;AAEjC,EAAA,IAAI,OAAO,OAAS,EAAA;AAClB,IAAA,IAAA,GAAO,KAAK,OAAQ,EAAA,CAAA;AAAA,GACtB;AAEA,EAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,IAAA,IAAA,GAAO,KAAK,MAAO,EAAA,CAAA;AAAA,GACrB;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,SAAS,WAAW,MAAuB,EAAA;AACzC,EAAA,MAAM,OAAU,GAAA,MAAA,CAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,KAAW,CAAC,MAAA,CAAO,IAAM,EAAA,WAAA,CAAY,MAAM,CAAC,CAAC,CAAA,CAAA;AACjF,EAAM,MAAA,UAAA,GAAa,EAAE,EAAA,EAAIJ,WAAK,CAAA,IAAI,GAAG,GAAG,MAAA,CAAO,WAAY,CAAA,OAAO,CAAE,EAAA,CAAA;AACpE,EAAO,OAAAK,cAAA,CAAQ,MAAO,CAAA,IAAA,EAAM,UAAU,CAAA,CAAA;AACxC,CAAA;AAYO,SAAS,YAA6C,MAA6B,EAAA;AACxF,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,IAAM,EAAA,UAAA,CAAW,KAAsB,CAAC,CAAC,CAAA,CAAA;AACtF,EAAO,OAAA,MAAA,CAAO,YAAY,OAAO,CAAA,CAAA;AACnC;;;;;;;"}
|
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 // 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<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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"}
|
package/dist/index.d.ts
CHANGED
@@ -1,87 +1,69 @@
|
|
1
|
-
import {
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
5
|
-
import { PreparedQueryConfig, PreparedQuery, SelectedFieldsOrdered, PgSession, PgDialect, PgTransactionConfig, QueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
|
1
|
+
import { entityKind, Query, Logger, SelectedFieldsOrdered, TablesRelationalConfig, RelationalSchemaConfig, ExtractTablesWithRelations, DrizzleConfig } from 'drizzle-orm';
|
2
|
+
import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';
|
3
|
+
import { PreparedQueryConfig, PgPreparedQuery, PgColumn, PgSession, PgDialect, PgTransactionConfig, PgTransaction, QueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
|
6
4
|
|
7
|
-
type
|
8
|
-
|
9
|
-
warning?: string;
|
5
|
+
type XataHttpClient = {
|
6
|
+
sql: SQLPluginResult;
|
10
7
|
};
|
11
|
-
|
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> {
|
12
14
|
private client;
|
13
|
-
private params;
|
14
15
|
private logger;
|
15
16
|
private fields;
|
17
|
+
private _isResponseInArrayMode;
|
16
18
|
private customResultMapper?;
|
17
19
|
static readonly [entityKind]: string;
|
18
|
-
|
19
|
-
constructor(client: XataClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, customResultMapper?: ((rows: unknown[][]) => T['execute']) | undefined);
|
20
|
+
constructor(client: XataHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T['execute']) | undefined);
|
20
21
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
21
22
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
22
23
|
values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
|
24
|
+
/** @internal */
|
25
|
+
isResponseInArrayMode(): boolean;
|
23
26
|
}
|
24
|
-
interface
|
27
|
+
interface XataHttpSessionOptions {
|
25
28
|
logger?: Logger;
|
26
29
|
}
|
27
|
-
declare class
|
30
|
+
declare class XataHttpSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {
|
28
31
|
private client;
|
29
32
|
private schema;
|
30
33
|
private options;
|
31
34
|
static readonly [entityKind]: string;
|
32
35
|
private logger;
|
33
|
-
constructor(client:
|
34
|
-
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']):
|
35
|
-
query(query: string, params: unknown[]): Promise<
|
36
|
-
queryObjects
|
37
|
-
transaction<T>(_transaction: (tx:
|
36
|
+
constructor(client: XataHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: XataHttpSessionOptions);
|
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'>>;
|
40
|
+
transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>, _config?: PgTransactionConfig): Promise<T>;
|
38
41
|
}
|
39
|
-
|
40
|
-
|
42
|
+
declare class XataTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {
|
43
|
+
static readonly [entityKind]: string;
|
44
|
+
transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
45
|
+
}
|
46
|
+
interface XataHttpQueryResultHKT extends QueryResultHKT {
|
47
|
+
type: SQLQueryResult<this['row']>;
|
41
48
|
}
|
42
49
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
hasDefault: boolean;
|
62
|
-
enumValues: any;
|
63
|
-
baseColumn: drizzle_orm.Column<{
|
64
|
-
name: string;
|
65
|
-
tableName: string;
|
66
|
-
dataType: drizzle_orm.ColumnDataType;
|
67
|
-
columnType: string;
|
68
|
-
data: unknown;
|
69
|
-
driverParam: unknown;
|
70
|
-
notNull: false;
|
71
|
-
hasDefault: false;
|
72
|
-
enumValues: string[] | undefined;
|
73
|
-
baseColumn: never;
|
74
|
-
}, object, object>;
|
75
|
-
}, {}, {}>;
|
76
|
-
};
|
77
|
-
dialect: "pg";
|
78
|
-
}>;
|
79
|
-
type DrizzleModels<T extends readonly BaseSchema[]> = T extends never[] ? Record<string, Record<string, any>> : T extends readonly unknown[] ? T[number] extends {
|
80
|
-
name: string;
|
81
|
-
columns: readonly unknown[];
|
82
|
-
} ? {
|
83
|
-
[K in T[number]['name']]: ReturnType<typeof buildTable>;
|
84
|
-
} : never : never;
|
85
|
-
declare function buildModels<T extends readonly BaseSchema[]>(tables: T): DrizzleModels<T>;
|
50
|
+
interface XataDriverOptions {
|
51
|
+
logger?: Logger;
|
52
|
+
}
|
53
|
+
declare class XataHttpDriver {
|
54
|
+
private client;
|
55
|
+
private dialect;
|
56
|
+
private options;
|
57
|
+
static readonly [entityKind]: string;
|
58
|
+
constructor(client: XataHttpClient, dialect: PgDialect, options?: XataDriverOptions);
|
59
|
+
createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): XataHttpSession<Record<string, unknown>, TablesRelationalConfig>;
|
60
|
+
initMappers(): void;
|
61
|
+
}
|
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
|
+
}
|
67
|
+
declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: XataHttpClient, config?: DrizzleConfig<TSchema>): XataHttpDatabase<TSchema>;
|
86
68
|
|
87
|
-
export { type
|
69
|
+
export { type QueryResults, type XataDriverOptions, type XataHttpClient, XataHttpDatabase, XataHttpDriver, XataHttpPreparedQuery, type XataHttpQueryResultHKT, XataHttpSession, type XataHttpSessionOptions, XataTransaction, drizzle };
|