@xata.io/drizzle 0.0.0-alpha.v9c437d01e38be209775e0637bab48e12c0f21586 → 0.0.0-alpha.v9ce1855994c20ee46a0618b1edf0ad2d0b991308

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,14 @@
1
1
 
2
- > @xata.io/drizzle@0.0.16 build /home/runner/work/client-ts/client-ts/packages/plugin-client-drizzle
2
+ > @xata.io/drizzle@0.0.18 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/http/session.ts", "src/http/driver.ts" and "src/shared/utils.ts")
10
- drizzle-orm/pg-core (imported by "src/http/session.ts" and "src/http/driver.ts")
11
- created dist/index.cjs, dist/index.mjs in 442ms
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/session.ts" and "src/generate.ts")
11
+ created dist/index.cjs, dist/index.mjs in 452ms
12
12
  
13
13
  src/index.ts → dist/index.d.ts...
14
- created dist/index.d.ts in 5.9s
14
+ created dist/index.d.ts in 5.7s
package/CHANGELOG.md CHANGED
@@ -1,13 +1,31 @@
1
1
  # @xata.io/drizzle
2
2
 
3
- ## 0.0.0-alpha.v9c437d01e38be209775e0637bab48e12c0f21586
3
+ ## 0.0.0-alpha.v9ce1855994c20ee46a0618b1edf0ad2d0b991308
4
+
5
+ ### Major Changes
6
+
7
+ - [#1371](https://github.com/xataio/client-ts/pull/1371) [`1193662`](https://github.com/xataio/client-ts/commit/11936623b65c08190e5367beac094371fdc54e46) Thanks [@SferaDev](https://github.com/SferaDev)! - Version 1.0
4
8
 
5
9
  ### Patch Changes
6
10
 
7
11
  - Force canary build
8
12
 
9
- - Updated dependencies [[`212b53d`](https://github.com/xataio/client-ts/commit/212b53d07498def0d2ed8942691eff982e448969), [`9fd8c42`](https://github.com/xataio/client-ts/commit/9fd8c428d71b476f1951123c6cba5e803b983e54)]:
10
- - @xata.io/client@0.0.0-alpha.v9c437d01e38be209775e0637bab48e12c0f21586
13
+ - Updated dependencies [[`ef72862`](https://github.com/xataio/client-ts/commit/ef72862422aa258c01c893f93e9f5a18d89c482b), [`1193662`](https://github.com/xataio/client-ts/commit/11936623b65c08190e5367beac094371fdc54e46)]:
14
+ - @xata.io/client@0.0.0-alpha.v9ce1855994c20ee46a0618b1edf0ad2d0b991308
15
+
16
+ ## 0.0.18
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [[`e8db1cd`](https://github.com/xataio/client-ts/commit/e8db1cd394ccbed32403548bf9d09a5c3973d850)]:
21
+ - @xata.io/client@0.29.2
22
+
23
+ ## 0.0.17
24
+
25
+ ### Patch Changes
26
+
27
+ - 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)]:
28
+ - @xata.io/client@0.29.1
11
29
 
12
30
  ## 0.0.16
13
31
 
package/dist/index.cjs CHANGED
@@ -45,44 +45,83 @@ 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
+ };
48
51
 
49
- var _a$1, _b, _c;
50
- class XataHttpPreparedQuery extends pgCore.PreparedQuery {
52
+ var _a, _b;
53
+ class XataPreparedQuery extends pgCore.PreparedQuery {
51
54
  constructor(client, queryString, params, logger, fields, name, customResultMapper) {
52
55
  super();
53
56
  this.client = client;
54
- this.queryString = queryString;
55
57
  this.params = params;
56
58
  this.logger = logger;
57
59
  this.fields = fields;
58
- this.name = name;
59
60
  this.customResultMapper = customResultMapper;
61
+ this.query = {
62
+ name,
63
+ statement: queryString
64
+ };
60
65
  }
61
66
  async execute(placeholderValues = {}) {
62
67
  const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
63
- this.logger.logQuery(this.queryString, params);
64
- const { fields, client, queryString, customResultMapper } = this;
65
- if (!fields && !customResultMapper) {
66
- return client.sql({ statement: queryString, params });
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
+ );
85
+ if (warning)
86
+ console.warn(warning);
87
+ const internalColumnNames = ["xata.version", "xata.createdAt", "xata.updatedAt", "xata.deletedAt"];
88
+ const rows = records.map(
89
+ (record) => fields.map((field) => {
90
+ const pathAsString = field.path.join(".");
91
+ if (internalColumnNames.includes(pathAsString)) {
92
+ const [namespaceXata, namespaceColumn] = pathAsString.split(".");
93
+ return record[namespaceXata][namespaceColumn];
94
+ }
95
+ return record[pathAsString];
96
+ })
97
+ );
98
+ if (this.customResultMapper) {
99
+ return this.customResultMapper(rows);
67
100
  }
68
- const result = await client.sql({ statement: queryString, params });
69
- const joinsNotNullableMap = this.joinsNotNullableMap;
70
- return customResultMapper ? customResultMapper(result.records) : result.records.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
101
+ return rows.map((row) => mapResultRow(fields, row, void 0));
71
102
  }
72
- all(placeholderValues = {}) {
103
+ async all(placeholderValues = {}) {
73
104
  const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
74
- this.logger.logQuery(this.queryString, params);
75
- return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);
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;
76
111
  }
77
- values(placeholderValues = {}) {
112
+ async values(placeholderValues = {}) {
78
113
  const params = drizzleOrm.fillPlaceholders(this.params, placeholderValues);
79
- this.logger.logQuery(this.queryString, params);
80
- return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);
114
+ this.logger.logQuery(this.query.statement, params);
115
+ const { records } = await this.client.sql({
116
+ statement: this.query.statement,
117
+ params
118
+ });
119
+ return records;
81
120
  }
82
121
  }
83
- _a$1 = drizzleOrm.entityKind;
84
- XataHttpPreparedQuery[_a$1] = "XataHttpPreparedQuery";
85
- class XataHttpSession extends pgCore.PgSession {
122
+ _a = drizzleOrm.entityKind;
123
+ XataPreparedQuery[_a] = "VercelPgPreparedQuery";
124
+ class XataSession extends pgCore.PgSession {
86
125
  constructor(client, dialect, schema, options = {}) {
87
126
  super(dialect);
88
127
  this.client = client;
@@ -91,56 +130,22 @@ class XataHttpSession extends pgCore.PgSession {
91
130
  this.logger = options.logger ?? new drizzleOrm.NoopLogger();
92
131
  }
93
132
  prepareQuery(query, fields, name, customResultMapper) {
94
- return new XataHttpPreparedQuery(
95
- this.client,
96
- query.sql,
97
- query.params,
98
- this.logger,
99
- fields,
100
- name,
101
- customResultMapper
102
- );
133
+ return new XataPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, customResultMapper);
103
134
  }
104
135
  async query(query, params) {
105
136
  this.logger.logQuery(query, params);
106
- const result = await this.client.sql({ statement: query, params });
107
- return result;
137
+ return await this.client.sql({ statement: query, params });
108
138
  }
109
139
  async queryObjects(query, params) {
110
140
  return this.client.sql({ statement: query, params });
111
141
  }
112
- async transaction(_transaction, _config = {}) {
113
- throw new Error("No transactions support in xata-http driver");
142
+ async transaction(_transaction, _config) {
143
+ throw new Error("Transactions are not supported");
114
144
  }
115
145
  }
116
146
  _b = drizzleOrm.entityKind;
117
- XataHttpSession[_b] = "XataHttpSession";
118
- class XataTransaction extends pgCore.PgTransaction {
119
- async transaction(_transaction) {
120
- throw new Error("No transactions support in xata-http driver");
121
- }
122
- }
123
- _c = drizzleOrm.entityKind;
124
- XataTransaction[_c] = "XataHttpTransaction";
147
+ XataSession[_b] = "VercelPgSession";
125
148
 
126
- var _a;
127
- class XataHttpDriver {
128
- constructor(client, dialect, options = {}) {
129
- this.client = client;
130
- this.dialect = dialect;
131
- this.options = options;
132
- this.initMappers();
133
- }
134
- createSession(schema) {
135
- return new XataHttpSession(this.client, this.dialect, schema, {
136
- logger: this.options.logger
137
- });
138
- }
139
- initMappers() {
140
- }
141
- }
142
- _a = drizzleOrm.entityKind;
143
- XataHttpDriver[_a] = "XataDriver";
144
149
  function drizzle(client, config = {}) {
145
150
  const dialect = new pgCore.PgDialect();
146
151
  let logger;
@@ -158,14 +163,57 @@ function drizzle(client, config = {}) {
158
163
  tableNamesMap: tablesConfig.tableNamesMap
159
164
  };
160
165
  }
161
- const driver = new XataHttpDriver(client, dialect, { logger });
162
- const session = driver.createSession(schema);
166
+ const session = new XataSession(client, dialect, schema, { logger });
163
167
  return new pgCore.PgDatabase(dialect, session, schema);
164
168
  }
165
169
 
166
- exports.XataHttpDriver = XataHttpDriver;
167
- exports.XataHttpPreparedQuery = XataHttpPreparedQuery;
168
- exports.XataHttpSession = XataHttpSession;
169
- exports.XataTransaction = XataTransaction;
170
+ function buildColumnType(column) {
171
+ switch (column.type) {
172
+ case "string":
173
+ case "text":
174
+ case "email":
175
+ case "link":
176
+ return pgCore.text(column.name);
177
+ case "bool":
178
+ return pgCore.boolean(column.name);
179
+ case "int":
180
+ return pgCore.integer(column.name);
181
+ case "float":
182
+ return pgCore.decimal(column.name);
183
+ case "datetime":
184
+ return pgCore.date(column.name);
185
+ case "multiple":
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);
213
+ }
214
+
215
+ exports.XataPreparedQuery = XataPreparedQuery;
216
+ exports.XataSession = XataSession;
217
+ exports.buildModels = buildModels;
170
218
  exports.drizzle = drizzle;
171
219
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/shared/utils.ts","../src/http/session.ts","../src/http/driver.ts"],"sourcesContent":["import { AnyColumn, Column, DriverValueDecoder, SQL, SelectedFieldsOrdered, getTableName, is } from 'drizzle-orm';\n\nexport function mapResultRow<TResult>(\n columns: SelectedFieldsOrdered<AnyColumn>,\n row: unknown[],\n joinsNotNullableMap: Record<string, boolean> | undefined\n): TResult {\n // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n const nullifyMap: Record<string, string | false> = {};\n\n const result = columns.reduce<Record<string, any>>((result, { path, field }, columnIndex) => {\n let decoder: DriverValueDecoder<unknown, unknown>;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = (field as any).decoder;\n } else {\n decoder = (field.sql as any).decoder;\n }\n let node = result;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex]!;\n const value = (node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue));\n\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0]!;\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (\n typeof nullifyMap[objectName] === 'string' &&\n nullifyMap[objectName] !== getTableName(field.table)\n ) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result;\n }, {});\n\n // Nullify all nested objects from nullifyMap that are nullable\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n\n return result as TResult;\n}\n","import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';\nimport {\n Logger,\n NoopLogger,\n Query,\n RelationalSchemaConfig,\n SelectedFieldsOrdered,\n TablesRelationalConfig,\n entityKind,\n fillPlaceholders\n} from 'drizzle-orm';\nimport {\n PgColumn,\n PgDialect,\n PgSession,\n PgTransaction,\n PgTransactionConfig,\n PreparedQuery,\n PreparedQueryConfig,\n QueryResultHKT\n} from 'drizzle-orm/pg-core';\nimport { mapResultRow } from '../shared/utils';\n\nexport type XataHttpClient = {\n sql: SQLPluginResult;\n};\n\nexport class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {\n static readonly [entityKind]: string = 'XataHttpPreparedQuery';\n\n constructor(\n private client: XataHttpClient,\n private queryString: string,\n private params: unknown[],\n private logger: Logger,\n private fields: SelectedFieldsOrdered<PgColumn> | undefined,\n private name: string | undefined,\n private customResultMapper?: (rows: unknown[][]) => T['execute']\n ) {\n super();\n }\n\n async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n\n this.logger.logQuery(this.queryString, params);\n\n const { fields, client, queryString, customResultMapper } = this;\n if (!fields && !customResultMapper) {\n return client.sql({ statement: queryString, params });\n }\n\n const result = await client.sql({ statement: queryString, params });\n\n // @ts-expect-error joinsNotNullableMap is internal\n const joinsNotNullableMap = this.joinsNotNullableMap;\n\n return customResultMapper\n ? customResultMapper(result.records as unknown[][])\n : result.records.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n }\n\n all(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);\n }\n\n values(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n return this.client.sql({ statement: this.queryString, params }).then((result) => result.records);\n }\n}\n\nexport interface XataHttpSessionOptions {\n logger?: Logger;\n}\n\nexport class XataHttpSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpSession';\n\n private logger: Logger;\n\n constructor(\n private client: XataHttpClient,\n dialect: PgDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n private options: XataHttpSessionOptions = {}\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n query: Query,\n fields: SelectedFieldsOrdered<PgColumn> | undefined,\n name: string | undefined,\n customResultMapper?: (rows: unknown[][]) => T['execute']\n ): PreparedQuery<T> {\n return new XataHttpPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n fields,\n name,\n customResultMapper\n );\n }\n\n async query(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>> {\n this.logger.logQuery(query, params);\n const result = await this.client.sql({ statement: query, params });\n return result;\n }\n\n async queryObjects(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>> {\n return this.client.sql({ statement: query, params });\n }\n\n override async transaction<T>(\n _transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _config: PgTransactionConfig = {}\n ): Promise<T> {\n throw new Error('No transactions support in xata-http driver');\n }\n}\n\nexport class XataTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig\n> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'XataHttpTransaction';\n\n override async transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n throw new Error('No transactions support in xata-http driver');\n }\n}\n\nexport interface XataHttpQueryResultHKT extends QueryResultHKT {\n type: SQLQueryResult<unknown>;\n}\n","import {\n DefaultLogger,\n DrizzleConfig,\n Logger,\n RelationalSchemaConfig,\n TablesRelationalConfig,\n createTableRelationsHelpers,\n entityKind,\n extractTablesRelationalConfig\n} from 'drizzle-orm';\nimport { XataHttpSession, type XataHttpClient, type XataHttpQueryResultHKT } from './session.js';\nimport { PgDatabase, PgDialect } from 'drizzle-orm/pg-core';\n\nexport interface XataDriverOptions {\n logger?: Logger;\n}\n\nexport class XataHttpDriver {\n static readonly [entityKind]: string = 'XataDriver';\n\n constructor(private client: XataHttpClient, private dialect: PgDialect, private options: XataDriverOptions = {}) {\n this.initMappers();\n }\n\n createSession(\n schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined\n ): XataHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n return new XataHttpSession(this.client, this.dialect, schema, {\n logger: this.options.logger\n });\n }\n\n initMappers() {\n // TODO: Add custom type parsers\n }\n}\n\nexport type XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<\n XataHttpQueryResultHKT,\n TSchema\n>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n client: XataHttpClient,\n config: DrizzleConfig<TSchema> = {}\n): XataHttpDatabase<TSchema> {\n const dialect = new PgDialect();\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n\n let schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(config.schema, createTableRelationsHelpers);\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n\n const driver = new XataHttpDriver(client, dialect, { logger });\n const session = driver.createSession(schema);\n\n return new PgDatabase(dialect, session, schema) as XataHttpDatabase<TSchema>;\n}\n"],"names":["result","is","Column","SQL","getTableName","_a","PreparedQuery","fillPlaceholders","entityKind","PgSession","NoopLogger","PgTransaction","PgDialect","DefaultLogger","extractTablesRelationalConfig","createTableRelationsHelpers","PgDatabase"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/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 const internalColumnNames = ['xata.version', 'xata.createdAt', 'xata.updatedAt', 'xata.deletedAt'];\n const rows = records.map((record) =>\n fields.map((field) => {\n const pathAsString = field.path.join('.');\n if (internalColumnNames.includes(pathAsString)) {\n const [namespaceXata, namespaceColumn]: [string, string] = pathAsString.split('.');\n return (record[namespaceXata] as Record<string, any>)[namespaceColumn];\n }\n return record[pathAsString];\n })\n );\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 '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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"}
package/dist/index.d.ts CHANGED
@@ -1,60 +1,87 @@
1
- import { entityKind, Logger, SelectedFieldsOrdered, TablesRelationalConfig, RelationalSchemaConfig, Query, DrizzleConfig } from 'drizzle-orm';
2
- import { SQLPluginResult, SQLQueryResult } from '@xata.io/client';
3
- import { PreparedQueryConfig, PreparedQuery, PgColumn, PgSession, PgDialect, PgTransactionConfig, PgTransaction, QueryResultHKT, PgDatabase } from 'drizzle-orm/pg-core';
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';
4
6
 
5
- type XataHttpClient = {
6
- sql: SQLPluginResult;
7
+ type QueryResult<T = Record<string, unknown>> = {
8
+ records: T[];
9
+ warning?: string;
7
10
  };
8
- declare class XataHttpPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {
11
+ declare class XataPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {
9
12
  private client;
10
- private queryString;
11
13
  private params;
12
14
  private logger;
13
15
  private fields;
14
- private name;
15
16
  private customResultMapper?;
16
17
  static readonly [entityKind]: string;
17
- constructor(client: XataHttpClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, customResultMapper?: ((rows: unknown[][]) => T['execute']) | undefined);
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);
18
20
  execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
19
21
  all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
20
22
  values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
21
23
  }
22
- interface XataHttpSessionOptions {
24
+ interface XataSessionOptions {
23
25
  logger?: Logger;
24
26
  }
25
- declare class XataHttpSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<XataHttpQueryResultHKT, TFullSchema, TSchema> {
27
+ declare class XataSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<XataQueryResultHKT, TFullSchema, TSchema> {
26
28
  private client;
27
29
  private schema;
28
30
  private options;
29
31
  static readonly [entityKind]: string;
30
32
  private logger;
31
- constructor(client: XataHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: XataHttpSessionOptions);
32
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered<PgColumn> | undefined, name: string | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']): PreparedQuery<T>;
33
- query(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>>;
34
- queryObjects(query: string, params: unknown[]): Promise<SQLQueryResult<unknown>>;
35
- transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>, _config?: PgTransactionConfig): Promise<T>;
36
- }
37
- declare class XataTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgTransaction<XataHttpQueryResultHKT, TFullSchema, TSchema> {
38
- static readonly [entityKind]: string;
39
- transaction<T>(_transaction: (tx: XataTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
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>;
40
38
  }
41
- interface XataHttpQueryResultHKT extends QueryResultHKT {
42
- type: SQLQueryResult<unknown>;
39
+ interface XataQueryResultHKT extends QueryResultHKT {
40
+ type: QueryResult<Assume<this['row'], Record<string, unknown>>[]>;
43
41
  }
44
42
 
45
- interface XataDriverOptions {
46
- logger?: Logger;
47
- }
48
- declare class XataHttpDriver {
49
- private client;
50
- private dialect;
51
- private options;
52
- static readonly [entityKind]: string;
53
- constructor(client: XataHttpClient, dialect: PgDialect, options?: XataDriverOptions);
54
- createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): XataHttpSession<Record<string, unknown>, TablesRelationalConfig>;
55
- initMappers(): void;
56
- }
57
- type XataHttpDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<XataHttpQueryResultHKT, TSchema>;
58
- declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: XataHttpClient, config?: DrizzleConfig<TSchema>): XataHttpDatabase<TSchema>;
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>;
59
86
 
60
- export { type XataDriverOptions, type XataHttpClient, type XataHttpDatabase, XataHttpDriver, XataHttpPreparedQuery, type XataHttpQueryResultHKT, XataHttpSession, type XataHttpSessionOptions, XataTransaction, drizzle };
87
+ export { type DrizzleModels, type XataClient, type XataDatabase, XataPreparedQuery, type XataQueryResultHKT, XataSession, type XataSessionOptions, buildModels, drizzle };