Functional facade for SharpCoreDB.
Version: v1.9.1
Package: SharpCoreDB.Functional
- ✅ Aligned package metadata and version references to the synchronized 1.9.1 release line.
- ✅ Release automation now publishes all packable SharpCoreDB packages in CI/CD.
- Functional wrappers for database workflows
- Core types:
Option<T>,Fin<T>,Seq<T>, andUnit - Functional query/command style extensions over
DatabaseandIDatabase - Works as base module for Dapper and EF Core functional adapters
- Functional package introduced and aligned to
v1.9.0 - Documentation aligned with modular adapter ecosystem
- Maintains optional architecture with transitive dependency flow
dotnet add package SharpCoreDB.Functional --version 1.9.0SharpCoreDB.Functional.DapperSharpCoreDB.Functional.EntityFrameworkCore
docs/INDEX.md
Database.Functional()/IDatabase.Functional()entry pointsGetByIdAsync<T>(...) -> Task<Option<T>>FindOneAsync<T>(...) -> Task<Option<T>>QueryAsync<T>(...) -> Task<Seq<T>>InsertAsync<T>(...) -> Task<Fin<Unit>>UpdateAsync<T>(...) -> Task<Fin<Unit>>DeleteAsync(...) -> Task<Fin<Unit>>CountAsync(...) -> Task<long>
The functional facade supports SQL extensions that map directly to Option<T> behavior.
SELECT Id, Name, Email OPTIONALLY FROM Users
WHERE Email IS SOME;var fdb = database.Functional();
var users = await fdb.ExecuteFunctionalSqlAsync<UserDto>(
"SELECT Id, Name, Email OPTIONALLY FROM Users WHERE Email IS SOME");OPTIONALLY FROMIS SOMEIS NONEMATCH SOME <column>MATCH NONE <column>UNWRAP <column> AS <alias> [DEFAULT '<value>']
dotnet test tests/SharpCoreDB.Functional.Tests --filter "FullyQualifiedName~FunctionalSqlSyntaxTests"Source: tests/SharpCoreDB.Functional.Tests/FunctionalSqlSyntaxTests.cs
var dbf = database.Functional();
var result = await dbf
.GetByIdAsync<User>(Tables.Users, userId, cancellationToken: ct)
.Map(opt => opt.Map(user => user with { LastSeenUtc = DateTime.UtcNow }))
.Map(opt => opt.ToFin(Errors.UserNotFound));
result.Match(
Succ: _ => Console.WriteLine("updated"),
Fail: err => Console.WriteLine(err.Message));