MCPcopy Index your code
hub / github.com/TanStack/db / TauriSQLiteDriver

Class TauriSQLiteDriver

packages/tauri-db-sqlite-persistence/src/tauri-sql-driver.ts:132–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132export class TauriSQLiteDriver implements SQLiteDriver {
133 private readonly database: TauriSQLiteDatabaseLike
134 private queue: Promise<void> = Promise.resolve()
135 private nextSavepointId = 1
136
137 constructor(options: TauriSQLiteDriverOptions) {
138 if (!isTauriSQLiteDatabaseLike(options.database)) {
139 throw new InvalidPersistedCollectionConfigError(
140 `Tauri SQLite database object must provide execute/select methods`,
141 )
142 }
143
144 this.database = options.database
145 }
146
147 async exec(sql: string): Promise<void> {
148 await this.enqueue(async () => {
149 await this.executeStatement(sql)
150 })
151 }
152
153 async query<TRow>(
154 sql: string,
155 params: ReadonlyArray<unknown> = [],
156 ): Promise<ReadonlyArray<TRow>> {
157 return this.enqueue(async () => {
158 const rows = await this.database.select<ReadonlyArray<TRow>>(
159 convertSqlitePlaceholdersToTauri(sql),
160 params.length > 0 ? [...params] : undefined,
161 )
162 return normalizeQueryRows<TRow>(rows, sql)
163 })
164 }
165
166 async run(sql: string, params: ReadonlyArray<unknown> = []): Promise<void> {
167 await this.enqueue(async () => {
168 await this.executeStatement(sql, params)
169 })
170 }
171
172 async transaction<TReturn>(
173 fn: (transactionDriver: SQLiteDriver) => Promise<TReturn>,
174 ): Promise<TReturn> {
175 assertTransactionCallbackHasDriverArg(fn)
176 return this.transactionWithDriver(fn)
177 }
178
179 async transactionWithDriver<TReturn>(
180 fn: (transactionDriver: SQLiteDriver) => Promise<TReturn>,
181 ): Promise<TReturn> {
182 return this.enqueue(async () => {
183 await this.executeStatement(`BEGIN IMMEDIATE`)
184 const transactionDriver = this.createTransactionDriver()
185
186 try {
187 const result = await fn(transactionDriver)
188 await this.executeStatement(`COMMIT`)
189 return result

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…