@zauso-ai/capstan-db 1.0.0-beta.7 → 1.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -1,9 +1,6 @@
1
+ import type { DatabaseRuntime } from "./runtime.js";
1
2
  import type { DatabaseConfig } from "./types.js";
2
- export interface DatabaseInstance {
3
- /** The Drizzle ORM database instance. */
4
- db: unknown;
5
- /** Close the underlying database connection. */
6
- close: () => void;
3
+ export interface DatabaseInstance extends DatabaseRuntime {
7
4
  }
8
5
  /**
9
6
  * Create a Drizzle database instance backed by better-sqlite3 (SQLite),
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASjD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBtF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAwC,MAAM,cAAc,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASjD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAM5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBtF"}
package/dist/client.js CHANGED
@@ -1,9 +1,13 @@
1
+ import { createDatabaseRuntime } from "./runtime.js";
1
2
  // Helper to dynamically import optional peer dependencies without TypeScript
2
3
  // trying to resolve them at compile time (they may not be installed).
3
4
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
5
  async function importPeer(specifier) {
5
6
  return import(specifier);
6
7
  }
8
+ function normalizeParams(params) {
9
+ return params ?? [];
10
+ }
7
11
  /**
8
12
  * Create a Drizzle database instance backed by better-sqlite3 (SQLite),
9
13
  * node-postgres (PostgreSQL), or mysql2 (MySQL).
@@ -86,12 +90,36 @@ async function createSqliteDatabase(url) {
86
90
  // Enable WAL mode for better concurrent read performance.
87
91
  sqlite.pragma("journal_mode = WAL");
88
92
  const db = drizzle({ client: sqlite });
89
- return {
90
- db,
91
- close() {
92
- sqlite.close();
93
+ const adapter = {
94
+ provider: "sqlite",
95
+ async query(sql, params) {
96
+ const statement = sqlite.prepare(sql);
97
+ return statement.all(...normalizeParams(params));
98
+ },
99
+ async execute(sql, params) {
100
+ const statement = sqlite.prepare(sql);
101
+ const normalized = sql.trim().toUpperCase();
102
+ if (normalized.startsWith("SELECT") || normalized.includes(" RETURNING ")) {
103
+ const rows = statement.all(...normalizeParams(params));
104
+ return { affectedRows: rows.length, rows };
105
+ }
106
+ const result = statement.run(...normalizeParams(params));
107
+ return { affectedRows: Number(result.changes ?? 0) };
108
+ },
109
+ async transaction(fn) {
110
+ sqlite.exec("BEGIN");
111
+ try {
112
+ const result = await fn(adapter);
113
+ sqlite.exec("COMMIT");
114
+ return result;
115
+ }
116
+ catch (error) {
117
+ sqlite.exec("ROLLBACK");
118
+ throw error;
119
+ }
93
120
  },
94
121
  };
122
+ return createDatabaseRuntime(db, "sqlite", () => sqlite.close(), adapter);
95
123
  }
96
124
  // ---------------------------------------------------------------------------
97
125
  // PostgreSQL (node-postgres / pg)
@@ -119,12 +147,54 @@ async function createPostgresDatabase(url) {
119
147
  }
120
148
  const pool = new Pool({ connectionString: url });
121
149
  const db = drizzle({ client: pool });
122
- return {
123
- db,
124
- close() {
125
- pool.end();
150
+ const rootAdapter = {
151
+ provider: "postgres",
152
+ async query(sql, params) {
153
+ const result = await pool.query(sql, normalizeParams(params));
154
+ return result.rows;
155
+ },
156
+ async execute(sql, params) {
157
+ const result = await pool.query(sql, normalizeParams(params));
158
+ return {
159
+ affectedRows: result.rowCount ?? result.rows.length,
160
+ rows: result.rows,
161
+ };
162
+ },
163
+ async transaction(fn) {
164
+ const client = await pool.connect();
165
+ const adapter = {
166
+ provider: "postgres",
167
+ async query(statement, params) {
168
+ const result = await client.query(statement, normalizeParams(params));
169
+ return result.rows;
170
+ },
171
+ async execute(statement, params) {
172
+ const result = await client.query(statement, normalizeParams(params));
173
+ return {
174
+ affectedRows: result.rowCount ?? result.rows.length,
175
+ rows: result.rows,
176
+ };
177
+ },
178
+ async transaction(innerFn) {
179
+ return innerFn(adapter);
180
+ },
181
+ };
182
+ await client.query("BEGIN");
183
+ try {
184
+ const result = await fn(adapter);
185
+ await client.query("COMMIT");
186
+ return result;
187
+ }
188
+ catch (error) {
189
+ await client.query("ROLLBACK");
190
+ throw error;
191
+ }
192
+ finally {
193
+ client.release();
194
+ }
126
195
  },
127
196
  };
197
+ return createDatabaseRuntime(db, "postgres", () => pool.end(), rootAdapter);
128
198
  }
129
199
  // ---------------------------------------------------------------------------
130
200
  // MySQL (mysql2)
@@ -152,13 +222,61 @@ async function createMysqlDatabase(url) {
152
222
  }
153
223
  const pool = createPool({ uri: url });
154
224
  const db = drizzle({ client: pool });
155
- return {
156
- db,
157
- close() {
158
- // The interface is synchronous; fire-and-forget the async pool shutdown.
159
- void pool.end();
225
+ function normalizeMysqlRows(result) {
226
+ return Array.isArray(result) ? result : [];
227
+ }
228
+ const rootAdapter = {
229
+ provider: "mysql",
230
+ async query(sql, params) {
231
+ const [rows] = await pool.query(sql, normalizeParams(params));
232
+ return normalizeMysqlRows(rows);
233
+ },
234
+ async execute(sql, params) {
235
+ const [result] = await pool.query(sql, normalizeParams(params));
236
+ if (Array.isArray(result)) {
237
+ return { affectedRows: result.length, rows: result };
238
+ }
239
+ const payload = result;
240
+ return { affectedRows: payload.affectedRows ?? 0 };
241
+ },
242
+ async transaction(fn) {
243
+ const connection = await pool.getConnection();
244
+ const adapter = {
245
+ provider: "mysql",
246
+ async query(statement, params) {
247
+ const [rows] = await connection.query(statement, normalizeParams(params));
248
+ return normalizeMysqlRows(rows);
249
+ },
250
+ async execute(statement, params) {
251
+ const [result] = await connection.query(statement, normalizeParams(params));
252
+ if (Array.isArray(result)) {
253
+ return { affectedRows: result.length, rows: result };
254
+ }
255
+ const payload = result;
256
+ return { affectedRows: payload.affectedRows ?? 0 };
257
+ },
258
+ async transaction(innerFn) {
259
+ return innerFn(adapter);
260
+ },
261
+ };
262
+ await connection.beginTransaction();
263
+ try {
264
+ const result = await fn(adapter);
265
+ await connection.commit();
266
+ return result;
267
+ }
268
+ catch (error) {
269
+ await connection.rollback();
270
+ throw error;
271
+ }
272
+ finally {
273
+ connection.release();
274
+ }
160
275
  },
161
276
  };
277
+ return createDatabaseRuntime(db, "mysql", () => {
278
+ void pool.end();
279
+ }, rootAdapter);
162
280
  }
163
281
  // ---------------------------------------------------------------------------
164
282
  // libSQL / Turso (@libsql/client)
@@ -186,11 +304,32 @@ async function createLibsqlDatabase(url) {
186
304
  }
187
305
  const client = createClient({ url });
188
306
  const db = drizzle({ client });
189
- return {
190
- db,
191
- close() {
192
- client.close();
307
+ const adapter = {
308
+ provider: "libsql",
309
+ async query(sql, params) {
310
+ const result = await client.execute({ sql, args: normalizeParams(params) });
311
+ return result.rows;
312
+ },
313
+ async execute(sql, params) {
314
+ const result = await client.execute({ sql, args: normalizeParams(params) });
315
+ return {
316
+ affectedRows: Number(result.rowsAffected ?? result.rows.length ?? 0),
317
+ rows: result.rows,
318
+ };
319
+ },
320
+ async transaction(fn) {
321
+ await client.execute("BEGIN");
322
+ try {
323
+ const result = await fn(adapter);
324
+ await client.execute("COMMIT");
325
+ return result;
326
+ }
327
+ catch (error) {
328
+ await client.execute("ROLLBACK");
329
+ throw error;
330
+ }
193
331
  },
194
332
  };
333
+ return createDatabaseRuntime(db, "libsql", () => client.close(), adapter);
195
334
  }
196
335
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/crud.d.ts CHANGED
@@ -1,9 +1,21 @@
1
+ import type { DatabaseRuntime, FindManyOptions, ModelRepository } from "./runtime.js";
2
+ import type { PrepareWriteOptions } from "./write.js";
1
3
  import type { ModelDefinition } from "./types.js";
2
4
  export interface CrudRouteFiles {
3
5
  /** File path relative to app/routes/, e.g. "tickets/index.api.ts" */
4
6
  path: string;
5
7
  content: string;
6
8
  }
