rado 0.1.50 → 0.1.51

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,5 +1,6 @@
1
1
  // src/driver/better-sqlite3.ts
2
2
  import { Driver } from "../lib/Driver.js";
3
+ import { SqlError } from "../lib/SqlError.js";
3
4
  import { SqliteFormatter } from "../sqlite/SqliteFormatter.js";
4
5
  import { SqliteSchema } from "../sqlite/SqliteSchema.js";
5
6
  var PreparedStatement = class {
@@ -32,7 +33,11 @@ var BetterSqlite3Driver = class extends Driver.Sync {
32
33
  tableData;
33
34
  indexData;
34
35
  prepareStatement(stmt) {
35
- return new PreparedStatement(this.db.prepare(stmt.sql));
36
+ try {
37
+ return new PreparedStatement(this.db.prepare(stmt.sql));
38
+ } catch (e) {
39
+ throw new SqlError(e, stmt.sql);
40
+ }
36
41
  }
37
42
  schemaInstructions(tableName) {
38
43
  const columnData = this.tableData(tableName);
@@ -2,6 +2,7 @@
2
2
  import { Cursor } from "../define/Cursor.js";
3
3
  import { Query } from "../define/Query.js";
4
4
  import { Driver } from "../lib/Driver.js";
5
+ import { SqlError } from "../lib/SqlError.js";
5
6
  import { SqliteFormatter } from "../sqlite/SqliteFormatter.js";
6
7
  import { SqliteSchema } from "../sqlite/SqliteSchema.js";
7
8
  var PreparedStatement = class {
@@ -47,7 +48,11 @@ var BunSqliteDriver = class extends Driver.Sync {
47
48
  indexData;
48
49
  lastChanges;
49
50
  prepareStatement(stmt) {
50
- return new PreparedStatement(this.lastChanges, this.db.prepare(stmt.sql));
51
+ try {
52
+ return new PreparedStatement(this.lastChanges, this.db.prepare(stmt.sql));
53
+ } catch (e) {
54
+ throw new SqlError(e, stmt.sql);
55
+ }
51
56
  }
52
57
  schemaInstructions(tableName) {
53
58
  const columnData = this.tableData(tableName);
@@ -1,5 +1,6 @@
1
1
  // src/driver/sql.js.ts
2
2
  import { Driver } from "../lib/Driver.js";
3
+ import { SqlError } from "../lib/SqlError.js";
3
4
  import { SqliteFormatter } from "../sqlite/SqliteFormatter.js";
4
5
  import { SqliteSchema } from "../sqlite/SqliteSchema.js";
5
6
  var PreparedStatement = class {
@@ -43,11 +44,15 @@ var SqlJsDriver = class extends Driver.Sync {
43
44
  tableData;
44
45
  indexData;
45
46
  prepareStatement(stmt, discardAfter) {
46
- return new PreparedStatement(
47
- this.db,
48
- this.db.prepare(stmt.sql),
49
- discardAfter
50
- );
47
+ try {
48
+ return new PreparedStatement(
49
+ this.db,
50
+ this.db.prepare(stmt.sql),
51
+ discardAfter
52
+ );
53
+ } catch (e) {
54
+ throw new SqlError(e, stmt.sql);
55
+ }
51
56
  }
52
57
  schemaInstructions(tableName) {
53
58
  const columnData = this.tableData(tableName);
@@ -1,5 +1,6 @@
1
1
  // src/driver/sqlite3.ts
2
2
  import { Driver } from "../lib/Driver.js";
3
+ import { SqlError } from "../lib/SqlError.js";
3
4
  import { SqliteFormatter } from "../sqlite/SqliteFormatter.js";
4
5
  import { SqliteSchema } from "../sqlite/SqliteSchema.js";
5
6
  var PreparedStatement = class {
@@ -93,7 +94,11 @@ var Sqlite3Driver = class extends Driver.Async {
93
94
  return super.executeQuery(query, stmt, params);
94
95
  }
95
96
  prepareStatement(stmt) {
96
- return new PreparedStatement(this.db.prepare(stmt.sql));
97
+ try {
98
+ return new PreparedStatement(this.db.prepare(stmt.sql));
99
+ } catch (e) {
100
+ throw new SqlError(e, stmt.sql);
101
+ }
97
102
  }
98
103
  async schemaInstructions(tableName) {
99
104
  const columnData = await this.tableData(tableName);
package/dist/index.d.ts CHANGED
@@ -17,4 +17,5 @@ export * from './define/Update';
17
17
  export type { Driver } from './lib/Driver';
18
18
  export type { FormatContext, Formatter } from './lib/Formatter';
19
19
  export type { Sanitizer } from './lib/Sanitizer';
20
+ export * from './lib/SqlError';
20
21
  export type { Statement } from './lib/Statement';
package/dist/index.js CHANGED
@@ -15,3 +15,4 @@ export * from "./define/Selection.js";
15
15
  export * from "./define/Table.js";
16
16
  export * from "./define/Target.js";
17
17
  export * from "./define/Update.js";
18
+ export * from "./lib/SqlError.js";
@@ -72,7 +72,7 @@ var Formatter = class {
72
72
  }
73
73
  formatSelect(ctx, query) {
74
74
  const { stmt, topLevel } = ctx;
75
- stmt.add("SELECT").space();
75
+ stmt.raw("SELECT").space();
76
76
  this.formatSelection(
77
77
  { ...ctx, topLevel: false },
78
78
  query.selection,
@@ -325,7 +325,7 @@ var Formatter = class {
325
325
  case TargetType.Table:
326
326
  stmt.identifier(target.table.name);
327
327
  if (target.table.alias)
328
- stmt.raw("AS").addIdentifier(target.table.alias);
328
+ stmt.add("AS").addIdentifier(target.table.alias);
329
329
  return stmt;
330
330
  case TargetType.Join:
331
331
  const { left, right, joinType } = target;
@@ -340,7 +340,7 @@ var Formatter = class {
340
340
  this.format(ctx, target.query);
341
341
  stmt.closeParenthesis();
342
342
  if (target.alias)
343
- stmt.raw("AS").addIdentifier(target.alias);
343
+ stmt.add("AS").addIdentifier(target.alias);
344
344
  return stmt;
345
345
  case TargetType.Expr:
346
346
  throw new Error("Cannot format expression as target");
@@ -375,7 +375,7 @@ var Formatter = class {
375
375
  const { stmt } = ctx;
376
376
  if (!orderBy)
377
377
  return stmt;
378
- stmt.newline().raw("ORDER BY");
378
+ stmt.newline().raw("ORDER BY").space();
379
379
  for (const { expr, order } of stmt.separate(orderBy)) {
380
380
  this.formatExprValue(ctx, expr);
381
381
  stmt.add(order === OrderDirection.Asc ? "ASC" : "DESC");
@@ -572,7 +572,7 @@ var Formatter = class {
572
572
  this.format(ctx, expr.query);
573
573
  return stmt.closeParenthesis().closeParenthesis();
574
574
  }
575
- stmt.openParenthesis().raw("SELECT json_group_array(json(result))").newline().raw("FROM").openParenthesis();
575
+ stmt.openParenthesis().raw("SELECT json_group_array(json(result))").newline().raw("FROM").space().openParenthesis();
576
576
  this.format(ctx, expr.query);
577
577
  return stmt.closeParenthesis().closeParenthesis();
578
578
  case ExprType.Row:
@@ -0,0 +1,4 @@
1
+ export declare class SqlError extends Error {
2
+ sql: string;
3
+ constructor(cause: Error, sql: string);
4
+ }
@@ -0,0 +1,12 @@
1
+ // src/lib/SqlError.ts
2
+ var SqlError = class extends Error {
3
+ constructor(cause, sql) {
4
+ super(`${sql}
5
+ \u2502
6
+ \u2514\u2500\u2500\u2500\u2500 ${cause}`, { cause });
7
+ this.sql = sql;
8
+ }
9
+ };
10
+ export {
11
+ SqlError
12
+ };
@@ -24,7 +24,7 @@ var Statement = class {
24
24
  addLine(addition) {
25
25
  if (!addition)
26
26
  return this;
27
- return this.newline().add(addition);
27
+ return this.newline().raw(addition);
28
28
  }
29
29
  indent() {
30
30
  this.currentIndent = this.currentIndent + " ";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.1.50",
3
+ "version": "0.1.51",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",