@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.
@@ -1,14 +1,25 @@
1
1
 
2
- > @xata.io/drizzle@0.0.11 build /home/runner/work/client-ts/client-ts/packages/plugin-client-drizzle
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
  
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/driver.ts", "src/session.ts" and "src/utils.ts")
10
- drizzle-orm/pg-core (imported by "src/driver.ts", "src/generate.ts" and "src/session.ts")
11
- created dist/index.cjs, dist/index.mjs in 691ms
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 476ms
12
12
  
13
13
  src/index.ts → dist/index.d.ts...
14
- created dist/index.d.ts in 6.3s
14
+ created dist/index.d.ts in 6.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/driver.ts", "src/pg/session.ts" and "src/shared/utils.ts")
20
+ drizzle-orm/pg-core (imported by "src/pg/driver.ts" and "src/pg/session.ts")
21
+ pg (imported by "src/pg/session.ts")
22
+ created dist/pg.cjs, dist/pg.mjs in 33ms
23
+ 
24
+ src/pg/index.ts → dist/pg.d.ts...
25
+ created dist/pg.d.ts in 1.4s
package/CHANGELOG.md CHANGED
@@ -1,11 +1,79 @@
1
1
  # @xata.io/drizzle
2
2
 
3
- ## 0.0.0-alpha.vf3ab3ad
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.vf3ab3ad
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 XataPreparedQuery extends pgCore.PreparedQuery {
54
- constructor(client, queryString, params, logger, fields, name, customResultMapper) {
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.statement, params);
69
- const { records = [], warning } = await this.client.sql({
70
- statement: this.query.statement,
71
- params
72
- });
73
- const fields = this.fields ?? Object.keys(records[0]).map(
74
- (key) => ({
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 rows = records.map((record) => fields.map((field) => record[field.path.join(".")]));
88
- if (this.customResultMapper) {
89
- return this.customResultMapper(rows);
90
- }
91
- return rows.map((row) => mapResultRow(fields, row, void 0));
92
- }
93
- async all(placeholderValues = {}) {
94
- const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
95
- this.logger.logQuery(this.query.statement, params);
96
- const { records } = await this.client.sql({
97
- statement: this.query.statement,
98
- params
99
- });
100
- return records;
101
- }
102
- async values(placeholderValues = {}) {
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
- XataPreparedQuery[_a] = "VercelPgPreparedQuery";
114
- class XataSession extends pgCore.PgSession {
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 XataPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, customResultMapper);
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
- return await this.client.sql({ statement: query, params });
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
- return this.client.sql({ statement: query, params });
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("Transactions are not supported");
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
- XataSession[_b] = "VercelPgSession";
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 session = new XataSession(client, dialect, schema, { logger });
157
- return new pgCore.PgDatabase(dialect, session, schema);
158
- }
159
-
160
- function buildColumnType(column) {
161
- switch (column.type) {
162
- case "string":
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.XataPreparedQuery = XataPreparedQuery;
207
- exports.XataSession = XataSession;
208
- exports.buildModels = buildModels;
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
@@ -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":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PgPreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport interface QueryResults<ArrayMode extends 'json' | 'array'> {\n rowCount: number;\n rows: ArrayMode extends 'array' ? any[][] : Record<string, any>[];\n rowAsArray: ArrayMode extends 'array' ? true : false;\n}\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private _isResponseInArrayMode: boolean,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super(query);\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n\n this.logger.logQuery(this.query.sql, params);\n\n const { fields, client, query, customResultMapper } = this;\n\n if (!fields && !customResultMapper) {\n const result = await this.client.sql<Record<string, any>>({ statement: query.sql, params });\n return { rowCount: result.records.length, rows: result.records, rowAsArray: false };\n }\n\n const { rows, warning } = await client.sql({ statement: query.sql, params, responseType: 'array' });\n if (warning) console.warn(warning);\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(rows as unknown[][])\n : rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params, responseType: 'array' }).then((result) => result.rows);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues);\n this.logger.logQuery(this.query.sql, params);\n return this.client.sql({ statement: this.query.sql, params }).then((result) => result.records);\n }\n\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n isResponseInArrayMode: boolean,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PgPreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query,\n this.logger,\n fields,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<QueryResults<'array'>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params, responseType: 'array' });\n\n return {\n rowCount: result.rows.length,\n rows: result.rows,\n rowAsArray: true\n };\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<QueryResults<'json'>> {\n const result = await this.client.sql<Record<string, any>>({ statement: query, params });\n\n return {\n rowCount: result.records.length,\n rows: result.records,\n rowAsArray: false\n };\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n // 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 { 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, QueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
6
4
 
7
- type QueryResult<T = Record<string, unknown>> = {
8
- records: 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 QueryResultHKT {
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 };