Tauri's dialect has incorrect types?
Aeryle opened this issue · 3 comments
Aeryle commented
Hello,
I have been trying the kysely-dialect-tauri
module, but since there is no documentation, or examples in any form or shape that could help, I have been trying to understand how to use it, and here is my code:
import {
Kysely,
type Generated,
DummyDriver,
SqliteAdapter,
SqliteIntrospector,
SqliteQueryCompiler,
} from 'kysely';
import { TauriSqlDialect } from 'kysely-dialect-tauri';
import { writable } from 'svelte/store';
import Db from 'tauri-plugin-sql-api';
interface Person {
id: Generated<number>;
first_name: string;
last_name: string | null;
}
interface Database {
person: Person;
}
export const initKysely = () =>
new Kysely<Database>({
dialect: new TauriSqlDialect({
database: Db.load('sqlite:test.db'),
}),
});
export const dbStore = writable<Kysely<Database>>();
I can't seem to get the types to correspond, and unless I'm overseeing something, I don't understand why not use the type already used by the Db.load
function?
subframe7536 commented
maybe just a type error. the return type of close does not affect the logic
kysely-sqlite-tools/packages/dialect-tauri/src/driver.ts
Lines 48 to 50 in 4fde780
Aeryle commented
subframe7536 commented
import Database from "tauri-plugin-sql-api";
import { Generated, Kysely } from "kysely";
import { TauriSqlDialect } from "kysely-dialect-tauri";
import { appDataDir } from "@tauri-apps/api/path";
interface DB {
test: TestTable
}
interface TestTable {
id: Generated<number>
name: string
age: number
int8: Uint8Array
}
export async function test() {
const kysely = new Kysely<DB>({
dialect: new TauriSqlDialect({
database: async () => await Database.load(
`sqlite:${await appDataDir()}test.db`
) as any // bypass typecheck, fixed in https://github.com/subframe7536/kysely-sqlite-tools/commit/4fde7802e16cd9d250e0997764d42a131946910d
}),
})
await kysely.schema.dropTable('test').execute()
await kysely.schema.createTable('test')
.addColumn('id', 'integer', builder => builder.autoIncrement().primaryKey())
.addColumn('name', 'text')
.addColumn('age', 'integer')
.addColumn('int8', 'blob')
.execute()
await kysely.insertInto('test')
.values({
age: 18,
name: `test at ${Date.now()}`,
int8: new Uint8Array([1, 2, 3]),
})
.execute()
console.table(await kysely
.selectFrom('test')
.selectAll()
.executeTakeFirstOrThrow()
)
}