BitBadger.Npgsql.Documents
2.0.0
dotnet add package BitBadger.Npgsql.Documents --version 2.0.0
NuGet\Install-Package BitBadger.Npgsql.Documents -Version 2.0.0
<PackageReference Include="BitBadger.Npgsql.Documents" Version="2.0.0" />
paket add BitBadger.Npgsql.Documents --version 2.0.0
#r "nuget: BitBadger.Npgsql.Documents, 2.0.0"
// Install BitBadger.Npgsql.Documents as a Cake Addin #addin nuget:?package=BitBadger.Npgsql.Documents&version=2.0.0 // Install BitBadger.Npgsql.Documents as a Cake Tool #tool nuget:?package=BitBadger.Npgsql.Documents&version=2.0.0
This package provides a set of functions that provide a document database interface to a data store backed by PostgreSQL. This library is targeted toward C# usage; for F#, see BitBadger.Npgsql.FSharp.Documents
.
Features
- Select, insert, update, save (upsert), delete, count, and check existence of documents, and create tables and indexes for these documents
- Addresses documents via ID; via equality on any property by using JSON containment queries; or via condition on any property using JSON Path queries
- Accesses documents as your domain models (<abbr title="Plain Old CLR Objects">POCO</abbr>s)
- Uses
Task
-based async for all data access functions - Uses building blocks for more complex queries
Getting Started
The main step is to set the data source with which the library will create connections. Construct an NpgsqlDataSource
instance, and provide it to the library:
using BitBadger.Npgsql.Documents
// ...
var dataSource = // ....
Configuration.UseDataSource(dataSource);
// ...
By default, the library uses a System.Text.Json
-based serializer configured to use the FSharp.SystemTextJson
converter (which will have no noticeable effect for C# uses). 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:
// parameter is table name
// returns Task<Customer list>
var customers = await Document.All<Customer>("customer");
Select a customer by ID:
// parameters are table name and ID
// returns Task<Customer option>
var customer = await Document.Find.ById<Customer>("customer", "123");
Count customers in Atlanta:
// parameters are table name and object used for JSON containment query
// return Task<int>
var customerCount = await Document.Count.ByContains("customer", new { City = "Atlanta" });
Delete customers in Chicago: (no offense, Second City; just an example...)
// parameters are table name and JSON Path expression
await Document.Delete.ByJsonPath("customer", "$.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 is compatible. 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.Npgsql.FSharp.Documents (>= 2.0.0)
- FSharp.Core (>= 8.0.100)
-
net7.0
- BitBadger.Npgsql.FSharp.Documents (>= 2.0.0)
- FSharp.Core (>= 8.0.100)
-
net8.0
- BitBadger.Npgsql.FSharp.Documents (>= 2.0.0)
- FSharp.Core (>= 8.0.100)
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 |
---|---|---|
2.0.0 | 487 | 12/2/2023 |
1.0.0 | 403 | 10/12/2023 |
1.0.0-beta3 | 374 | 6/28/2023 |
1.0.0-beta2 | 372 | 2/24/2023 |
1.0.0-beta | 368 | 2/20/2023 |
- BREAKING CHANGE: Remove ID column from database and from several function calls
- FEATURE: Support .NET 8