rado 0.3.5 → 0.3.7

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.
@@ -384,7 +384,13 @@ class Expr {
384
384
  return this;
385
385
  }
386
386
  get(name) {
387
- return new Expr(new ExprData.Field(this[Expr.Data], name));
387
+ switch (this[Expr.Data].type) {
388
+ case "ExprData.Record" /* Record */:
389
+ if (name in this[Expr.Data].fields)
390
+ return new Expr(this[Expr.Data].fields[name]);
391
+ default:
392
+ return new Expr(new ExprData.Field(this[Expr.Data], name));
393
+ }
388
394
  }
389
395
  static [Symbol.hasInstance](instance) {
390
396
  return instance?.[Expr.IsExpr];
@@ -8,6 +8,7 @@ export declare class BetterSqlite3Driver extends Driver.Sync {
8
8
  tableData: (tableName: string) => Array<SqliteSchema.Column>;
9
9
  indexData: (tableName: string) => Array<SqliteSchema.Index>;
10
10
  constructor(db: Database, options?: DriverOptions);
11
+ close(): void;
11
12
  prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
12
13
  schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
14
  export(): Uint8Array;
@@ -30,6 +30,9 @@ class BetterSqlite3Driver extends Driver.Sync {
30
30
  }
31
31
  tableData;
32
32
  indexData;
33
+ close() {
34
+ this.db.close();
35
+ }
33
36
  prepareStatement(stmt) {
34
37
  return new PreparedStatement(this.db.prepare(stmt.sql));
35
38
  }
@@ -12,6 +12,7 @@ export declare class BunSqliteDriver extends Driver.Sync {
12
12
  rowsAffected: number;
13
13
  };
14
14
  constructor(db: Database, options?: DriverOptions);
15
+ close(): void;
15
16
  prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
16
17
  schemaInstructions(tableName: string): SchemaInstructions | undefined;
17
18
  }
@@ -44,6 +44,9 @@ class BunSqliteDriver extends Driver.Sync {
44
44
  tableData;
45
45
  indexData;
46
46
  lastChanges;
47
+ close() {
48
+ this.db.close();
49
+ }
47
50
  prepareStatement(stmt) {
48
51
  return new PreparedStatement(this.lastChanges, this.db.prepare(stmt.sql));
49
52
  }
@@ -8,6 +8,7 @@ export declare class SqlJsDriver extends Driver.Sync {
8
8
  tableData?: (tableName: string) => Array<SqliteSchema.Column>;
9
9
  indexData?: (tableName: string) => Array<SqliteSchema.Index>;
10
10
  constructor(db: Database, options?: DriverOptions);
11
+ close(): void;
11
12
  prepareStatement(stmt: Statement, discardAfter: boolean): Driver.Sync.PreparedStatement;
12
13
  schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
14
  export(): Uint8Array;
@@ -39,6 +39,9 @@ class SqlJsDriver extends Driver.Sync {
39
39
  }
40
40
  tableData;
41
41
  indexData;
42
+ close() {
43
+ this.db.close();
44
+ }
42
45
  prepareStatement(stmt, discardAfter) {
43
46
  return new PreparedStatement(
44
47
  this.db,
@@ -14,5 +14,6 @@ export declare class Sqlite3Driver extends Driver.Async {
14
14
  prepareStatement(stmt: Statement): Driver.Async.PreparedStatement;
15
15
  schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
16
16
  isolate(): [connection: Driver.Async, release: () => Promise<void>];
17
+ close(): Promise<void>;
17
18
  }
18
19
  export declare function connect(db: Database, options?: DriverOptions): Sqlite3Driver;
@@ -109,6 +109,17 @@ class Sqlite3Driver extends Driver.Async {
109
109
  this.lock = Promise.resolve(this.lock).then(() => trigger);
110
110
  return [connection, release];
111
111
  }
112
+ async close() {
113
+ await this.lock;
114
+ return new Promise((resolve, reject) => {
115
+ this.db.close((err) => {
116
+ if (err)
117
+ reject(err);
118
+ else
119
+ resolve();
120
+ });
121
+ });
122
+ }
112
123
  }
113
124
  function connect(db, options) {
114
125
  return new Sqlite3Driver(db, options);
@@ -29,6 +29,7 @@ interface SyncDriver {
29
29
  declare abstract class SyncDriver extends DriverBase {
30
30
  transactionId: number;
31
31
  constructor(formatter: Formatter, options?: DriverOptions);
32
+ abstract close(): void;
32
33
  abstract prepareStatement(stmt: Statement, discardAfter: boolean): SyncPreparedStatement;
33
34
  abstract schemaInstructions(tableName: string): SchemaInstructions | undefined;
34
35
  createStatement(stmt: Statement, discardAfter: boolean): SyncPreparedStatement;
@@ -57,6 +58,7 @@ interface AsyncDriver {
57
58
  declare abstract class AsyncDriver extends DriverBase {
58
59
  transactionId: number;
59
60
  constructor(formatter: Formatter, options?: DriverOptions);
61
+ abstract close(): Promise<void>;
60
62
  abstract isolate(): [connection: AsyncDriver, release: () => Promise<void>];
61
63
  abstract prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
62
64
  abstract schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
@@ -72,6 +74,7 @@ declare class SyncWrapper extends AsyncDriver {
72
74
  private sync;
73
75
  lock: Promise<void> | undefined;
74
76
  constructor(sync: SyncDriver);
77
+ close(): Promise<void>;
75
78
  executeQuery(query: QueryData, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<unknown>;
76
79
  prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
77
80
  schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
@@ -361,6 +361,9 @@ class SyncWrapper extends AsyncDriver {
361
361
  this.sync = sync;
362
362
  }
363
363
  lock;
364
+ async close() {
365
+ this.sync.close();
366
+ }
364
367
  async executeQuery(query, stmt, params) {
365
368
  await this.lock;
366
369
  return super.executeQuery(query, stmt, params);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",