9
+ export interface CrudQueryOptions extends FindManyOptions {
10
+ }
11
+ export interface CrudRuntime<M extends ModelDefinition = ModelDefinition> {
12
+ repository: ModelRepository<M>;
13
+ list: (options?: CrudQueryOptions) => Promise<Array<Record<string, unknown>>>;
14
+ get: (id: unknown, options?: Omit<CrudQueryOptions, "where" | "limit" | "offset">) => Promise<Record<string, unknown> | null>;
15
+ create: (input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<Record<string, unknown>>;
16
+ update: (id: unknown, input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<Record<string, unknown> | null>;
17
+ remove: (id: unknown) => Promise<boolean>;
18
+ }
7
19
  /**
8
20
  * Naive English pluraliser — sufficient for model-name pluralisation.
9
21
  *
@@ -24,4 +36,6 @@ export declare function pluralize(word: string): string;
24
36
  * 2. `<plural>/[id].api.ts` — GET (by id) + PUT (update) + DELETE
25
37
  */
26
38
  export declare function generateCrudRoutes(model: ModelDefinition): CrudRouteFiles[];
39
+ export declare function createCrudRepository<M extends ModelDefinition>(database: DatabaseRuntime, model: M | string): ModelRepository<M>;
40
+ export declare function createCrudRuntime<M extends ModelDefinition>(database: DatabaseRuntime, model: M | string): CrudRuntime<M>;
27
41
  //# sourceMappingURL=crud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAMnE,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0B9C;AAiHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,EAAE,CA6G3E"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAOnE,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACtE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9H,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5G,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAChI,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C;AAMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAsHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,EAAE,CAgH3E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAC5D,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,CAAC,GAAG,MAAM,GAChB,eAAe,CAAC,CAAC,CAAC,CAEpB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,eAAe,EACzD,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,CAAC,GAAG,MAAM,GAChB,WAAW,CAAC,CAAC,CAAC,CAUhB"}
package/dist/crud.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { autoFieldNames, findPrimaryKeyField, pluralizeModelName } from "./naming.js";
1
2
  // ---------------------------------------------------------------------------
2
3
  // Pluralisation helper
3
4
  // ---------------------------------------------------------------------------
@@ -10,24 +11,7 @@
10
11
  * bus -> buses
11
12
  */
12
13
  export function pluralize(word) {
13
- if (word.length === 0)
14
- return word;
15
- const lower = word.toLowerCase();
16
- // Words ending in consonant + y → ies
17
- if (lower.endsWith("y") &&
18
- lower.length > 1 &&
19
- !"aeiou".includes(lower[lower.length - 2])) {
20
- return word.slice(0, -1) + "ies";
21
- }
22
- // Words ending in s, sh, ch, x, z → es
23
- if (lower.endsWith("s") ||
24
- lower.endsWith("sh") ||
25
- lower.endsWith("ch") ||
26
- lower.endsWith("x") ||
27
- lower.endsWith("z")) {
28
- return word + "es";
29
- }
30
- return word + "s";
14
+ return pluralizeModelName(word);
31
15
  }
32
16
  // ---------------------------------------------------------------------------
33
17
  // Field → Zod mapping
@@ -62,6 +46,11 @@ function fieldToZod(field) {
62
46
  case "json":
63
47
  base = "z.unknown()";
64
48
  break;
49
+ case "vector":
50
+ base = field.dimensions !== undefined
51
+ ? `z.array(z.number()).length(${field.dimensions})`
52
+ : "z.array(z.number())";
53
+ break;
65
54
  default:
66
55
  base = "z.unknown()";
67
56
  }
@@ -134,16 +123,11 @@ function buildZodObject(fields, options) {
134
123
  * 2. `<plural>/[id].api.ts` — GET (by id) + PUT (update) + DELETE
135
124
  */
136
125
  export function generateCrudRoutes(model) {
137
- const plural = pluralize(model.name.toLowerCase());
126
+ const plural = pluralize(model.name);
138
127
  const resourceName = model.name;
139
- // Determine which fields are auto-generated (id, updatedAt).
140
- const autoFields = new Set();
141
- for (const [name, field] of Object.entries(model.fields)) {
142
- if (field.autoId)
143
- autoFields.add(name);
144
- if (field.updatedAt)
145
- autoFields.add(name);
146
- }
128
+ const serializedModel = JSON.stringify(model, null, 2);
129
+ const primaryKeyField = findPrimaryKeyField(model) ?? "id";
130
+ const autoFields = autoFieldNames(model);
147
131
  // ----- index.api.ts (list + create) -----
148
132
  const createSchema = buildZodObject(model.fields, { exclude: autoFields });
149
133
  const tableName = plural;
@@ -151,11 +135,13 @@ export function generateCrudRoutes(model) {
151
135
  // This file was generated by @zauso-ai/capstan-db generateCrudRoutes().
152
136
 
153
137
  import { defineAPI } from "@zauso-ai/capstan-core";
138
+ import { prepareCreateData } from "@zauso-ai/capstan-db";
154
139
  import { z } from "zod";
155
140
  import { db } from "../../db.js";
156
141
  import { ${tableName} } from "../../db/schema.js";
157
142
 
158
143
  export const meta = { resource: "${resourceName}" };
144
+ const model = ${serializedModel};
159
145
 
160
146
  const CreateInput = ${createSchema};
161
147
 
@@ -176,7 +162,8 @@ export const POST = defineAPI({
176
162
  policy: "requireAuth",
177
163
  input: CreateInput,
178
164
  handler: async ({ input, ctx }) => {
179
- const result = await db.insert(${tableName}).values(input).returning();
165
+ const values = await prepareCreateData(model, input) as typeof ${tableName}.$inferInsert;
166
+ const result = await db.insert(${tableName}).values(values).returning();
180
167
  return { data: result[0], created: true };
181
168
  },
182
169
  });
@@ -190,12 +177,14 @@ export const POST = defineAPI({
190
177
  // This file was generated by @zauso-ai/capstan-db generateCrudRoutes().
191
178
 
192
179
  import { defineAPI } from "@zauso-ai/capstan-core";
180
+ import { prepareUpdateData } from "@zauso-ai/capstan-db";
193
181
  import { z } from "zod";
194
182
  import { eq } from "drizzle-orm";
195
183
  import { db } from "../../db.js";
196
184
  import { ${tableName} } from "../../db/schema.js";
197
185
 
198
186
  export const meta = { resource: "${resourceName}" };
187
+ const model = ${serializedModel};
199
188
 
200
189
  const UpdateInput = ${updateSchema};
201
190
 
@@ -204,7 +193,7 @@ export const GET = defineAPI({
204
193
  resource: "${resourceName}",
205
194
  description: "Get a ${resourceName} by id",
206
195
  handler: async ({ input, ctx, params }) => {
207
- const items = await db.select().from(${tableName}).where(eq(${tableName}.id, params.id));
196
+ const items = await db.select().from(${tableName}).where(eq(${tableName}.${primaryKeyField}, params.id));
208
197
  return { data: items[0] ?? null };
209
198
  },
210
199
  });
@@ -216,7 +205,8 @@ export const PUT = defineAPI({
216
205
  policy: "requireAuth",
217
206
  input: UpdateInput,
218
207
  handler: async ({ input, ctx, params }) => {
219
- const result = await db.update(${tableName}).set(input).where(eq(${tableName}.id, params.id)).returning();
208
+ const values = await prepareUpdateData(model, input) as Partial<typeof ${tableName}.$inferInsert>;
209
+ const result = await db.update(${tableName}).set(values).where(eq(${tableName}.${primaryKeyField}, params.id)).returning();
220
210
  return { data: result[0], updated: true };
221
211
  },
222
212
  });
@@ -227,7 +217,7 @@ export const DELETE = defineAPI({
227
217
  description: "Delete a ${resourceName}",
228
218
  policy: "requireAuth",
229
219
  handler: async ({ ctx, params }) => {
230
- await db.delete(${tableName}).where(eq(${tableName}.id, params.id));
220
+ await db.delete(${tableName}).where(eq(${tableName}.${primaryKeyField}, params.id));
231
221
  return { deleted: true };
232
222
  },
233
223
  });
@@ -237,4 +227,18 @@ export const DELETE = defineAPI({
237
227
  { path: `${plural}/[id].api.ts`, content: idContent },
238
228
  ];
239
229
  }
230
+ export function createCrudRepository(database, model) {
231
+ return database.model(model);
232
+ }
233
+ export function createCrudRuntime(database, model) {
234
+ const repository = createCrudRepository(database, model);
235
+ return {
236
+ repository,
237
+ list: (options) => repository.findMany(options),
238
+ get: (id, options) => repository.findById(id, options),
239
+ create: (input, options) => repository.create(input, options),
240
+ update: (id, input, options) => repository.update(id, input, options),
241
+ remove: (id) => repository.delete(id),
242
+ };
243
+ }
240
244
  //# sourceMappingURL=crud.js.map
package/dist/crud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { DbProvider, FieldDefinition, ScalarType } from "./types.js";
2
+ export interface ProviderMeta {
3
+ tableBuilder: string;
4
+ importModule: string;
5
+ nowDefaultSql: string;
6
+ }
7
+ export interface ColumnMapping {
8
+ builder: string;
9
+ import: string;
10
+ config?: string;
11
+ sqlType: string;
12
+ }
13
+ export declare function providerMeta(provider: DbProvider): ProviderMeta;
14
+ export declare function columnMapping(fieldType: ScalarType, provider: DbProvider, dimensions?: number): ColumnMapping;
15
+ export declare function columnMappingForReference(targetField: FieldDefinition, provider: DbProvider): ColumnMapping;
16
+ export declare function sqlTypeForField(def: FieldDefinition, provider: DbProvider): string;
17
+ export declare function sqlTypeForReference(targetField: FieldDefinition, provider: DbProvider): string;
18
+ export declare function autoIdSchemaExpr(columnName: string, provider: DbProvider): {
19
+ expr: string;
20
+ imports: string[];
21
+ needsSql: boolean;
22
+ };
23
+ export declare function autoIdSqlDefault(provider: DbProvider): string;
24
+ export declare function sqlDefaultClause(def: FieldDefinition, provider: DbProvider): string | null;
25
+ //# sourceMappingURL=dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../src/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,YAAY,CAsB/D;AAyED,wBAAgB,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAU7G;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,GAAG,aAAa,CAc3G;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAalF;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAE9F;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAsBjI;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAU7D;AAMD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAiC1F"}