A thin functional F# wrapper for SQLite that simplifies data access with a composable API and null-safe operations.
Fumble is a thin functional F# wrapper for SQLite designed to simplify data access with a composable, type-safe API. It provides idiomatic F# functions for querying, parameter handling, null safety, and database introspection, reducing boilerplate and errors when working with SQLite databases. The library focuses on lightweight abstraction while supporting modern .NET types and SQLite features.
F# developers building applications with SQLite databases who prefer functional programming patterns and want a simple, type-safe data access layer without a full ORM.
Developers choose Fumble for its minimal overhead, functional composability, and built-in null safety, offering a cleaner alternative to raw SQL or heavier ORMs while maintaining close control over database interactions.
Thin F# API for Sqlite for easy data access to sqlite database with functional seasoning on top
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The pipeline-style API with functions like Sql.connect and Sql.query allows for readable, chainable queries that align with F# functional patterns, reducing boilerplate.
Provides OrNone variants for all data types (e.g., read.intOrNone), handling nullable columns safely without runtime errors, as demonstrated in the README examples.
Acts as a thin wrapper over SQLite with minimal abstraction overhead, maintaining close control and performance for data-intensive operations.
Supports newer types like DateOnly and TimeOnly out of the box, ensuring compatibility with modern .NET applications without extra conversion code.
Includes features like in-memory databases for testing, bulk upserts, and pragma controls (e.g., WAL mode), adding practical value beyond basic CRUD.
Exclusively tied to SQLite, so it's not suitable for projects that may need to switch databases or use multi-provider strategies, limiting flexibility.
Requires developers to write raw SQL strings for all queries, which can be error-prone and lacks the compile-time safety of query builders or ORMs.
Lacks tools for database versioning and schema migrations, forcing teams to manage SQL scripts manually or rely on external tools, increasing maintenance overhead.
As a niche F# library, it has a smaller community and fewer third-party extensions compared to mainstream ORMs, which may affect long-term support and tooling.