feat: Add native Cloudflare D1 database driver support#2927
Open
hongkongkiwi wants to merge 3 commits intoSeaQL:masterfrom
Open
feat: Add native Cloudflare D1 database driver support#2927hongkongkiwi wants to merge 3 commits intoSeaQL:masterfrom
hongkongkiwi wants to merge 3 commits intoSeaQL:masterfrom
Conversation
Add a native D1 driver for Sea-ORM that enables seamless integration with
Cloudflare Workers D1 databases. This driver provides:
- D1Connector and D1Connection types wrapping worker::D1 binding
- Full SQL execution support (execute, query_one, query_all)
- D1QueryExecutor trait for Entity queries (works around wasm-bindgen Send bound)
- D1Row and D1ExecResult types for result handling
- TryGetable support for D1-specific types
Example usage:
let db = sea_orm::Database::connect_d1(d1).await?;
let cakes = cake::Entity::find().all(&db).await?;
Breaking change: None
Feature: D1 database driver for Cloudflare Workers
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Author
|
Fixed the failing tests so all checks should pass now :) |
Member
|
thank you @hongkongkiwi did you receive my email from chris.2y3? |
- Remove mock feature dependency from d1 feature (adds D1ValueWrapper) - Fix unreachable POST handler in d1_example route matching - Add SQL wildcard escaping for search functionality in d1_example - Add comprehensive transaction documentation explaining D1 limitations - Add D1 transaction support in DatabaseTransaction (begin/commit/rollback) - Remove unused _unprepared parameter from execute_inner - Improve NULL conversion behavior with explicit matching and error logging - Replace all unwrap() calls with proper error handling in D1 query results - Standardize D1 error messages to consistent format - Fix potential panics in type conversions (DateTime, Decimal, UUID, IpNetwork) All 242 tests pass including 12 D1-specific unit tests.
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.
Summary
Add a native D1 driver for Sea-ORM that enables seamless integration with Cloudflare Workers D1 databases.
Key Features
worker::D1bindingexecute,query_one,query_allExample Usage
Technical Notes
The implementation uses a custom
D1QueryExecutortrait withimpl Futurereturn type to work around wasm-bindgen's requirement that futures beSend. This allows Entity queries without requiring the fullConnectionTraitimplementation.Files Changed
src/driver/d1.rs: Core D1 driver implementationsrc/driver/mod.rs: Module exportssrc/database/db_connection.rs: Connection type integrationsrc/database/mod.rs:connect_d1APIsrc/executor/query.rs: TryGetable support for D1 typesexamples/d1_example/: Complete working example🤖 Generated with Claude Code (https://claude.com/claude-code)