drizzle-orm 0.29.4 → 0.29.5-859260e
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.
Potentially problematic release.
This version of drizzle-orm might be problematic. Click here for more details.
- package/aws-data-api/pg/migrator.cjs +1 -1
- package/aws-data-api/pg/migrator.cjs.map +1 -1
- package/aws-data-api/pg/migrator.js +1 -1
- package/aws-data-api/pg/migrator.js.map +1 -1
- package/better-sqlite3/migrator.cjs +1 -1
- package/better-sqlite3/migrator.cjs.map +1 -1
- package/better-sqlite3/migrator.js +1 -1
- package/better-sqlite3/migrator.js.map +1 -1
- package/bun-sqlite/migrator.cjs +1 -1
- package/bun-sqlite/migrator.cjs.map +1 -1
- package/bun-sqlite/migrator.js +1 -1
- package/bun-sqlite/migrator.js.map +1 -1
- package/d1/migrator.cjs +1 -1
- package/d1/migrator.cjs.map +1 -1
- package/d1/migrator.js +1 -1
- package/d1/migrator.js.map +1 -1
- package/expo-sqlite/migrator.cjs.map +1 -1
- package/expo-sqlite/migrator.js.map +1 -1
- package/libsql/migrator.cjs +1 -1
- package/libsql/migrator.cjs.map +1 -1
- package/libsql/migrator.js +1 -1
- package/libsql/migrator.js.map +1 -1
- package/migrator.cjs.map +1 -1
- package/migrator.d.cts +1 -0
- package/migrator.d.ts +1 -0
- package/migrator.js.map +1 -1
- package/mysql-core/db.cjs +7 -1
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +2 -0
- package/mysql-core/db.d.ts +2 -0
- package/mysql-core/db.js +7 -1
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +20 -16
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +4 -3
- package/mysql-core/dialect.d.ts +4 -3
- package/mysql-core/dialect.js +20 -16
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +2 -2
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.d.cts +3 -1
- package/mysql-core/query-builders/delete.d.ts +3 -1
- package/mysql-core/query-builders/delete.js +2 -2
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +5 -4
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.d.cts +5 -2
- package/mysql-core/query-builders/update.d.ts +5 -2
- package/mysql-core/query-builders/update.js +5 -4
- package/mysql-core/query-builders/update.js.map +1 -1
- package/neon-http/migrator.cjs +6 -4
- package/neon-http/migrator.cjs.map +1 -1
- package/neon-http/migrator.js +6 -4
- package/neon-http/migrator.js.map +1 -1
- package/neon-serverless/migrator.cjs +1 -1
- package/neon-serverless/migrator.cjs.map +1 -1
- package/neon-serverless/migrator.js +1 -1
- package/neon-serverless/migrator.js.map +1 -1
- package/node-postgres/migrator.cjs +1 -1
- package/node-postgres/migrator.cjs.map +1 -1
- package/node-postgres/migrator.js +1 -1
- package/node-postgres/migrator.js.map +1 -1
- package/package.json +2 -2
- package/pg-core/db.cjs +28 -1
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +11 -0
- package/pg-core/db.d.ts +11 -0
- package/pg-core/db.js +28 -1
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +113 -106
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +6 -5
- package/pg-core/dialect.d.ts +6 -5
- package/pg-core/dialect.js +31 -24
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +2 -2
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.d.cts +3 -1
- package/pg-core/query-builders/delete.d.ts +3 -1
- package/pg-core/query-builders/delete.js +2 -2
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +5 -4
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.d.cts +5 -2
- package/pg-core/query-builders/insert.d.ts +5 -2
- package/pg-core/query-builders/insert.js +5 -4
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/update.cjs +6 -4
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.d.cts +5 -2
- package/pg-core/query-builders/update.d.ts +5 -2
- package/pg-core/query-builders/update.js +6 -4
- package/pg-core/query-builders/update.js.map +1 -1
- package/postgres-js/migrator.cjs +1 -1
- package/postgres-js/migrator.cjs.map +1 -1
- package/postgres-js/migrator.js +1 -1
- package/postgres-js/migrator.js.map +1 -1
- package/sql-js/migrator.cjs +1 -1
- package/sql-js/migrator.cjs.map +1 -1
- package/sql-js/migrator.js +1 -1
- package/sql-js/migrator.js.map +1 -1
- package/sqlite-core/db.cjs +3 -3
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.js +3 -3
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/dialect.cjs +110 -103
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +7 -6
- package/sqlite-core/dialect.d.ts +7 -6
- package/sqlite-core/dialect.js +34 -27
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +2 -2
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.d.cts +3 -1
- package/sqlite-core/query-builders/delete.d.ts +3 -1
- package/sqlite-core/query-builders/delete.js +2 -2
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +5 -4
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.d.cts +5 -2
- package/sqlite-core/query-builders/insert.d.ts +5 -2
- package/sqlite-core/query-builders/insert.js +5 -4
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/raw.cjs +1 -1
- package/sqlite-core/query-builders/raw.cjs.map +1 -1
- package/sqlite-core/query-builders/raw.d.cts +6 -1
- package/sqlite-core/query-builders/raw.d.ts +6 -1
- package/sqlite-core/query-builders/raw.js +1 -1
- package/sqlite-core/query-builders/raw.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +11 -4
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.d.cts +5 -2
- package/sqlite-core/query-builders/update.d.ts +5 -2
- package/sqlite-core/query-builders/update.js +11 -4
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-proxy/driver.cjs +30 -10
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.d.cts +14 -1
- package/sqlite-proxy/driver.d.ts +14 -1
- package/sqlite-proxy/driver.js +30 -14
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/migrator.cjs +4 -3
- package/sqlite-proxy/migrator.cjs.map +1 -1
- package/sqlite-proxy/migrator.js +4 -3
- package/sqlite-proxy/migrator.js.map +1 -1
- package/sqlite-proxy/session.cjs +79 -21
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +20 -8
- package/sqlite-proxy/session.d.ts +20 -8
- package/sqlite-proxy/session.js +79 -21
- package/sqlite-proxy/session.js.map +1 -1
- package/vercel-postgres/migrator.cjs +1 -1
- package/vercel-postgres/migrator.cjs.map +1 -1
- package/vercel-postgres/migrator.js +1 -1
- package/vercel-postgres/migrator.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/sqlite-proxy/driver.d.ts
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
+
import type { BatchItem, BatchResponse } from "../batch.js";
|
|
2
|
+
import { entityKind } from "../entity.js";
|
|
1
3
|
import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
|
|
2
4
|
import type { DrizzleConfig } from "../utils.js";
|
|
3
5
|
export interface SqliteRemoteResult<T = unknown> {
|
|
4
6
|
rows?: T[];
|
|
5
7
|
}
|
|
6
|
-
export
|
|
8
|
+
export declare class SqliteRemoteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'async', SqliteRemoteResult, TSchema> {
|
|
9
|
+
static readonly [entityKind]: string;
|
|
10
|
+
batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
|
|
11
|
+
}
|
|
7
12
|
export type AsyncRemoteCallback = (sql: string, params: any[], method: 'run' | 'all' | 'values' | 'get') => Promise<{
|
|
8
13
|
rows: any[];
|
|
9
14
|
}>;
|
|
15
|
+
export type AsyncBatchRemoteCallback = (batch: {
|
|
16
|
+
sql: string;
|
|
17
|
+
params: any[];
|
|
18
|
+
method: 'run' | 'all' | 'values' | 'get';
|
|
19
|
+
}[]) => Promise<{
|
|
20
|
+
rows: any[];
|
|
21
|
+
}[]>;
|
|
10
22
|
export type RemoteCallback = AsyncRemoteCallback;
|
|
11
23
|
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>): SqliteRemoteDatabase<TSchema>;
|
|
24
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, batchCallback?: AsyncBatchRemoteCallback, config?: DrizzleConfig<TSchema>): SqliteRemoteDatabase<TSchema>;
|
package/sqlite-proxy/driver.js
CHANGED
|
@@ -1,35 +1,51 @@
|
|
|
1
|
+
import { entityKind } from "../entity.js";
|
|
1
2
|
import { DefaultLogger } from "../logger.js";
|
|
2
|
-
import {
|
|
3
|
-
createTableRelationsHelpers,
|
|
4
|
-
extractTablesRelationalConfig
|
|
5
|
-
} from "../relations.js";
|
|
3
|
+
import { createTableRelationsHelpers, extractTablesRelationalConfig } from "../relations.js";
|
|
6
4
|
import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
|
|
7
5
|
import { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";
|
|
8
6
|
import { SQLiteRemoteSession } from "./session.js";
|
|
9
|
-
|
|
7
|
+
class SqliteRemoteDatabase extends BaseSQLiteDatabase {
|
|
8
|
+
static [entityKind] = "SqliteRemoteDatabase";
|
|
9
|
+
async batch(batch) {
|
|
10
|
+
return this.session.batch(batch);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function drizzle(callback, batchCallback, config) {
|
|
10
14
|
const dialect = new SQLiteAsyncDialect();
|
|
11
15
|
let logger;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
logger
|
|
16
|
+
let _batchCallback;
|
|
17
|
+
let _config = {};
|
|
18
|
+
if (batchCallback) {
|
|
19
|
+
if ("logger" in batchCallback) {
|
|
20
|
+
_batchCallback = void 0;
|
|
21
|
+
_config = batchCallback;
|
|
22
|
+
} else {
|
|
23
|
+
_batchCallback = batchCallback;
|
|
24
|
+
_config = config ?? {};
|
|
25
|
+
}
|
|
26
|
+
if (_config.logger === true) {
|
|
27
|
+
logger = new DefaultLogger();
|
|
28
|
+
} else if (_config.logger !== false) {
|
|
29
|
+
logger = _config.logger;
|
|
30
|
+
}
|
|
16
31
|
}
|
|
17
32
|
let schema;
|
|
18
|
-
if (
|
|
33
|
+
if (_config.schema) {
|
|
19
34
|
const tablesConfig = extractTablesRelationalConfig(
|
|
20
|
-
|
|
35
|
+
_config.schema,
|
|
21
36
|
createTableRelationsHelpers
|
|
22
37
|
);
|
|
23
38
|
schema = {
|
|
24
|
-
fullSchema:
|
|
39
|
+
fullSchema: _config.schema,
|
|
25
40
|
schema: tablesConfig.tables,
|
|
26
41
|
tableNamesMap: tablesConfig.tableNamesMap
|
|
27
42
|
};
|
|
28
43
|
}
|
|
29
|
-
const session = new SQLiteRemoteSession(callback, dialect, schema, { logger });
|
|
30
|
-
return new
|
|
44
|
+
const session = new SQLiteRemoteSession(callback, dialect, schema, _batchCallback, { logger });
|
|
45
|
+
return new SqliteRemoteDatabase("async", dialect, session, schema);
|
|
31
46
|
}
|
|
32
47
|
export {
|
|
48
|
+
SqliteRemoteDatabase,
|
|
33
49
|
drizzle
|
|
34
50
|
};
|
|
35
51
|
//# sourceMappingURL=driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite-proxy/driver.ts"],"sourcesContent":["import { DefaultLogger } from '~/logger.ts';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite-proxy/driver.ts"],"sourcesContent":["import type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { createTableRelationsHelpers, extractTablesRelationalConfig } from '~/relations.ts';\nimport type { ExtractTablesWithRelations, RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteRemoteSession } from './session.ts';\n\nexport interface SqliteRemoteResult<T = unknown> {\n\trows?: T[];\n}\n\nexport class SqliteRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', SqliteRemoteResult, TSchema> {\n\tstatic readonly [entityKind]: string = 'SqliteRemoteDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteRemoteSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport type AsyncRemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'run' | 'all' | 'values' | 'get',\n) => Promise<{ rows: any[] }>;\n\nexport type AsyncBatchRemoteCallback = (batch: {\n\tsql: string;\n\tparams: any[];\n\tmethod: 'run' | 'all' | 'values' | 'get';\n}[]) => Promise<{ rows: any[] }[]>;\n\nexport type RemoteCallback = AsyncRemoteCallback;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig?: DrizzleConfig<TSchema>,\n): SqliteRemoteDatabase<TSchema>;\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tbatchCallback?: AsyncBatchRemoteCallback,\n\tconfig?: DrizzleConfig<TSchema>,\n): SqliteRemoteDatabase<TSchema>;\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tbatchCallback?: AsyncBatchRemoteCallback | DrizzleConfig<TSchema>,\n\tconfig?: DrizzleConfig<TSchema>,\n): SqliteRemoteDatabase<TSchema> {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tlet _batchCallback: AsyncBatchRemoteCallback | undefined;\n\tlet _config: DrizzleConfig<TSchema> = {};\n\n\tif (batchCallback) {\n\t\tif ('logger' in batchCallback) {\n\t\t\t_batchCallback = undefined;\n\t\t\t_config = batchCallback as DrizzleConfig<TSchema>;\n\t\t} else {\n\t\t\t_batchCallback = batchCallback as AsyncBatchRemoteCallback;\n\t\t\t_config = config ?? {};\n\t\t}\n\n\t\tif (_config.logger === true) {\n\t\t\tlogger = new DefaultLogger();\n\t\t} else if (_config.logger !== false) {\n\t\t\tlogger = _config.logger;\n\t\t}\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (_config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\t_config.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: _config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteRemoteSession(callback, dialect, schema, _batchCallback, { logger });\n\treturn new SqliteRemoteDatabase('async', dialect, session, schema) as SqliteRemoteDatabase<TSchema>;\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B,qCAAqC;AAE3E,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,2BAA2B;AAM7B,MAAM,6BAEH,mBAAyD;AAAA,EAClE,QAAiB,UAAU,IAAY;AAAA,EAKvC,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAyBO,SAAS,QACf,UACA,eACA,QACgC;AAChC,QAAM,UAAU,IAAI,mBAAmB;AACvC,MAAI;AACJ,MAAI;AACJ,MAAI,UAAkC,CAAC;AAEvC,MAAI,eAAe;AAClB,QAAI,YAAY,eAAe;AAC9B,uBAAiB;AACjB,gBAAU;AAAA,IACX,OAAO;AACN,uBAAiB;AACjB,gBAAU,UAAU,CAAC;AAAA,IACtB;AAEA,QAAI,QAAQ,WAAW,MAAM;AAC5B,eAAS,IAAI,cAAc;AAAA,IAC5B,WAAW,QAAQ,WAAW,OAAO;AACpC,eAAS,QAAQ;AAAA,IAClB;AAAA,EACD;AAEA,MAAI;AACJ,MAAI,QAAQ,QAAQ;AACnB,UAAM,eAAe;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,QAAQ;AAAA,MACpB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,oBAAoB,UAAU,SAAS,QAAQ,gBAAgB,EAAE,OAAO,CAAC;AAC7F,SAAO,IAAI,qBAAqB,SAAS,SAAS,SAAS,MAAM;AAClE;","names":[]}
|
|
@@ -25,8 +25,9 @@ var import_migrator = require("../migrator.cjs");
|
|
|
25
25
|
var import_sql = require("../sql/sql.cjs");
|
|
26
26
|
async function migrate(db, callback, config) {
|
|
27
27
|
const migrations = (0, import_migrator.readMigrationFiles)(config);
|
|
28
|
+
const migrationsTable = typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
28
29
|
const migrationTableCreate = import_sql.sql`
|
|
29
|
-
CREATE TABLE IF NOT EXISTS
|
|
30
|
+
CREATE TABLE IF NOT EXISTS ${import_sql.sql.identifier(migrationsTable)} (
|
|
30
31
|
id SERIAL PRIMARY KEY,
|
|
31
32
|
hash text NOT NULL,
|
|
32
33
|
created_at numeric
|
|
@@ -34,7 +35,7 @@ async function migrate(db, callback, config) {
|
|
|
34
35
|
`;
|
|
35
36
|
await db.run(migrationTableCreate);
|
|
36
37
|
const dbMigrations = await db.values(
|
|
37
|
-
import_sql.sql`SELECT id, hash, created_at FROM
|
|
38
|
+
import_sql.sql`SELECT id, hash, created_at FROM ${import_sql.sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`
|
|
38
39
|
);
|
|
39
40
|
const lastDbMigration = dbMigrations[0] ?? void 0;
|
|
40
41
|
const queriesToRun = [];
|
|
@@ -42,7 +43,7 @@ async function migrate(db, callback, config) {
|
|
|
42
43
|
if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {
|
|
43
44
|
queriesToRun.push(
|
|
44
45
|
...migration.sql,
|
|
45
|
-
`INSERT INTO
|
|
46
|
+
`INSERT INTO \`${migrationsTable}\` ("hash", "created_at") VALUES('${migration.hash}', '${migration.folderMillis}')`
|
|
46
47
|
);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { SqliteRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: SqliteRemoteDatabase<TSchema>,\n\tcallback: ProxyMigrator,\n\tconfig: string | MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { SqliteRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: SqliteRemoteDatabase<TSchema>,\n\tcallback: ProxyMigrator,\n\tconfig: string | MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\n\tawait db.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst queriesToRun: string[] = [];\n\tfor (const migration of migrations) {\n\t\tif (\n\t\t\t!lastDbMigration\n\t\t\t|| Number(lastDbMigration[2])! < migration.folderMillis\n\t\t) {\n\t\t\tqueriesToRun.push(\n\t\t\t\t...migration.sql,\n\t\t\t\t`INSERT INTO \\`${migrationsTable}\\` (\"hash\", \"created_at\") VALUES('${migration.hash}', '${migration.folderMillis}')`,\n\t\t\t);\n\t\t}\n\t}\n\n\tawait callback(queriesToRun);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AACnC,iBAAoB;AAKpB,eAAsB,QACrB,IACA,UACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAE5C,QAAM,kBAAkB,OAAO,WAAW,WACvC,yBACA,OAAO,mBAAmB;AAE7B,QAAM,uBAAuB;AAAA,+BACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7D,QAAM,GAAG,IAAI,oBAAoB;AAEjC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,kDAAuC,eAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,eAAyB,CAAC;AAChC,aAAW,aAAa,YAAY;AACnC,QACC,CAAC,mBACE,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAC1C;AACD,mBAAa;AAAA,QACZ,GAAG,UAAU;AAAA,QACb,iBAAiB,eAAe,qCAAqC,UAAU,IAAI,OAAO,UAAU,YAAY;AAAA,MACjH;AAAA,IACD;AAAA,EACD;AAEA,QAAM,SAAS,YAAY;AAC5B;","names":[]}
|
package/sqlite-proxy/migrator.js
CHANGED
|
@@ -2,8 +2,9 @@ import { readMigrationFiles } from "../migrator.js";
|
|
|
2
2
|
import { sql } from "../sql/sql.js";
|
|
3
3
|
async function migrate(db, callback, config) {
|
|
4
4
|
const migrations = readMigrationFiles(config);
|
|
5
|
+
const migrationsTable = typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
5
6
|
const migrationTableCreate = sql`
|
|
6
|
-
CREATE TABLE IF NOT EXISTS
|
|
7
|
+
CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
|
|
7
8
|
id SERIAL PRIMARY KEY,
|
|
8
9
|
hash text NOT NULL,
|
|
9
10
|
created_at numeric
|
|
@@ -11,7 +12,7 @@ async function migrate(db, callback, config) {
|
|
|
11
12
|
`;
|
|
12
13
|
await db.run(migrationTableCreate);
|
|
13
14
|
const dbMigrations = await db.values(
|
|
14
|
-
sql`SELECT id, hash, created_at FROM
|
|
15
|
+
sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`
|
|
15
16
|
);
|
|
16
17
|
const lastDbMigration = dbMigrations[0] ?? void 0;
|
|
17
18
|
const queriesToRun = [];
|
|
@@ -19,7 +20,7 @@ async function migrate(db, callback, config) {
|
|
|
19
20
|
if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {
|
|
20
21
|
queriesToRun.push(
|
|
21
22
|
...migration.sql,
|
|
22
|
-
`INSERT INTO
|
|
23
|
+
`INSERT INTO \`${migrationsTable}\` ("hash", "created_at") VALUES('${migration.hash}', '${migration.folderMillis}')`
|
|
23
24
|
);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { SqliteRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: SqliteRemoteDatabase<TSchema>,\n\tcallback: ProxyMigrator,\n\tconfig: string | MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { SqliteRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: SqliteRemoteDatabase<TSchema>,\n\tcallback: ProxyMigrator,\n\tconfig: string | MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\n\tawait db.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst queriesToRun: string[] = [];\n\tfor (const migration of migrations) {\n\t\tif (\n\t\t\t!lastDbMigration\n\t\t\t|| Number(lastDbMigration[2])! < migration.folderMillis\n\t\t) {\n\t\t\tqueriesToRun.push(\n\t\t\t\t...migration.sql,\n\t\t\t\t`INSERT INTO \\`${migrationsTable}\\` (\"hash\", \"created_at\") VALUES('${migration.hash}', '${migration.folderMillis}')`,\n\t\t\t);\n\t\t}\n\t}\n\n\tawait callback(queriesToRun);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AACnC,SAAS,WAAW;AAKpB,eAAsB,QACrB,IACA,UACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAE5C,QAAM,kBAAkB,OAAO,WAAW,WACvC,yBACA,OAAO,mBAAmB;AAE7B,QAAM,uBAAuB;AAAA,+BACC,IAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7D,QAAM,GAAG,IAAI,oBAAoB;AAEjC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,uCAAuC,IAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,eAAyB,CAAC;AAChC,aAAW,aAAa,YAAY;AACnC,QACC,CAAC,mBACE,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAC1C;AACD,mBAAa;AAAA,QACZ,GAAG,UAAU;AAAA,QACb,iBAAiB,eAAe,qCAAqC,UAAU,IAAI,OAAO,UAAU,YAAY;AAAA,MACjH;AAAA,IACD;AAAA,EACD;AAEA,QAAM,SAAS,YAAY;AAC5B;","names":[]}
|
package/sqlite-proxy/session.cjs
CHANGED
|
@@ -18,7 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var session_exports = {};
|
|
20
20
|
__export(session_exports, {
|
|
21
|
-
|
|
21
|
+
RemotePreparedQuery: () => RemotePreparedQuery,
|
|
22
22
|
SQLiteProxyTransaction: () => SQLiteProxyTransaction,
|
|
23
23
|
SQLiteRemoteSession: () => SQLiteRemoteSession
|
|
24
24
|
});
|
|
@@ -30,16 +30,29 @@ var import_sqlite_core = require("../sqlite-core/index.cjs");
|
|
|
30
30
|
var import_session = require("../sqlite-core/session.cjs");
|
|
31
31
|
var import_utils = require("../utils.cjs");
|
|
32
32
|
class SQLiteRemoteSession extends import_session.SQLiteSession {
|
|
33
|
-
constructor(client, dialect, schema, options = {}) {
|
|
33
|
+
constructor(client, dialect, schema, batchCLient, options = {}) {
|
|
34
34
|
super(dialect);
|
|
35
35
|
this.client = client;
|
|
36
36
|
this.schema = schema;
|
|
37
|
+
this.batchCLient = batchCLient;
|
|
37
38
|
this.logger = options.logger ?? new import_logger.NoopLogger();
|
|
38
39
|
}
|
|
39
40
|
static [import_entity.entityKind] = "SQLiteRemoteSession";
|
|
40
41
|
logger;
|
|
41
|
-
prepareQuery(query, fields, executeMethod) {
|
|
42
|
-
return new
|
|
42
|
+
prepareQuery(query, fields, executeMethod, customResultMapper) {
|
|
43
|
+
return new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);
|
|
44
|
+
}
|
|
45
|
+
async batch(queries) {
|
|
46
|
+
const preparedQueries = [];
|
|
47
|
+
const builtQueries = [];
|
|
48
|
+
for (const query of queries) {
|
|
49
|
+
const preparedQuery = query._prepare();
|
|
50
|
+
const builtQuery = preparedQuery.getQuery();
|
|
51
|
+
preparedQueries.push(preparedQuery);
|
|
52
|
+
builtQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });
|
|
53
|
+
}
|
|
54
|
+
const batchResults = await this.batchCLient(builtQueries);
|
|
55
|
+
return batchResults.map((result, i) => preparedQueries[i].mapResult(result, true));
|
|
43
56
|
}
|
|
44
57
|
async transaction(transaction, config) {
|
|
45
58
|
const tx = new SQLiteProxyTransaction("async", this.dialect, this, this.schema);
|
|
@@ -53,6 +66,15 @@ class SQLiteRemoteSession extends import_session.SQLiteSession {
|
|
|
53
66
|
throw err;
|
|
54
67
|
}
|
|
55
68
|
}
|
|
69
|
+
extractRawAllValueFromBatchResult(result) {
|
|
70
|
+
return result.rows;
|
|
71
|
+
}
|
|
72
|
+
extractRawGetValueFromBatchResult(result) {
|
|
73
|
+
return result.rows[0];
|
|
74
|
+
}
|
|
75
|
+
extractRawValuesValueFromBatchResult(result) {
|
|
76
|
+
return result.rows;
|
|
77
|
+
}
|
|
56
78
|
}
|
|
57
79
|
class SQLiteProxyTransaction extends import_sqlite_core.SQLiteTransaction {
|
|
58
80
|
static [import_entity.entityKind] = "SQLiteProxyTransaction";
|
|
@@ -70,41 +92,77 @@ class SQLiteProxyTransaction extends import_sqlite_core.SQLiteTransaction {
|
|
|
70
92
|
}
|
|
71
93
|
}
|
|
72
94
|
}
|
|
73
|
-
class
|
|
74
|
-
constructor(client, query, logger, fields, executeMethod) {
|
|
95
|
+
class RemotePreparedQuery extends import_session.SQLitePreparedQuery {
|
|
96
|
+
constructor(client, query, logger, fields, executeMethod, customResultMapper) {
|
|
75
97
|
super("async", executeMethod, query);
|
|
76
98
|
this.client = client;
|
|
77
99
|
this.logger = logger;
|
|
78
100
|
this.fields = fields;
|
|
101
|
+
this.customResultMapper = customResultMapper;
|
|
102
|
+
this.customResultMapper = customResultMapper;
|
|
103
|
+
this.method = executeMethod;
|
|
79
104
|
}
|
|
80
105
|
static [import_entity.entityKind] = "SQLiteProxyPreparedQuery";
|
|
106
|
+
method;
|
|
107
|
+
getQuery() {
|
|
108
|
+
return { ...this.query, method: this.method };
|
|
109
|
+
}
|
|
81
110
|
run(placeholderValues) {
|
|
82
111
|
const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
|
|
83
112
|
this.logger.logQuery(this.query.sql, params);
|
|
84
113
|
return this.client(this.query.sql, params, "run");
|
|
85
114
|
}
|
|
115
|
+
mapAllResult(rows, isFromBatch) {
|
|
116
|
+
if (isFromBatch) {
|
|
117
|
+
rows = rows.rows;
|
|
118
|
+
}
|
|
119
|
+
if (!this.fields && !this.customResultMapper) {
|
|
120
|
+
return rows;
|
|
121
|
+
}
|
|
122
|
+
if (this.customResultMapper) {
|
|
123
|
+
return this.customResultMapper(rows);
|
|
124
|
+
}
|
|
125
|
+
return rows.map((row) => {
|
|
126
|
+
return (0, import_utils.mapResultRow)(
|
|
127
|
+
this.fields,
|
|
128
|
+
row,
|
|
129
|
+
this.joinsNotNullableMap
|
|
130
|
+
);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
86
133
|
async all(placeholderValues) {
|
|
87
|
-
const {
|
|
134
|
+
const { query, logger, client } = this;
|
|
88
135
|
const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
|
|
89
136
|
logger.logQuery(query.sql, params);
|
|
90
|
-
const { rows } = await
|
|
91
|
-
|
|
92
|
-
return rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
|
|
93
|
-
}
|
|
94
|
-
return rows;
|
|
137
|
+
const { rows } = await client(query.sql, params, "all");
|
|
138
|
+
return this.mapAllResult(rows);
|
|
95
139
|
}
|
|
96
140
|
async get(placeholderValues) {
|
|
97
|
-
const {
|
|
141
|
+
const { query, logger, client } = this;
|
|
98
142
|
const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
|
|
99
143
|
logger.logQuery(query.sql, params);
|
|
100
|
-
const clientResult = await
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
144
|
+
const clientResult = await client(query.sql, params, "get");
|
|
145
|
+
return this.mapGetResult([clientResult.rows]);
|
|
146
|
+
}
|
|
147
|
+
mapGetResult(rows, isFromBatch) {
|
|
148
|
+
if (isFromBatch) {
|
|
149
|
+
rows = rows.rows;
|
|
106
150
|
}
|
|
107
|
-
|
|
151
|
+
const row = rows[0];
|
|
152
|
+
if (!this.fields && !this.customResultMapper) {
|
|
153
|
+
return row;
|
|
154
|
+
}
|
|
155
|
+
if (!row) {
|
|
156
|
+
return void 0;
|
|
157
|
+
}
|
|
158
|
+
if (this.customResultMapper) {
|
|
159
|
+
return this.customResultMapper(rows);
|
|
160
|
+
}
|
|
161
|
+
return (0, import_utils.mapResultRow)(
|
|
162
|
+
this.fields,
|
|
163
|
+
row,
|
|
164
|
+
this.joinsNotNullableMap
|
|
165
|
+
);
|
|
108
166
|
}
|
|
109
167
|
async values(placeholderValues) {
|
|
110
168
|
const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
|
|
@@ -115,7 +173,7 @@ class PreparedQuery extends import_session.SQLitePreparedQuery {
|
|
|
115
173
|
}
|
|
116
174
|
// Annotate the CommonJS export names for ESM import in node:
|
|
117
175
|
0 && (module.exports = {
|
|
118
|
-
|
|
176
|
+
RemotePreparedQuery,
|
|
119
177
|
SQLiteProxyTransaction,
|
|
120
178
|
SQLiteRemoteSession
|
|
121
179
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t): PreparedQuery<T> {\n\t\treturn new PreparedQuery(this.client, query, this.logger, fields, executeMethod);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.client(this.query.sql, params, 'run');\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, query, logger, joinsNotNullableMap } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await this.client(query.sql, params, 'all');\n\n\t\tif (fields) {\n\t\t\treturn rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));\n\t\t}\n\n\t\treturn rows;\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, query, logger, joinsNotNullableMap } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await this.client(query.sql, params, 'get');\n\n\t\tif (fields) {\n\t\t\tif (clientResult.rows === undefined) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn mapResultRow(fields, clientResult.rows, joinsNotNullableMap);\n\t\t}\n\n\t\treturn clientResult.rows;\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await this.client(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":"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","names":["PreparedQueryBase"]}
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { AsyncBatchRemoteCallback, AsyncRemoteCallback, RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate batchCLient?: AsyncBatchRemoteCallback,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): RemotePreparedQuery<T> {\n\t\treturn new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });\n\t\t}\n\n\t\tconst batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows![0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tprivate method: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.method = executeMethod;\n\t}\n\n\toverride getQuery(): Query & { method: SQLiteExecuteMethod } {\n\t\treturn { ...this.query, method: this.method };\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn (this.client as AsyncRemoteCallback)(this.query.sql, params, 'run');\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\trow,\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await (client as AsyncRemoteCallback)(query.sql, params, 'all');\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await (client as AsyncRemoteCallback)(query.sql, params, 'get');\n\n\t\treturn this.mapGetResult([clientResult.rows]);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[][])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn row;\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\trow,\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await (this.client as AsyncRemoteCallback)(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BatchItem } from "../batch.cjs";
|
|
1
2
|
import { entityKind } from "../entity.cjs";
|
|
2
3
|
import type { Logger } from "../logger.cjs";
|
|
3
4
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
@@ -6,26 +7,31 @@ import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.cjs";
|
|
|
6
7
|
import { SQLiteTransaction } from "../sqlite-core/index.cjs";
|
|
7
8
|
import type { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.types.cjs";
|
|
8
9
|
import type { PreparedQueryConfig as PreparedQueryConfigBase, SQLiteExecuteMethod, SQLiteTransactionConfig } from "../sqlite-core/session.cjs";
|
|
9
|
-
import { SQLitePreparedQuery
|
|
10
|
-
import type { RemoteCallback, SqliteRemoteResult } from "./driver.cjs";
|
|
10
|
+
import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.cjs";
|
|
11
|
+
import type { AsyncBatchRemoteCallback, RemoteCallback, SqliteRemoteResult } from "./driver.cjs";
|
|
11
12
|
export interface SQLiteRemoteSessionOptions {
|
|
12
13
|
logger?: Logger;
|
|
13
14
|
}
|
|
14
|
-
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
15
|
+
export type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
15
16
|
export declare class SQLiteRemoteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {
|
|
16
17
|
private client;
|
|
17
18
|
private schema;
|
|
19
|
+
private batchCLient?;
|
|
18
20
|
static readonly [entityKind]: string;
|
|
19
21
|
private logger;
|
|
20
|
-
constructor(client: RemoteCallback, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteRemoteSessionOptions);
|
|
21
|
-
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod):
|
|
22
|
+
constructor(client: RemoteCallback, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, batchCLient?: AsyncBatchRemoteCallback | undefined, options?: SQLiteRemoteSessionOptions);
|
|
23
|
+
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: unknown[][]) => unknown): RemotePreparedQuery<T>;
|
|
24
|
+
batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
|
|
22
25
|
transaction<T>(transaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
|
|
26
|
+
extractRawAllValueFromBatchResult(result: unknown): unknown;
|
|
27
|
+
extractRawGetValueFromBatchResult(result: unknown): unknown;
|
|
28
|
+
extractRawValuesValueFromBatchResult(result: unknown): unknown;
|
|
23
29
|
}
|
|
24
30
|
export declare class SQLiteProxyTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {
|
|
25
31
|
static readonly [entityKind]: string;
|
|
26
32
|
transaction<T>(transaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
|
27
33
|
}
|
|
28
|
-
export declare class
|
|
34
|
+
export declare class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
|
|
29
35
|
type: 'async';
|
|
30
36
|
run: SqliteRemoteResult;
|
|
31
37
|
all: T['all'];
|
|
@@ -37,10 +43,16 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
|
|
|
37
43
|
private logger;
|
|
38
44
|
private fields;
|
|
39
45
|
static readonly [entityKind]: string;
|
|
40
|
-
|
|
46
|
+
private method;
|
|
47
|
+
constructor(client: RemoteCallback, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod,
|
|
48
|
+
/** @internal */ customResultMapper?: ((rows: unknown[][], mapColumnValue?: ((value: unknown) => unknown) | undefined) => unknown) | undefined);
|
|
49
|
+
getQuery(): Query & {
|
|
50
|
+
method: SQLiteExecuteMethod;
|
|
51
|
+
};
|
|
41
52
|
run(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult>;
|
|
53
|
+
mapAllResult(rows: unknown, isFromBatch?: boolean): unknown;
|
|
42
54
|
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
43
55
|
get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
|
|
56
|
+
mapGetResult(rows: unknown, isFromBatch?: boolean): unknown;
|
|
44
57
|
values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]>;
|
|
45
58
|
}
|
|
46
|
-
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BatchItem } from "../batch.js";
|
|
1
2
|
import { entityKind } from "../entity.js";
|
|
2
3
|
import type { Logger } from "../logger.js";
|
|
3
4
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
@@ -6,26 +7,31 @@ import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";
|
|
|
6
7
|
import { SQLiteTransaction } from "../sqlite-core/index.js";
|
|
7
8
|
import type { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.types.js";
|
|
8
9
|
import type { PreparedQueryConfig as PreparedQueryConfigBase, SQLiteExecuteMethod, SQLiteTransactionConfig } from "../sqlite-core/session.js";
|
|
9
|
-
import { SQLitePreparedQuery
|
|
10
|
-
import type { RemoteCallback, SqliteRemoteResult } from "./driver.js";
|
|
10
|
+
import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.js";
|
|
11
|
+
import type { AsyncBatchRemoteCallback, RemoteCallback, SqliteRemoteResult } from "./driver.js";
|
|
11
12
|
export interface SQLiteRemoteSessionOptions {
|
|
12
13
|
logger?: Logger;
|
|
13
14
|
}
|
|
14
|
-
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
15
|
+
export type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
15
16
|
export declare class SQLiteRemoteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {
|
|
16
17
|
private client;
|
|
17
18
|
private schema;
|
|
19
|
+
private batchCLient?;
|
|
18
20
|
static readonly [entityKind]: string;
|
|
19
21
|
private logger;
|
|
20
|
-
constructor(client: RemoteCallback, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteRemoteSessionOptions);
|
|
21
|
-
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod):
|
|
22
|
+
constructor(client: RemoteCallback, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, batchCLient?: AsyncBatchRemoteCallback | undefined, options?: SQLiteRemoteSessionOptions);
|
|
23
|
+
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: unknown[][]) => unknown): RemotePreparedQuery<T>;
|
|
24
|
+
batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
|
|
22
25
|
transaction<T>(transaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
|
|
26
|
+
extractRawAllValueFromBatchResult(result: unknown): unknown;
|
|
27
|
+
extractRawGetValueFromBatchResult(result: unknown): unknown;
|
|
28
|
+
extractRawValuesValueFromBatchResult(result: unknown): unknown;
|
|
23
29
|
}
|
|
24
30
|
export declare class SQLiteProxyTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {
|
|
25
31
|
static readonly [entityKind]: string;
|
|
26
32
|
transaction<T>(transaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
|
27
33
|
}
|
|
28
|
-
export declare class
|
|
34
|
+
export declare class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
|
|
29
35
|
type: 'async';
|
|
30
36
|
run: SqliteRemoteResult;
|
|
31
37
|
all: T['all'];
|
|
@@ -37,10 +43,16 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
|
|
|
37
43
|
private logger;
|
|
38
44
|
private fields;
|
|
39
45
|
static readonly [entityKind]: string;
|
|
40
|
-
|
|
46
|
+
private method;
|
|
47
|
+
constructor(client: RemoteCallback, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod,
|
|
48
|
+
/** @internal */ customResultMapper?: ((rows: unknown[][], mapColumnValue?: ((value: unknown) => unknown) | undefined) => unknown) | undefined);
|
|
49
|
+
getQuery(): Query & {
|
|
50
|
+
method: SQLiteExecuteMethod;
|
|
51
|
+
};
|
|
41
52
|
run(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult>;
|
|
53
|
+
mapAllResult(rows: unknown, isFromBatch?: boolean): unknown;
|
|
42
54
|
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
43
55
|
get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
|
|
56
|
+
mapGetResult(rows: unknown, isFromBatch?: boolean): unknown;
|
|
44
57
|
values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]>;
|
|
45
58
|
}
|
|
46
|
-
export {};
|