BitBadger.Documents.Sqlite
4.0.0-rc5
See the version list below for details.
dotnet add package BitBadger.Documents.Sqlite --version 4.0.0-rc5
NuGet\Install-Package BitBadger.Documents.Sqlite -Version 4.0.0-rc5
<PackageReference Include="BitBadger.Documents.Sqlite" Version="4.0.0-rc5" />
paket add BitBadger.Documents.Sqlite --version 4.0.0-rc5
#r "nuget: BitBadger.Documents.Sqlite, 4.0.0-rc5"
// Install BitBadger.Documents.Sqlite as a Cake Addin #addin nuget:?package=BitBadger.Documents.Sqlite&version=4.0.0-rc5&prerelease // Install BitBadger.Documents.Sqlite as a Cake Tool #tool nuget:?package=BitBadger.Documents.Sqlite&version=4.0.0-rc5&prerelease
BitBadger.Documents.Sqlite
This package provides a lightweight document library backed by SQLite. It also provides streamlined functions for traditional ADO.NET functionality where relational data is required. Both C# and F# have first-class implementations.
Features
- Select, insert, update, save (upsert), delete, count, and check existence of documents, and create tables and indexes for these documents
- Address documents via ID or via comparison on any field
- Access documents as your domain models (<abbr title="Plain Old CLR Objects">POCO</abbr>s)
- Use
Task
-based async for all data access functions - Use building blocks for more complex queries
Getting Started
Once the package is installed, the library needs a connection string. Once it has been obtained / constructed, provide it to the library:
// C#
using BitBadger.Documents.Sqlite;
//...
Sqlite.Configuration.UseConnectionString("connection-string");
// A new, open connection to the database can be obtained via
// Sqlite.Configuration.DbConn()
// F#
open BitBadger.Documents.Sqlite
// ...
Configuration.useConnectionString "connection-string"
// A new, open connection to the database can be obtained via
// Configuration.dbConn ()
By default, the library uses a System.Text.Json
-based serializer configured to use the FSharp.SystemTextJson
converter. To provide a different serializer (different options, more converters, etc.), construct it to implement IDocumentSerializer
and provide it via Configuration.useSerializer
. If custom serialization makes the serialized Id field not be Id
, that will also need to be configured.
Using
Retrieve all customers:
// C#; parameter is table name
// Find.All type signature is Func<string, Task<List<TDoc>>>
var customers = await Find.All<Customer>("customer");
// F#
// Find.all type signature is string -> Task<'TDoc list>
let! customers = Find.all<Customer> "customer"
Select a customer by ID:
// C#; parameters are table name and ID
// Find.ById type signature is Func<string, TKey, Task<TDoc?>>
var customer = await Find.ById<string, Customer>("customer", "123");
// F#
// Find.byId type signature is string -> 'TKey -> Task<'TDoc option>
let! customer = Find.byId<string, Customer> "customer" "123"
(keys are treated as strings in the database)
Count customers in Atlanta:
// C#; parameters are table name, field, operator, and value
// Count.ByField type signature is Func<string, Field, Task<long>>
var customerCount = await Count.ByField("customer", Field.Equal("City", "Atlanta"));
// F#
// Count.byField type signature is string -> Field -> Task<int64>
let! customerCount = Count.byField "customer" (Field.Equal "City" "Atlanta")
Delete customers in Chicago: (no offense, Second City; just an example...)
// C#; parameters are same as above, except return is void
// Delete.ByField type signature is Func<string, Field, Task>
await Delete.ByField("customer", Field.Equal("City", "Chicago"));
// F#
// Delete.byField type signature is string -> string -> Op -> obj -> Task<unit>
do! Delete.byField "customer" (Field.Equal "City" "Chicago")
More Information
The project site has full details on how to use this library.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- BitBadger.Documents.Common (>= 4.0.0-rc5)
- FSharp.Core (>= 8.0.300)
- Microsoft.Data.Sqlite (>= 8.0.6)
-
net8.0
- BitBadger.Documents.Common (>= 4.0.0-rc5)
- FSharp.Core (>= 8.0.300)
- Microsoft.Data.Sqlite (>= 8.0.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.0 | 29 | 12/18/2024 |
4.0.0-rc5 | 93 | 9/18/2024 |
4.0.0-rc4 | 104 | 9/17/2024 |
4.0.0-rc3 | 124 | 8/23/2024 |
4.0.0-rc2 | 115 | 8/22/2024 |
4.0.0-rc1 | 106 | 8/19/2024 |
3.1.0 | 119 | 6/6/2024 |
3.0.0 | 141 | 4/21/2024 |
3.0.0-rc-2 | 226 | 1/24/2024 |
3.0.0-rc-1 | 145 | 12/31/2023 |
From v3.1: (see project site for breaking changes and compatibility)
- Change ByField to ByFields
- Support dot-access to nested document fields
- Add Find*Ordered functions/methods
Release Candidate Changes:
- from v4-rc4: Field construction functions are now generic.
- from v4-rc3: Add In/InArray field comparisons, revamp internal comparison handling.
- from v4-rc2: preserve additional ORDER BY qualifiers.
- from v4-rc1: add case-insensitive ordering.