SQLiteRemoteSession Class — drizzle-orm Architecture
Architecture documentation for the SQLiteRemoteSession class in session.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 8547eb9d_d783_00ed_fafd_5d4e77e8be54["SQLiteRemoteSession"] 78995e64_a0d0_1533_378c_3e7415ac2520["session.ts"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|defined in| 78995e64_a0d0_1533_378c_3e7415ac2520 0de67764_999f_72ca_d69f_9a54e0f52fd3["constructor()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| 0de67764_999f_72ca_d69f_9a54e0f52fd3 f8013c5d_6c37_8a54_7530_70bd5c397518["prepareQuery()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| f8013c5d_6c37_8a54_7530_70bd5c397518 cfd4dd2e_9055_cc46_2dd9_d7260b39e9f1["batch()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| cfd4dd2e_9055_cc46_2dd9_d7260b39e9f1 edc293b9_1f8b_73c9_efa3_55f353a3b344["transaction()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| edc293b9_1f8b_73c9_efa3_55f353a3b344 c29e3418_9a65_b7cc_cfb6_220564ee2bd7["extractRawAllValueFromBatchResult()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| c29e3418_9a65_b7cc_cfb6_220564ee2bd7 7d4ba329_4c58_61a8_fa6f_5ee7cf5331b7["extractRawGetValueFromBatchResult()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| 7d4ba329_4c58_61a8_fa6f_5ee7cf5331b7 6d6d7777_e1f0_a0b9_ec6e_f2cdd1e0ba04["extractRawValuesValueFromBatchResult()"] 8547eb9d_d783_00ed_fafd_5d4e77e8be54 -->|method| 6d6d7777_e1f0_a0b9_ec6e_f2cdd1e0ba04
Relationship Graph
Source Code
drizzle-orm/src/sqlite-proxy/session.ts lines 29–118
export class SQLiteRemoteSession<
TFullSchema extends Record<string, unknown>,
TSchema extends TablesRelationalConfig,
> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {
static override readonly [entityKind]: string = 'SQLiteRemoteSession';
private logger: Logger;
private cache: Cache;
constructor(
private client: RemoteCallback,
dialect: SQLiteAsyncDialect,
private schema: RelationalSchemaConfig<TSchema> | undefined,
private batchCLient?: AsyncBatchRemoteCallback,
options: SQLiteRemoteSessionOptions = {},
) {
super(dialect);
this.logger = options.logger ?? new NoopLogger();
this.cache = options.cache ?? new NoopCache();
}
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(
query: Query,
fields: SelectedFieldsOrdered | undefined,
executeMethod: SQLiteExecuteMethod,
isResponseInArrayMode: boolean,
customResultMapper?: (rows: unknown[][]) => unknown,
queryMetadata?: {
type: 'select' | 'update' | 'delete' | 'insert';
tables: string[];
},
cacheConfig?: WithCacheConfig,
): RemotePreparedQuery<T> {
return new RemotePreparedQuery(
this.client,
query,
this.logger,
this.cache,
queryMetadata,
cacheConfig,
fields,
executeMethod,
isResponseInArrayMode,
customResultMapper,
);
}
async batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {
const preparedQueries: PreparedQuery[] = [];
const builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];
for (const query of queries) {
const preparedQuery = query._prepare();
const builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();
preparedQueries.push(preparedQuery);
builtQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });
}
const batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);
return batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));
}
override async transaction<T>(
transaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,
config?: SQLiteTransactionConfig,
): Promise<T> {
const tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);
await this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));
try {
const result = await transaction(tx);
await this.run(sql`commit`);
return result;
} catch (err) {
await this.run(sql`rollback`);
throw err;
}
}
override extractRawAllValueFromBatchResult(result: unknown): unknown {
return (result as SqliteRemoteResult).rows;
}
Domain
Defined In
Source
Frequently Asked Questions
What is the SQLiteRemoteSession class?
SQLiteRemoteSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/sqlite-proxy/session.ts.
Where is SQLiteRemoteSession defined?
SQLiteRemoteSession is defined in drizzle-orm/src/sqlite-proxy/session.ts at line 29.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free