@xata.io/drizzle 0.0.0-alpha.ve69ec6a → 0.0.0-alpha.ve6c3a334dd5497231515e0d905fd2055714d270d

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.
@@ -1,14 +1,25 @@
1
1
 
2
- > @xata.io/drizzle@0.0.10 build /home/runner/work/client-ts/client-ts/packages/plugin-client-drizzle
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
  
6
6
  src/index.ts → dist/index.cjs, dist/index.mjs...
7
7
  (!) Unresolved dependencies
8
8
  https://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency
9
- drizzle-orm (imported by "src/session.ts", "src/driver.ts" and "src/utils.ts")
10
- drizzle-orm/pg-core (imported by "src/session.ts", "src/driver.ts" and "src/generate.ts")
11
- created dist/index.cjs, dist/index.mjs in 223ms
9
+ drizzle-orm (imported by "src/http/driver.ts", "src/http/session.ts" and "src/shared/utils.ts")
10
+ drizzle-orm/pg-core (imported by "src/http/driver.ts" and "src/http/session.ts")
11
+ created dist/index.cjs, dist/index.mjs in 348ms
12
12
  
13
13
  src/index.ts → dist/index.d.ts...
14
- created dist/index.d.ts in 6.9s
14
+ created dist/index.d.ts in 7.6s
15
+ 
16
+ src/pg/index.ts → dist/pg.cjs, dist/pg.mjs...
17
+ (!) Unresolved dependencies
18
+ https://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency
19
+ drizzle-orm (imported by "src/pg/session.ts", "src/pg/driver.ts" and "src/shared/utils.ts")
20
+ drizzle-orm/pg-core (imported by "src/pg/session.ts" and "src/pg/driver.ts")
21
+ pg (imported by "src/pg/session.ts")
22
+ created dist/pg.cjs, dist/pg.mjs in 66ms
23
+ 
24
+ src/pg/index.ts → dist/pg.d.ts...
25
+ created dist/pg.d.ts in 1.7s
package/CHANGELOG.md CHANGED
@@ -1,11 +1,107 @@
1
1
  # @xata.io/drizzle
2
2
 
