MCPcopy Create free account
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