Drop .NET 6; drop PostgreSQL 12, add 17
- Update generic types for F# 9 nullable - Update deps, force upgrade on vulnerable packages
This commit is contained in:
parent
3db537f14e
commit
5bb9eec4a8
@ -13,7 +13,9 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FSharp.SystemTextJson" Version="1.3.13" />
|
<PackageReference Include="FSharp.SystemTextJson" Version="1.3.13" />
|
||||||
<PackageReference Update="FSharp.Core" Version="8.0.300" />
|
<PackageReference Update="FSharp.Core" Version="9.0.100" />
|
||||||
|
<PackageReference Include="System.Text.Encodings.Web" Version="9.0.0" />
|
||||||
|
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net6.0;net8.0;net9.0</TargetFrameworks>
|
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||||
<DebugType>embedded</DebugType>
|
<DebugType>embedded</DebugType>
|
||||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||||
<AssemblyVersion>4.0.0.0</AssemblyVersion>
|
<AssemblyVersion>4.0.0.0</AssemblyVersion>
|
||||||
|
@ -14,8 +14,9 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Npgsql" Version="9.0.1" />
|
||||||
<PackageReference Include="Npgsql.FSharp" Version="5.7.0" />
|
<PackageReference Include="Npgsql.FSharp" Version="5.7.0" />
|
||||||
<PackageReference Update="FSharp.Core" Version="8.0.300" />
|
<PackageReference Update="FSharp.Core" Version="9.0.100" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -71,7 +71,7 @@ module WithProps =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
||||||
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
||||||
let FirstByField<'TDoc when 'TDoc: null>(tableName, field, sqlProps) =
|
let FirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, field, sqlProps) =
|
||||||
WithProps.Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field, sqlProps)
|
WithProps.Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field, sqlProps)
|
||||||
|
|
||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
@ -144,7 +144,7 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
||||||
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
||||||
let FirstByField<'TDoc when 'TDoc: null>(tableName, field) =
|
let FirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, field) =
|
||||||
Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field)
|
Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field)
|
||||||
|
|
||||||
|
|
||||||
@ -248,7 +248,7 @@ type NpgsqlConnectionCSharpCompatExtensions =
|
|||||||
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
[<System.Obsolete "Use FindFirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FindFirstByFields instead ~ will be removed in v4.1">]
|
||||||
static member inline FindFirstByField<'TDoc when 'TDoc: null>(conn, tableName, field) =
|
static member inline FindFirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(conn, tableName, field) =
|
||||||
WithProps.Find.FirstByFields<'TDoc>(tableName, Any, [ field ], Sql.existingConnection conn)
|
WithProps.Find.FirstByFields<'TDoc>(tableName, Any, [ field ], Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Patch documents using a JSON field comparison query in the WHERE clause (->> =)
|
/// Patch documents using a JSON field comparison query in the WHERE clause (->> =)
|
||||||
|
@ -211,7 +211,7 @@ type NpgsqlConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Execute a query that returns one or no results; returns None if not found
|
/// Execute a query that returns one or no results; returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline CustomSingle<'TDoc when 'TDoc: null>(
|
static member inline CustomSingle<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
conn, query, parameters, mapFunc: System.Func<RowReader, 'TDoc>) =
|
conn, query, parameters, mapFunc: System.Func<RowReader, 'TDoc>) =
|
||||||
WithProps.Custom.Single<'TDoc>(query, parameters, mapFunc, Sql.existingConnection conn)
|
WithProps.Custom.Single<'TDoc>(query, parameters, mapFunc, Sql.existingConnection conn)
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ type NpgsqlConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Retrieve a document by its ID; returns None if not found
|
/// Retrieve a document by its ID; returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindById<'TKey, 'TDoc when 'TDoc: null>(conn, tableName, docId: 'TKey) =
|
static member inline FindById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(conn, tableName, docId: 'TKey) =
|
||||||
WithProps.Find.ById<'TKey, 'TDoc>(tableName, docId, Sql.existingConnection conn)
|
WithProps.Find.ById<'TKey, 'TDoc>(tableName, docId, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve documents matching a JSON field comparison query (->> =)
|
/// Retrieve documents matching a JSON field comparison query (->> =)
|
||||||
@ -339,38 +339,41 @@ type NpgsqlConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByFields<'TDoc when 'TDoc: null>(conn, tableName, howMatched, fields) =
|
static member inline FindFirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
conn, tableName, howMatched, fields) =
|
||||||
WithProps.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, Sql.existingConnection conn)
|
WithProps.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
||||||
/// document; returns null if not found
|
/// document; returns null if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByFieldsOrdered<'TDoc when 'TDoc: null>(
|
static member inline FindFirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
conn, tableName, howMatched, queryFields, orderFields) =
|
conn, tableName, howMatched, queryFields, orderFields) =
|
||||||
WithProps.Find.FirstByFieldsOrdered<'TDoc>(
|
WithProps.Find.FirstByFieldsOrdered<'TDoc>(
|
||||||
tableName, howMatched, queryFields, orderFields, Sql.existingConnection conn)
|
tableName, howMatched, queryFields, orderFields, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>); returns None if not found
|
/// Retrieve the first document matching a JSON containment query (@>); returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByContains<'TDoc when 'TDoc: null>(conn, tableName, criteria: obj) =
|
static member inline FindFirstByContains<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
conn, tableName, criteria: obj) =
|
||||||
WithProps.Find.FirstByContains<'TDoc>(tableName, criteria, Sql.existingConnection conn)
|
WithProps.Find.FirstByContains<'TDoc>(tableName, criteria, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
||||||
/// returns None if not found
|
/// returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByContainsOrdered<'TDoc when 'TDoc: null>(
|
static member inline FindFirstByContainsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
conn, tableName, criteria: obj, orderFields) =
|
conn, tableName, criteria: obj, orderFields) =
|
||||||
WithProps.Find.FirstByContainsOrdered<'TDoc>(tableName, criteria, orderFields, Sql.existingConnection conn)
|
WithProps.Find.FirstByContainsOrdered<'TDoc>(tableName, criteria, orderFields, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?); returns None if not found
|
/// Retrieve the first document matching a JSON Path match query (@?); returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByJsonPath<'TDoc when 'TDoc: null>(conn, tableName, jsonPath) =
|
static member inline FindFirstByJsonPath<'TDoc when 'TDoc: null and 'TDoc: not struct>(conn, tableName, jsonPath) =
|
||||||
WithProps.Find.FirstByJsonPath<'TDoc>(tableName, jsonPath, Sql.existingConnection conn)
|
WithProps.Find.FirstByJsonPath<'TDoc>(tableName, jsonPath, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
||||||
/// returns None if not found
|
/// returns None if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByJsonPathOrdered<'TDoc when 'TDoc: null>(conn, tableName, jsonPath, orderFields) =
|
static member inline FindFirstByJsonPathOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
conn, tableName, jsonPath, orderFields) =
|
||||||
WithProps.Find.FirstByJsonPathOrdered<'TDoc>(tableName, jsonPath, orderFields, Sql.existingConnection conn)
|
WithProps.Find.FirstByJsonPathOrdered<'TDoc>(tableName, jsonPath, orderFields, Sql.existingConnection conn)
|
||||||
|
|
||||||
/// Update an entire document by its ID
|
/// Update an entire document by its ID
|
||||||
|
@ -272,7 +272,7 @@ module WithProps =
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Execute a query that returns one or no results; returns null if not found
|
/// Execute a query that returns one or no results; returns null if not found
|
||||||
let Single<'TDoc when 'TDoc: null>(
|
let Single<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
query, parameters, mapFunc: System.Func<RowReader, 'TDoc>, sqlProps) = backgroundTask {
|
query, parameters, mapFunc: System.Func<RowReader, 'TDoc>, sqlProps) = backgroundTask {
|
||||||
let! result = single<'TDoc> query parameters mapFunc.Invoke sqlProps
|
let! result = single<'TDoc> query parameters mapFunc.Invoke sqlProps
|
||||||
return Option.toObj result
|
return Option.toObj result
|
||||||
@ -439,7 +439,7 @@ module WithProps =
|
|||||||
Custom.single (Query.byId (Query.find tableName) docId) [ idParam docId ] fromData<'TDoc> sqlProps
|
Custom.single (Query.byId (Query.find tableName) docId) [ idParam docId ] fromData<'TDoc> sqlProps
|
||||||
|
|
||||||
/// Retrieve a document by its ID (returns null if not found)
|
/// Retrieve a document by its ID (returns null if not found)
|
||||||
let ById<'TKey, 'TDoc when 'TDoc: null>(tableName, docId: 'TKey, sqlProps) =
|
let ById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, docId: 'TKey, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
Query.byId (Query.find tableName) docId, [ idParam docId ], fromData<'TDoc>, sqlProps)
|
Query.byId (Query.find tableName) docId, [ idParam docId ], fromData<'TDoc>, sqlProps)
|
||||||
|
|
||||||
@ -549,7 +549,7 @@ module WithProps =
|
|||||||
sqlProps
|
sqlProps
|
||||||
|
|
||||||
/// Retrieve the first document matching JSON field comparisons (->> =); returns null if not found
|
/// Retrieve the first document matching JSON field comparisons (->> =); returns null if not found
|
||||||
let FirstByFields<'TDoc when 'TDoc: null>(tableName, howMatched, fields, sqlProps) =
|
let FirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, howMatched, fields, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byFields (Query.find tableName) howMatched fields} LIMIT 1",
|
$"{Query.byFields (Query.find tableName) howMatched fields} LIMIT 1",
|
||||||
addFieldParams fields [],
|
addFieldParams fields [],
|
||||||
@ -568,7 +568,8 @@ module WithProps =
|
|||||||
|
|
||||||
/// Retrieve the first document matching JSON field comparisons (->> =) ordered by the given fields in the
|
/// Retrieve the first document matching JSON field comparisons (->> =) ordered by the given fields in the
|
||||||
/// document; returns null if not found
|
/// document; returns null if not found
|
||||||
let FirstByFieldsOrdered<'TDoc when 'TDoc: null>(tableName, howMatched, queryFields, orderFields, sqlProps) =
|
let FirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, howMatched, queryFields, orderFields, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byFields (Query.find tableName) howMatched queryFields}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
$"{Query.byFields (Query.find tableName) howMatched queryFields}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
||||||
addFieldParams queryFields [],
|
addFieldParams queryFields [],
|
||||||
@ -585,7 +586,7 @@ module WithProps =
|
|||||||
sqlProps
|
sqlProps
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>); returns null if not found
|
/// Retrieve the first document matching a JSON containment query (@>); returns null if not found
|
||||||
let FirstByContains<'TDoc when 'TDoc: null>(tableName, criteria: obj, sqlProps) =
|
let FirstByContains<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, criteria: obj, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byContains (Query.find tableName)} LIMIT 1",
|
$"{Query.byContains (Query.find tableName)} LIMIT 1",
|
||||||
[ jsonParam "@criteria" criteria ],
|
[ jsonParam "@criteria" criteria ],
|
||||||
@ -604,7 +605,8 @@ module WithProps =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the
|
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the
|
||||||
/// document; returns null if not found
|
/// document; returns null if not found
|
||||||
let FirstByContainsOrdered<'TDoc when 'TDoc: null>(tableName, criteria: obj, orderFields, sqlProps) =
|
let FirstByContainsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, criteria: obj, orderFields, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byContains (Query.find tableName)}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
$"{Query.byContains (Query.find tableName)}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
||||||
[ jsonParam "@criteria" criteria ],
|
[ jsonParam "@criteria" criteria ],
|
||||||
@ -621,7 +623,7 @@ module WithProps =
|
|||||||
sqlProps
|
sqlProps
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?); returns null if not found
|
/// Retrieve the first document matching a JSON Path match query (@?); returns null if not found
|
||||||
let FirstByJsonPath<'TDoc when 'TDoc: null>(tableName, jsonPath, sqlProps) =
|
let FirstByJsonPath<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, jsonPath, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byPathMatch (Query.find tableName)} LIMIT 1",
|
$"{Query.byPathMatch (Query.find tableName)} LIMIT 1",
|
||||||
[ "@path", Sql.string jsonPath ],
|
[ "@path", Sql.string jsonPath ],
|
||||||
@ -640,7 +642,8 @@ module WithProps =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the
|
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the
|
||||||
/// document; returns null if not found
|
/// document; returns null if not found
|
||||||
let FirstByJsonPathOrdered<'TDoc when 'TDoc: null>(tableName, jsonPath, orderFields, sqlProps) =
|
let FirstByJsonPathOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, jsonPath, orderFields, sqlProps) =
|
||||||
Custom.Single<'TDoc>(
|
Custom.Single<'TDoc>(
|
||||||
$"{Query.byPathMatch (Query.find tableName)}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
$"{Query.byPathMatch (Query.find tableName)}{Query.orderBy orderFields PostgreSQL} LIMIT 1",
|
||||||
[ "@path", Sql.string jsonPath ],
|
[ "@path", Sql.string jsonPath ],
|
||||||
@ -779,7 +782,8 @@ module Custom =
|
|||||||
WithProps.Custom.single<'TDoc> query parameters mapFunc (fromDataSource ())
|
WithProps.Custom.single<'TDoc> query parameters mapFunc (fromDataSource ())
|
||||||
|
|
||||||
/// Execute a query that returns one or no results; returns null if not found
|
/// Execute a query that returns one or no results; returns null if not found
|
||||||
let Single<'TDoc when 'TDoc: null>(query, parameters, mapFunc: System.Func<RowReader, 'TDoc>) =
|
let Single<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
query, parameters, mapFunc: System.Func<RowReader, 'TDoc>) =
|
||||||
WithProps.Custom.Single<'TDoc>(query, parameters, mapFunc, fromDataSource ())
|
WithProps.Custom.Single<'TDoc>(query, parameters, mapFunc, fromDataSource ())
|
||||||
|
|
||||||
/// Execute a query that returns no results
|
/// Execute a query that returns no results
|
||||||
@ -910,7 +914,7 @@ module Find =
|
|||||||
WithProps.Find.byId<'TKey, 'TDoc> tableName docId (fromDataSource ())
|
WithProps.Find.byId<'TKey, 'TDoc> tableName docId (fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve a document by its ID; returns null if not found
|
/// Retrieve a document by its ID; returns null if not found
|
||||||
let ById<'TKey, 'TDoc when 'TDoc: null>(tableName, docId: 'TKey) =
|
let ById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, docId: 'TKey) =
|
||||||
WithProps.Find.ById<'TKey, 'TDoc>(tableName, docId, fromDataSource ())
|
WithProps.Find.ById<'TKey, 'TDoc>(tableName, docId, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve documents matching a JSON field comparison query (->> =)
|
/// Retrieve documents matching a JSON field comparison query (->> =)
|
||||||
@ -973,7 +977,7 @@ module Find =
|
|||||||
WithProps.Find.firstByFields<'TDoc> tableName howMatched fields (fromDataSource ())
|
WithProps.Find.firstByFields<'TDoc> tableName howMatched fields (fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
||||||
let FirstByFields<'TDoc when 'TDoc: null>(tableName, howMatched, fields) =
|
let FirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, howMatched, fields) =
|
||||||
WithProps.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, fromDataSource ())
|
WithProps.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
||||||
@ -984,7 +988,8 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
/// Retrieve the first document matching a JSON field comparison query (->> =) ordered by the given fields in the
|
||||||
/// document; returns null if not found
|
/// document; returns null if not found
|
||||||
let FirstByFieldsOrdered<'TDoc when 'TDoc: null>(tableName, howMatched, queryFields, orderFields) =
|
let FirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, howMatched, queryFields, orderFields) =
|
||||||
WithProps.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, fromDataSource ())
|
WithProps.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>); returns None if not found
|
/// Retrieve the first document matching a JSON containment query (@>); returns None if not found
|
||||||
@ -993,7 +998,7 @@ module Find =
|
|||||||
WithProps.Find.firstByContains<'TDoc> tableName criteria (fromDataSource ())
|
WithProps.Find.firstByContains<'TDoc> tableName criteria (fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>); returns null if not found
|
/// Retrieve the first document matching a JSON containment query (@>); returns null if not found
|
||||||
let FirstByContains<'TDoc when 'TDoc: null>(tableName, criteria: obj) =
|
let FirstByContains<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, criteria: obj) =
|
||||||
WithProps.Find.FirstByContains<'TDoc>(tableName, criteria, fromDataSource ())
|
WithProps.Find.FirstByContains<'TDoc>(tableName, criteria, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
||||||
@ -1004,7 +1009,7 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON containment query (@>) ordered by the given fields in the document;
|
||||||
/// returns null if not found
|
/// returns null if not found
|
||||||
let FirstByContainsOrdered<'TDoc when 'TDoc: null>(tableName, criteria: obj, orderFields) =
|
let FirstByContainsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, criteria: obj, orderFields) =
|
||||||
WithProps.Find.FirstByContainsOrdered<'TDoc>(tableName, criteria, orderFields, fromDataSource ())
|
WithProps.Find.FirstByContainsOrdered<'TDoc>(tableName, criteria, orderFields, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?); returns None if not found
|
/// Retrieve the first document matching a JSON Path match query (@?); returns None if not found
|
||||||
@ -1013,7 +1018,7 @@ module Find =
|
|||||||
WithProps.Find.firstByJsonPath<'TDoc> tableName jsonPath (fromDataSource ())
|
WithProps.Find.firstByJsonPath<'TDoc> tableName jsonPath (fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?); returns null if not found
|
/// Retrieve the first document matching a JSON Path match query (@?); returns null if not found
|
||||||
let FirstByJsonPath<'TDoc when 'TDoc: null>(tableName, jsonPath) =
|
let FirstByJsonPath<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, jsonPath) =
|
||||||
WithProps.Find.FirstByJsonPath<'TDoc>(tableName, jsonPath, fromDataSource ())
|
WithProps.Find.FirstByJsonPath<'TDoc>(tableName, jsonPath, fromDataSource ())
|
||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
||||||
@ -1024,7 +1029,7 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
/// Retrieve the first document matching a JSON Path match query (@?) ordered by the given fields in the document;
|
||||||
/// returns null if not found
|
/// returns null if not found
|
||||||
let FirstByJsonPathOrdered<'TDoc when 'TDoc: null>(tableName, jsonPath, orderFields) =
|
let FirstByJsonPathOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, jsonPath, orderFields) =
|
||||||
WithProps.Find.FirstByJsonPathOrdered<'TDoc>(tableName, jsonPath, orderFields, fromDataSource ())
|
WithProps.Find.FirstByJsonPathOrdered<'TDoc>(tableName, jsonPath, orderFields, fromDataSource ())
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.6" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" />
|
||||||
<PackageReference Update="FSharp.Core" Version="8.0.300" />
|
<PackageReference Update="FSharp.Core" Version="9.0.100" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -71,7 +71,7 @@ module WithConn =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
||||||
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
||||||
let FirstByField<'TDoc when 'TDoc: null>(tableName, field, conn) =
|
let FirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, field, conn) =
|
||||||
WithConn.Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field, conn)
|
WithConn.Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field, conn)
|
||||||
|
|
||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
@ -144,7 +144,7 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison (->> =); returns null if not found
|
||||||
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FirstByFields instead ~ will be removed in v4.1">]
|
||||||
let FirstByField<'TDoc when 'TDoc: null>(tableName, field) =
|
let FirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, field) =
|
||||||
Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field)
|
Find.FirstByFields<'TDoc>(tableName, Any, Seq.singleton field)
|
||||||
|
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ type SqliteConnectionCSharpCompatExtensions =
|
|||||||
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
/// Retrieve the first document matching a JSON field comparison query (->> =); returns null if not found
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
[<System.Obsolete "Use FindFirstByFields instead ~ will be removed in v4.1">]
|
[<System.Obsolete "Use FindFirstByFields instead ~ will be removed in v4.1">]
|
||||||
static member inline FindFirstByField<'TDoc when 'TDoc: null>(conn, tableName, field) =
|
static member inline FindFirstByField<'TDoc when 'TDoc: null and 'TDoc: not struct>(conn, tableName, field) =
|
||||||
WithConn.Find.FirstByFields<'TDoc>(tableName, Any, [ field ], conn)
|
WithConn.Find.FirstByFields<'TDoc>(tableName, Any, [ field ], conn)
|
||||||
|
|
||||||
/// Patch documents using a JSON field comparison query in the WHERE clause (->> =)
|
/// Patch documents using a JSON field comparison query in the WHERE clause (->> =)
|
||||||
|
@ -131,7 +131,7 @@ type SqliteConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Execute a query that returns one or no results
|
/// Execute a query that returns one or no results
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline CustomSingle<'TDoc when 'TDoc: null>(
|
static member inline CustomSingle<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
conn, query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>) =
|
conn, query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>) =
|
||||||
WithConn.Custom.Single<'TDoc>(query, parameters, mapFunc, conn)
|
WithConn.Custom.Single<'TDoc>(query, parameters, mapFunc, conn)
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ type SqliteConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Retrieve a document by its ID
|
/// Retrieve a document by its ID
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindById<'TKey, 'TDoc when 'TDoc: null>(conn, tableName, docId: 'TKey) =
|
static member inline FindById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(conn, tableName, docId: 'TKey) =
|
||||||
WithConn.Find.ById<'TKey, 'TDoc>(tableName, docId, conn)
|
WithConn.Find.ById<'TKey, 'TDoc>(tableName, docId, conn)
|
||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields
|
/// Retrieve documents via a comparison on JSON fields
|
||||||
@ -213,13 +213,14 @@ type SqliteConnectionCSharpExtensions =
|
|||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByFields<'TDoc when 'TDoc: null>(conn, tableName, howMatched, fields) =
|
static member inline FindFirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
conn, tableName, howMatched, fields) =
|
||||||
WithConn.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, conn)
|
WithConn.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, conn)
|
||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning only
|
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning only
|
||||||
/// the first result
|
/// the first result
|
||||||
[<Extension>]
|
[<Extension>]
|
||||||
static member inline FindFirstByFieldsOrdered<'TDoc when 'TDoc: null>(
|
static member inline FindFirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
conn, tableName, howMatched, queryFields, orderFields) =
|
conn, tableName, howMatched, queryFields, orderFields) =
|
||||||
WithConn.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, conn)
|
WithConn.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, conn)
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ module WithConn =
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Execute a query that returns one or no results (returns null if not found)
|
/// Execute a query that returns one or no results (returns null if not found)
|
||||||
let Single<'TDoc when 'TDoc: null>(
|
let Single<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>, conn
|
query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>, conn
|
||||||
) = backgroundTask {
|
) = backgroundTask {
|
||||||
let! result = single<'TDoc> query parameters mapFunc.Invoke conn
|
let! result = single<'TDoc> query parameters mapFunc.Invoke conn
|
||||||
@ -358,7 +358,7 @@ module WithConn =
|
|||||||
Custom.single<'TDoc> (Query.byId (Query.find tableName) docId) [ idParam docId ] fromData<'TDoc> conn
|
Custom.single<'TDoc> (Query.byId (Query.find tableName) docId) [ idParam docId ] fromData<'TDoc> conn
|
||||||
|
|
||||||
/// Retrieve a document by its ID (returns null if not found)
|
/// Retrieve a document by its ID (returns null if not found)
|
||||||
let ById<'TKey, 'TDoc when 'TDoc: null>(tableName, docId: 'TKey, conn) =
|
let ById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, docId: 'TKey, conn) =
|
||||||
Custom.Single<'TDoc>(Query.byId (Query.find tableName) docId, [ idParam docId ], fromData<'TDoc>, conn)
|
Custom.Single<'TDoc>(Query.byId (Query.find tableName) docId, [ idParam docId ], fromData<'TDoc>, conn)
|
||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields
|
/// Retrieve documents via a comparison on JSON fields
|
||||||
@ -405,7 +405,7 @@ module WithConn =
|
|||||||
conn
|
conn
|
||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
||||||
let FirstByFields<'TDoc when 'TDoc: null>(tableName, howMatched, fields, conn) =
|
let FirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, howMatched, fields, conn) =
|
||||||
Custom.Single(
|
Custom.Single(
|
||||||
$"{Query.byFields (Query.find tableName) howMatched fields} LIMIT 1",
|
$"{Query.byFields (Query.find tableName) howMatched fields} LIMIT 1",
|
||||||
addFieldParams fields [],
|
addFieldParams fields [],
|
||||||
@ -424,7 +424,8 @@ module WithConn =
|
|||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning
|
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning
|
||||||
/// only the first result
|
/// only the first result
|
||||||
let FirstByFieldsOrdered<'TDoc when 'TDoc: null>(tableName, howMatched, queryFields, orderFields, conn) =
|
let FirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, howMatched, queryFields, orderFields, conn) =
|
||||||
Custom.Single(
|
Custom.Single(
|
||||||
$"{Query.byFields (Query.find tableName) howMatched queryFields}{Query.orderBy orderFields SQLite} LIMIT 1",
|
$"{Query.byFields (Query.find tableName) howMatched queryFields}{Query.orderBy orderFields SQLite} LIMIT 1",
|
||||||
addFieldParams queryFields [],
|
addFieldParams queryFields [],
|
||||||
@ -529,7 +530,8 @@ module Custom =
|
|||||||
WithConn.Custom.single<'TDoc> query parameters mapFunc conn
|
WithConn.Custom.single<'TDoc> query parameters mapFunc conn
|
||||||
|
|
||||||
/// Execute a query that returns one or no results (returns null if not found)
|
/// Execute a query that returns one or no results (returns null if not found)
|
||||||
let Single<'TDoc when 'TDoc: null>(query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>) =
|
let Single<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
query, parameters, mapFunc: System.Func<SqliteDataReader, 'TDoc>) =
|
||||||
use conn = Configuration.dbConn ()
|
use conn = Configuration.dbConn ()
|
||||||
WithConn.Custom.Single<'TDoc>(query, parameters, mapFunc, conn)
|
WithConn.Custom.Single<'TDoc>(query, parameters, mapFunc, conn)
|
||||||
|
|
||||||
@ -652,7 +654,7 @@ module Find =
|
|||||||
WithConn.Find.byId<'TKey, 'TDoc> tableName docId conn
|
WithConn.Find.byId<'TKey, 'TDoc> tableName docId conn
|
||||||
|
|
||||||
/// Retrieve a document by its ID (returns null if not found)
|
/// Retrieve a document by its ID (returns null if not found)
|
||||||
let ById<'TKey, 'TDoc when 'TDoc: null>(tableName, docId) =
|
let ById<'TKey, 'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, docId) =
|
||||||
use conn = Configuration.dbConn ()
|
use conn = Configuration.dbConn ()
|
||||||
WithConn.Find.ById<'TKey, 'TDoc>(tableName, docId, conn)
|
WithConn.Find.ById<'TKey, 'TDoc>(tableName, docId, conn)
|
||||||
|
|
||||||
@ -685,7 +687,7 @@ module Find =
|
|||||||
WithConn.Find.firstByFields<'TDoc> tableName howMatched fields conn
|
WithConn.Find.firstByFields<'TDoc> tableName howMatched fields conn
|
||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
/// Retrieve documents via a comparison on JSON fields, returning only the first result
|
||||||
let FirstByFields<'TDoc when 'TDoc: null>(tableName, howMatched, fields) =
|
let FirstByFields<'TDoc when 'TDoc: null and 'TDoc: not struct>(tableName, howMatched, fields) =
|
||||||
use conn = Configuration.dbConn ()
|
use conn = Configuration.dbConn ()
|
||||||
WithConn.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, conn)
|
WithConn.Find.FirstByFields<'TDoc>(tableName, howMatched, fields, conn)
|
||||||
|
|
||||||
@ -698,7 +700,8 @@ module Find =
|
|||||||
|
|
||||||
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning only
|
/// Retrieve documents via a comparison on JSON fields ordered by the given fields in the document, returning only
|
||||||
/// the first result
|
/// the first result
|
||||||
let FirstByFieldsOrdered<'TDoc when 'TDoc: null>(tableName, howMatched, queryFields, orderFields) =
|
let FirstByFieldsOrdered<'TDoc when 'TDoc: null and 'TDoc: not struct>(
|
||||||
|
tableName, howMatched, queryFields, orderFields) =
|
||||||
use conn = Configuration.dbConn ()
|
use conn = Configuration.dbConn ()
|
||||||
WithConn.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, conn)
|
WithConn.Find.FirstByFieldsOrdered<'TDoc>(tableName, howMatched, queryFields, orderFields, conn)
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Expecto" Version="10.2.1" />
|
<PackageReference Include="Expecto" Version="10.2.1" />
|
||||||
<PackageReference Update="FSharp.Core" Version="8.0.300" />
|
<PackageReference Update="FSharp.Core" Version="9.0.100" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -7,8 +7,8 @@ dotnet build BitBadger.Documents.sln --no-restore
|
|||||||
cd ./Tests || exit
|
cd ./Tests || exit
|
||||||
|
|
||||||
export BBDOX_PG_PORT=8301
|
export BBDOX_PG_PORT=8301
|
||||||
PG_VERSIONS=('12' '13' '14' '15' 'latest')
|
PG_VERSIONS=('13' '14' '15' '16' 'latest')
|
||||||
NET_VERSIONS=('6.0' '8.0' '9.0')
|
NET_VERSIONS=('8.0' '9.0')
|
||||||
|
|
||||||
for PG_VERSION in "${PG_VERSIONS[@]}"
|
for PG_VERSION in "${PG_VERSIONS[@]}"
|
||||||
do
|
do
|
||||||
|
Loading…
Reference in New Issue
Block a user