feat(ext/node): add sqlite-type symbol for DatabaseSync#30511
Merged
bartlomieju merged 8 commits intodenoland:mainfrom Sep 8, 2025
Merged
feat(ext/node): add sqlite-type symbol for DatabaseSync#30511bartlomieju merged 8 commits intodenoland:mainfrom
bartlomieju merged 8 commits intodenoland:mainfrom
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
bartlomieju
reviewed
Aug 25, 2025
bartlomieju
reviewed
Aug 25, 2025
Comment on lines
+24
to
+26
| ObjectDefineProperty(DatabaseSync.prototype, sqliteTypeSymbol, { | ||
| __proto__: null, | ||
| value: "node:sqlite", |
Member
There was a problem hiding this comment.
@littledivy is this okay, or should we do it in Rust?
Member
There was a problem hiding this comment.
yea this can be done in Rust:
#[getter]
#[symbol("sqlite-type")]
fn sqlite_type(&self) -> bool {
true
}
Contributor
Author
There was a problem hiding this comment.
thanks! let me fix it
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com> Signed-off-by: Alex Yang <himself65@outlook.com>
bartlomieju
reviewed
Aug 25, 2025
|
|
||
| // Returns "node:sqlite" for Node.js compatibility | ||
| #[getter] | ||
| #[symbol("sqlite-type")] |
Member
There was a problem hiding this comment.
@littledivy this seems to panic now... Should we fix it in deno_core and for the time being use the previous version in JS?
Member
There was a problem hiding this comment.
oh we reuse the name as a Rust identifier in the macro. I think we can revert to the JS version for now @himself65. I will open a deno_core PR to fix the panic.
bartlomieju
approved these changes
Sep 8, 2025
Member
bartlomieju
left a comment
There was a problem hiding this comment.
Reverted to using a JS symbol for now. LGTM, thanks!
Tango992
pushed a commit
to Tango992/deno
that referenced
this pull request
Sep 24, 2025
Related: nodejs/node@d1eabcb Related: nodejs/node#59405 Related: better-auth/better-auth#3869 Related: oven-sh/bun#22109 Nowadays, there are tons of database packages, like sqlite3, sqlite, better-sqlite, bun:sqlite... Checking the difference from them is pretty hard. instanceof is not good, since the developer will still need to import the module, which is costly. I think we should provide a symbol to distinguish different SQLite classes, at least nodejs could make the first step. --------- Signed-off-by: Alex Yang <himself65@outlook.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related: nodejs/node@d1eabcb
Related: nodejs/node#59405
Related: better-auth/better-auth#3869
Related: oven-sh/bun#22109
Nowadays, there are tons of database packages, like sqlite3, sqlite, better-sqlite, bun:sqlite... Checking the difference from them is pretty hard.
instanceof is not good, since the developer will still need to import the module, which is costly.
I think we should provide a symbol to distinguish different SQLite classes, at least nodejs could make the first step
This symbol could help with lots of duplicate properties checking, like https://github.com/kysely-org/kysely, https://github.com/knex/knex
It helps the library author to write an adapter for a different SQLite library. Right now, the library is checking the prototype method to determine whether it's node:sqlite, bun:sqlite, or better-sqlite... It was a lot of performance, and it's not stable as the API could change
https://github.com/better-auth/better-auth/blob/375e9f3ced6f3842c133f4cae689cb2a604ba94a/packages/better-auth/src/adapters/kysely-adapter/dialect.ts#L53-L109
I hope there's an easy way. like a symbol tag, to determine the user's land SQLite lib