3
- ## 0.0.0-alpha.ve69ec6a
3
+ ## 0.0.0-alpha.ve6c3a334dd5497231515e0d905fd2055714d270d
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.ve69ec6a
10
+ - @xata.io/client@0.0.0-alpha.ve6c3a334dd5497231515e0d905fd2055714d270d
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
59
+
60
+ ## 0.0.16
61
+
62
+ ### Patch Changes
63
+
64
+ - [#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
65
+
66
+ - 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)]:
67
+ - @xata.io/client@0.29.0
68
+
69
+ ## 0.0.15
70
+
71
+ ### Patch Changes
72
+
73
+ - Updated dependencies [[`adc961b`](https://github.com/xataio/client-ts/commit/adc961b886b789010e6512c17cb2377eceab665a), [`6031a9d`](https://github.com/xataio/client-ts/commit/6031a9de63c264b7db5b031bb1795258c2bf8150)]:
74
+ - @xata.io/client@0.28.4
75
+
76
+ ## 0.0.14
77
+
78
+ ### Patch Changes
79
+
80
+ - [#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
81
+
82
+ - Updated dependencies [[`b7f3ec9`](https://github.com/xataio/client-ts/commit/b7f3ec9eabe3642929131e244bd774f4d3134482)]:
83
+ - @xata.io/client@0.28.3
84
+
85
+ ## 0.0.13
86
+
87
+ ### Patch Changes
88
+
89
+ - Updated dependencies [[`c9178e1`](https://github.com/xataio/client-ts/commit/c9178e1e3f2268513e78dcfce396a99a8fca5dfb)]:
90
+ - @xata.io/client@0.28.2
91
+
92
+ ## 0.0.12
93
+
94
+ ### Patch Changes
95
+
96
+ - Updated dependencies [[`9a7e3f5`](https://github.com/xataio/client-ts/commit/9a7e3f5029e53efc6750e9c86bab936427788209)]:
97
+ - @xata.io/client@0.28.1
98
+
99
+ ## 0.0.11
100
+
101
+ ### Patch Changes
102
+
103
+ - Updated dependencies [[`e97d1999`](https://github.com/xataio/client-ts/commit/e97d1999f3c25f149213ceca81958e1674624e05)]:
104
+ - @xata.io/client@0.28.0
9
105
 
10
106
  ## 0.0.10
11
107
 
package/dist/index.cjs CHANGED
@@ -45,74 +45,47 @@ 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 XataPreparedQuery extends pgCore.PreparedQuery {
54
- constructor(client, queryString, params, logger, fields, name, customResultMapper) {
55
- 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);
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.statement, params);
69
- const { records = [], warning } = await this.client.sql({
70
- statement: this.query.statement,
71
- params
72
- });
73
- console.debug("execute", { statement: this.query.statement, params, result: records.length, warning });
74
- const fields = this.fields ?? Object.keys(records[0] ?? {}).map(
75
- (key) => ({
76
- path: [key],
77
- field: {
78
- sql: {
79
- decoder: {
80
- mapFromDriverValue: (value) => value
81
- }
82
- }
83
- }
84
- })
85
- );
86
- if (warning)
87
- console.warn(warning);
88
- const rows = records.map((record) => fields.map((field) => record[field.path.join(".")]));
89
- if (this.customResultMapper) {
90
- return this.customResultMapper(rows);
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 };
91
66
  }
92
- return rows.map((row) => mapResultRow(fields, row, void 0));
93
- }
94
- async all(placeholderValues = {}) {
95
- const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
96
- this.logger.logQuery(this.query.statement, params);
97
- const { records } = await this.client.sql({
98
- statement: this.query.statement,
99
- params
100
- });
101
- return records;
102
- }
103
- async values(placeholderValues = {}) {
104
- const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
105
- this.logger.logQuery(this.query.statement, params);
106
- const { records } = await this.client.sql({
107
- statement: this.query.statement,
108
- params
109
- });
110
- return records;
67
+ const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: "array" });
68
+ if (warning) console.warn(warning);
69
+ const joinsNotNullableMap = this.joinsNotNullableMap;
70
+ return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
71
+ }
72
+ all(placeholderValues = {}) {
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);
76
+ }
77
+ values(placeholderValues = {}) {
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;
111
85
  }
112
86
  }
113
- _a = drizzleOrm.entityKind;
114
- XataPreparedQuery[_a] = "VercelPgPreparedQuery";
115
- class XataSession extends pgCore.PgSession {
87
+ XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
88
+ class XataHttpSession extends (_d = pgCore.PgSession, _c$1 = drizzleOrm.entityKind, _d) {
116
89
  constructor(client, dialect, schema, options = {}) {
117
90
  super(dialect);
118
91
  this.client = client;
@@ -120,31 +93,66 @@ class XataSession extends pgCore.PgSession {
120
93
  this.options = options;
121
94
  this.logger = options.logger ?? new drizzleOrm.NoopLogger();
122
95
  }
123
- prepareQuery(query, fields, name, customResultMapper) {
124
- return new XataPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, customResultMapper);
96
+ prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
97
+ return new XataHttpPreparedQuery(
98
+ this.client,
99
+ query,
100
+ this.logger,
101
+ fields,
102
+ isResponseInArrayMode,
103
+ customResultMapper
104
+ );
125
105
  }
126
106
  async query(query, params) {
127
107
  this.logger.logQuery(query, params);
128
- const result = await this.client.sql({ statement: query, params });
108
+ const result = await this.client.sql({ statement: query, params, responseType: "array" });
129
109
  return {
130
- rows: result.records,
131
- warning: result.warning
110
+ rowCount: result.rows.length,
111
+ rows: result.rows,
112
+ rowAsArray: true
132
113
  };
133
114
  }
134
115
  async queryObjects(query, params) {
135
116
  const result = await this.client.sql({ statement: query, params });
136
117
  return {
118
+ rowCount: result.records.length,
137
119
  rows: result.records,
138
- warning: result.warning
120
+ rowAsArray: false
139
121
  };
140
122
  }
141
- async transaction(_transaction, _config) {
142
- throw new Error("Transactions are not supported");
123
+ async transaction(_transaction, _config = {}) {
124
+ throw new Error("No transactions support in Xata Http driver");
125
+ }
126
+ }
127
+ XataHttpSession[_c$1] = "XataHttpSession";
128
+ class XataTransaction extends (_f = pgCore.PgTransaction, _e = drizzleOrm.entityKind, _f) {
129
+ async transaction(_transaction) {
130
+ throw new Error("No transactions support in Xata Http driver");
143
131
  }
144
132
  }
145
- _b = drizzleOrm.entityKind;
146
- XataSession[_b] = "VercelPgSession";
133
+ XataTransaction[_e] = "XataHttpTransaction";
147
134
 
135
+ var _a, _b, _c;
136
+ _a = drizzleOrm.entityKind;
137
+ class XataHttpDriver {
138
+ constructor(client, dialect, options = {}) {
139
+ this.client = client;
140
+ this.dialect = dialect;
141
+ this.options = options;
142
+ this.initMappers();
143
+ }
144
+ createSession(schema) {
145
+ return new XataHttpSession(this.client, this.dialect, schema, {
146
+ logger: this.options.logger
147
+ });
148
+ }
149
+ initMappers() {
150
+ }
151
+ }
152
+ XataHttpDriver[_a] = "XataDriver";
153
+ class XataHttpDatabase extends (_c = pgCore.PgDatabase, _b = drizzleOrm.entityKind, _c) {
154
+ }
155
+ XataHttpDatabase[_b] = "XataHttpDatabase";
148
156
  function drizzle(client, config = {}) {
149
157
  const dialect = new pgCore.PgDialect();
150
158
  let logger;
@@ -162,58 +170,19 @@ function drizzle(client, config = {}) {
162
170
  tableNamesMap: tablesConfig.tableNamesMap
163
171
  };
164
172
  }
165
- const session = new XataSession(client, dialect, schema, { logger });
166
- return new pgCore.PgDatabase(dialect, session, schema);
167
- }
168
-
169
- function buildColumnType(column) {
170
- switch (column.type) {
171
- case "string":
172
- case "text":
173
- case "email":
174
- case "link":
175
- return pgCore.text(column.name);
176
- case "bool":
177
- return pgCore.boolean(column.name);
178
- case "int":
179
- return pgCore.integer(column.name);
180
- case "float":
181
- return pgCore.decimal(column.name);
182
- case "datetime":
183
- return pgCore.date(column.name);
184
- case "multiple":
185
- case "object":
186
- case "vector":
187
- case "file[]":
188
- case "file":
189
- case "json":
190
- throw new Error(`Unsupported column type: ${column.type}`);
191
- default:
192
- return exhaustiveCheck(column.type);
193
- }
194
- }
195
- function buildColumn(column) {
196
- let type = buildColumnType(column);
197
- if (column.notNull) {
198
- type = type.notNull();
199
- }
200
- if (column.unique) {
201
- type = type.unique();
202
- }
203
- return type;
204
- }
205
- function buildTable(schema) {
206
- const columns = schema.columns.map((column) => [column.name, buildColumn(column)]);
207
- const definition = { id: pgCore.text("id"), ...Object.fromEntries(columns) };
208
- return pgCore.pgTable(schema.name, definition);
209
- }
210
- function buildModels(tables) {
211
- const entries = tables.map((table) => [table.name, buildTable(table)]);
212
- return Object.fromEntries(entries);
173
+ const driver = new XataHttpDriver(client, dialect, { logger });
174
+ const session = driver.createSession(schema);
175
+ return new XataHttpDatabase(
176
+ dialect,
177
+ session,
178
+ schema
179
+ );
213
180
  }
214
181
 
215
- exports.XataPreparedQuery = XataPreparedQuery;
216
- exports.XataSession = XataSession;
217
- exports.buildModels = buildModels;
182
+ exports.XataHttpDatabase = XataHttpDatabase;
183
+ exports.XataHttpDriver = XataHttpDriver;
184
+ exports.XataHttpPreparedQuery = XataHttpPreparedQuery;
185
+ exports.XataHttpSession = XataHttpSession;
186
+ exports.XataTransaction = XataTransaction;
218
187
  exports.drizzle = drizzle;
219
188
  //# sourceMappingURL=index.cjs.map
@@ -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 rows: 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 console.debug('execute', { statement: this.query.statement, params, result: records.length, warning });\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 const result = await this.client.sql<Record<string, unknown>>({ statement: query, params });\n\n return {\n rows: result.records,\n warning: result.warning\n };\n }\n\n async queryObjects<T extends Record<string, unknown>>(query: string, params: unknown[]): Promise<QueryResult<T>> {\n const result = await this.client.sql<T>({ statement: query, params });\n\n return {\n rows: result.records,\n warning: result.warning\n };\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":"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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 PgQueryResultHKT\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 PgQueryResultHKT {\n type: SQLQueryResult<this['row']>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport class XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n> {\n static readonly [entityKind]: string = 'XataHttpDatabase';\n\n /** @internal */\n declare readonly session: XataHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new XataHttpDatabase(\n dialect,\n session,\n schema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined\n );\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","_b","_c","PgPreparedQuery","entityKind","fillPlaceholders","PgSession","NoopLogger","PgTransaction","PgDatabase","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,87 +1,69 @@
1
- import { SQLPluginResult, BaseSchema, Schemas } from '@xata.io/client';
2
- import * as drizzle_orm from 'drizzle-orm';
3
- import { entityKind, Logger, TablesRelationalConfig, RelationalSchemaConfig, Query, Assume, DrizzleConfig } from 'drizzle-orm';
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, PgQueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
6
4
 
7
- type QueryResult<T = Record<string, unknown>> = {
8
- rows: T[];
9
- warning?: string;
5
+ type XataHttpClient = {
6
+ sql: SQLPluginResult;
10
7
  };
11
- declare class XataPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {
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
- private query;
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 XataSessionOptions {
27
+ interface XataHttpSessionOptions {
25
28
  logger?: Logger;
26
29
  }
27
- declare class XataSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {
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: XataClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: XataSessionOptions);
34
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']): PreparedQuery<T>;
35
- query(query: string, params: unknown[]): Promise<QueryResult>;
36
- queryObjects<T extends Record<string, unknown>>(query: string, params: unknown[]): Promise<QueryResult<T>>;
37
- transaction<T>(_transaction: (tx: any) => Promise<T>, _config?: PgTransactionConfig | undefined): Promise<T>;
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
- interface XataQueryResultHKT extends QueryResultHKT {
40
- type: QueryResult<Assume<this['row'], Record<string, unknown>>[]>;
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 PgQueryResultHKT {
47
+ type: SQLQueryResult<this['row']>;
41
48
  }
42
49
 
43
- type XataDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<XataQueryResultHKT, TSchema>;
44
- type XataClient = {
45
- sql: SQLPluginResult;
46
- };
47
- declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: XataClient, config?: DrizzleConfig<TSchema>): XataDatabase<TSchema>;
48
-
49
- declare function buildTable(schema: Schemas.Table): drizzle_orm_pg_core.PgTableWithColumns<{
50
- name: string;
51
- schema: undefined;
52
- columns: {
53
- [x: string]: drizzle_orm_pg_core.PgColumn<{
54
- name: any;
55
- tableName: string;
56
- dataType: any;
57
- columnType: any;
58
- data: any;
59
- driverParam: any;
60
- notNull: boolean;
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 DrizzleModels, type XataClient, type XataDatabase, XataPreparedQuery, type XataQueryResultHKT, XataSession, type XataSessionOptions, buildModels, drizzle };
69
+ export { type QueryResults, type XataDriverOptions, type XataHttpClient, XataHttpDatabase, XataHttpDriver, XataHttpPreparedQuery, type XataHttpQueryResultHKT, XataHttpSession, type XataHttpSessionOptions, XataTransaction, drizzle };