diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index b9690f2..a53054e 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,6 +1,6 @@
- net6.0
+ net7.0
embedded
2.0.0.0
2.0.0.0
diff --git a/src/MyWebLog.Data/MyWebLog.Data.fsproj b/src/MyWebLog.Data/MyWebLog.Data.fsproj
index 4f2b61b..eed7751 100644
--- a/src/MyWebLog.Data/MyWebLog.Data.fsproj
+++ b/src/MyWebLog.Data/MyWebLog.Data.fsproj
@@ -2,6 +2,7 @@
+
@@ -17,7 +18,6 @@
-
@@ -45,7 +45,7 @@
-
+
diff --git a/src/MyWebLog.Data/Postgres/PostgresHelpers.fs b/src/MyWebLog.Data/Postgres/PostgresHelpers.fs
index 2280095..3d3ba63 100644
--- a/src/MyWebLog.Data/Postgres/PostgresHelpers.fs
+++ b/src/MyWebLog.Data/Postgres/PostgresHelpers.fs
@@ -206,6 +206,10 @@ module Document =
/// Convert extra SQL to a for that can be appended to a query
let private moreSql sql = sql |> Option.map (fun it -> $" %s{it}") |> Option.defaultValue ""
+ /// Create a parameter for a @> (contains) query
+ let contains<'T> (name : string) ser (value : 'T) =
+ name, Sql.jsonb (Utils.serialize ser value)
+
/// Count documents for a web log
let countByWebLog conn table webLogId extraSql =
Sql.existingConnection conn
diff --git a/src/MyWebLog.Domain/MyWebLog.Domain.fsproj b/src/MyWebLog.Domain/MyWebLog.Domain.fsproj
index 49fa066..ad1ed87 100644
--- a/src/MyWebLog.Domain/MyWebLog.Domain.fsproj
+++ b/src/MyWebLog.Domain/MyWebLog.Domain.fsproj
@@ -8,7 +8,6 @@
-
diff --git a/src/MyWebLog.sln b/src/MyWebLog.sln
index a594b6e..f12f40f 100644
--- a/src/MyWebLog.sln
+++ b/src/MyWebLog.sln
@@ -9,6 +9,8 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "MyWebLog.Data", "MyWebLog.D
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "MyWebLog", "MyWebLog\MyWebLog.fsproj", "{5655B63D-429F-4CCD-A14C-FBD74D987ECB}"
EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Npgsql.FSharp.Documents", "Npgsql.FSharp.Documents\Npgsql.FSharp.Documents.fsproj", "{C5F5E68A-9C2E-4FC0-A8E3-D7A52CCE668F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -27,6 +29,10 @@ Global
{5655B63D-429F-4CCD-A14C-FBD74D987ECB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5655B63D-429F-4CCD-A14C-FBD74D987ECB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5655B63D-429F-4CCD-A14C-FBD74D987ECB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C5F5E68A-9C2E-4FC0-A8E3-D7A52CCE668F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C5F5E68A-9C2E-4FC0-A8E3-D7A52CCE668F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C5F5E68A-9C2E-4FC0-A8E3-D7A52CCE668F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C5F5E68A-9C2E-4FC0-A8E3-D7A52CCE668F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/MyWebLog/MyWebLog.fsproj b/src/MyWebLog/MyWebLog.fsproj
index 1473d53..646f1b1 100644
--- a/src/MyWebLog/MyWebLog.fsproj
+++ b/src/MyWebLog/MyWebLog.fsproj
@@ -29,7 +29,6 @@
-
diff --git a/src/Npgsql.FSharp.Documents/Library.fs b/src/Npgsql.FSharp.Documents/Library.fs
new file mode 100644
index 0000000..cbbbe00
--- /dev/null
+++ b/src/Npgsql.FSharp.Documents/Library.fs
@@ -0,0 +1,10 @@
+module Npgsql.FSharp.Documents
+
+
+/// Query construction functions
+module Query =
+
+ /// Create a parameter for a @> (contains) query
+ let contains<'T> (name : string) (value : 'T) =
+ name, Sql.jsonb (string value) // FIXME: need a serializer
+
diff --git a/src/Npgsql.FSharp.Documents/Npgsql.FSharp.Documents.fsproj b/src/Npgsql.FSharp.Documents/Npgsql.FSharp.Documents.fsproj
new file mode 100644
index 0000000..9f4040e
--- /dev/null
+++ b/src/Npgsql.FSharp.Documents/Npgsql.FSharp.Documents.fsproj
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+