diff --git a/src/MyWebLog.Data/PostgresData.fs b/src/MyWebLog.Data/PostgresData.fs index b35ec62..b332065 100644 --- a/src/MyWebLog.Data/PostgresData.fs +++ b/src/MyWebLog.Data/PostgresData.fs @@ -14,11 +14,7 @@ type PostgresData(log: ILogger, ser: JsonSerializer) = /// Create any needed tables let ensureTables () = backgroundTask { // Set up the PostgreSQL document store - Configuration.useSerializer - { new IDocumentSerializer with - member _.Serialize<'T>(it: 'T) : string = Utils.serialize ser it - member _.Deserialize<'T>(it: string) : 'T = Utils.deserialize ser it - } + Configuration.useSerializer (Utils.createDocumentSerializer ser) let! tables = Custom.list "SELECT tablename FROM pg_tables WHERE schemaname = 'public'" [] diff --git a/src/MyWebLog.Data/SQLiteData.fs b/src/MyWebLog.Data/SQLiteData.fs index e312395..80b1ac4 100644 --- a/src/MyWebLog.Data/SQLiteData.fs +++ b/src/MyWebLog.Data/SQLiteData.fs @@ -15,7 +15,9 @@ type SQLiteData(conn: SqliteConnection, log: ILogger, ser: JsonSeria /// Create tables (and their associated indexes) if they do not exist let ensureTables () = backgroundTask { - + + Configuration.useSerializer (Utils.createDocumentSerializer ser) + let! tables = conn.customList "SELECT name FROM sqlite_master WHERE type = 'table'" [] _.GetString(0) let needsTable table = diff --git a/src/MyWebLog.Data/Utils.fs b/src/MyWebLog.Data/Utils.fs index f26ff02..228cb97 100644 --- a/src/MyWebLog.Data/Utils.fs +++ b/src/MyWebLog.Data/Utils.fs @@ -50,6 +50,16 @@ let serialize<'T> ser (item: 'T) = let deserialize<'T> (ser: JsonSerializer) value = JsonConvert.DeserializeObject<'T>(value, Json.settings ser) +open BitBadger.Documents + +/// Create a document serializer using the given JsonSerializer +let createDocumentSerializer ser = + { new IDocumentSerializer with + member _.Serialize<'T>(it: 'T) : string = serialize ser it + member _.Deserialize<'T>(it: string) : 'T = deserialize ser it + } + + open Microsoft.Extensions.Logging /// Log a migration step