Creating a custom adapter with kysely dialect

I've updated the surrealdb kysely driver to work with SurrealDB 2.x. I'm testing the changes in better-auth. I can't seem to get kysely to use my dialect properly.
1 Reply
geodox
geodoxOP2mo ago
TypeError: dialect.createDriver is not a function
at new Kysely (./node_modules/kysely/dist/esm/kysely.js:67:36)
at createKyselyAdapter (./node_modules/better-auth/dist/shared/better-auth.DwzM-9N1.mjs:55:15)
at getAdapter (./node_modules/better-auth/dist/shared/better-auth.ByruPN9q.mjs:897:42)
at init (./node_modules/better-auth/dist/shared/better-auth.Cbhy6WDJ.mjs:27:25)
at betterAuth (./node_modules/better-auth/dist/shared/better-auth.Cbhy6WDJ.mjs:194:23)
at ./src/lib/auth.ts:4:21
at async ESModulesEvaluator.runInlinedModule (./node_modules/vite/dist/node/module-runner.js:909:3)
at async SSRCompatModuleRunner.directRequest (./node_modules/vite/dist/node/module-runner.js:1067:59)
at async SSRCompatModuleRunner.directRequest (./node_modules/vite/dist/node/chunks/dep-BHkUv4Z8.js:18888:22)
at async SSRCompatModuleRunner.cachedRequest (./node_modules/vite/dist/node/module-runner.js:974:73)
TypeError: dialect.createDriver is not a function
at new Kysely (./node_modules/kysely/dist/esm/kysely.js:67:36)
at createKyselyAdapter (./node_modules/better-auth/dist/shared/better-auth.DwzM-9N1.mjs:55:15)
at getAdapter (./node_modules/better-auth/dist/shared/better-auth.ByruPN9q.mjs:897:42)
at init (./node_modules/better-auth/dist/shared/better-auth.Cbhy6WDJ.mjs:27:25)
at betterAuth (./node_modules/better-auth/dist/shared/better-auth.Cbhy6WDJ.mjs:194:23)
at ./src/lib/auth.ts:4:21
at async ESModulesEvaluator.runInlinedModule (./node_modules/vite/dist/node/module-runner.js:909:3)
at async SSRCompatModuleRunner.directRequest (./node_modules/vite/dist/node/module-runner.js:1067:59)
at async SSRCompatModuleRunner.directRequest (./node_modules/vite/dist/node/chunks/dep-BHkUv4Z8.js:18888:22)
at async SSRCompatModuleRunner.cachedRequest (./node_modules/vite/dist/node/module-runner.js:974:73)
My dialect does implement createDriver?
export class SurrealDbWebSocketsDialect implements Dialect {
readonly #config: SurrealDbWebSocketsDialectConfig

constructor(config: SurrealDbWebSocketsDialectConfig) {
this.#config = config
}

createAdapter(): DialectAdapter {
return new SurrealDbAdapter()
}

createDriver(): Driver {
return new SurrealDbWebSocketsDriver(this.#config)
}

createIntrospector(db: Kysely<any>): DatabaseIntrospector {
return new SurrealDbWebSocketsIntrospector(db)
}

createQueryCompiler(): QueryCompiler {
return new SurrealDbQueryCompiler()
}
}
export class SurrealDbWebSocketsDialect implements Dialect {
readonly #config: SurrealDbWebSocketsDialectConfig

constructor(config: SurrealDbWebSocketsDialectConfig) {
this.#config = config
}

createAdapter(): DialectAdapter {
return new SurrealDbAdapter()
}

createDriver(): Driver {
return new SurrealDbWebSocketsDriver(this.#config)
}

createIntrospector(db: Kysely<any>): DatabaseIntrospector {
return new SurrealDbWebSocketsIntrospector(db)
}

createQueryCompiler(): QueryCompiler {
return new SurrealDbQueryCompiler()
}
}
Got some more debugging logs
Dialect type: object
Has createDriver: true
createDriver type: function
Dialect methods: [
'constructor',
'createAdapter',
'createDriver',
'createIntrospector',
'createQueryCompiler'
]
[BetterAuthError: Failed to initialize database adapter] {
cause: undefined
}
Dialect type: object
Has createDriver: true
createDriver type: function
Dialect methods: [
'constructor',
'createAdapter',
'createDriver',
'createIntrospector',
'createQueryCompiler'
]
[BetterAuthError: Failed to initialize database adapter] {
cause: undefined
}
Got it working

Did you find this page helpful?