Skip to content

Commit f33a396

Browse files
author
Jan Rochel
committed
refixed make_persistent
1 parent b0f08ea commit f33a396

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/extensions/ocsipersist-pgsql/ocsipersist.ml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,6 @@ let create_table db table =
8686
(key TEXT, value BYTEA, PRIMARY KEY(key))" table
8787
in exec db query [] >> Lwt.return ()
8888

89-
let insert db table key value =
90-
let query = sprintf "INSERT INTO %s VALUES ( $1 , $2 )
91-
ON CONFLICT ( key ) DO UPDATE SET value = $2 " table
92-
(*TODO: compatibility with < 9.5*)
93-
in exec db query [key; marshal value] >> Lwt.return ()
94-
9589

9690
type store = string
9791

@@ -103,17 +97,23 @@ type 'a t = {
10397
let open_store store = use_pool @@ fun db ->
10498
create_table db store >> Lwt.return store
10599

106-
let make_persistent ~store ~name ~default = use_pool @@ fun db ->
107-
insert db store name default >> Lwt.return {store = store; name = name}
100+
let make_persistent_worker ~store ~name ~default db =
101+
let query = sprintf "INSERT INTO %s VALUES ( $1 , $2 )
102+
ON CONFLICT ( key ) DO NOTHING" store in
103+
(*TODO: compatibility with < 9.5*)
104+
exec db query [name; marshal default] >> Lwt.return {store; name}
105+
106+
let make_persistent ~store ~name ~default =
107+
use_pool @@ fun db -> make_persistent_worker ~store ~name ~default db
108108

109109
let make_persistent_lazy_lwt ~store ~name ~default = use_pool @@ fun db ->
110-
let query = sprintf "SELECT value FROM %s WHERE key = $1 " store in
110+
let query = sprintf "SELECT 1 FROM %s WHERE key = $1 " store in
111111
lwt result = exec db query [name] in
112112
match result with
113113
| [] ->
114114
lwt default = default () in
115-
make_persistent ~store ~name ~default
116-
| xs -> Lwt.return {store = store; name = name}
115+
make_persistent_worker ~store ~name ~default db
116+
| _ -> Lwt.return {store = store; name = name}
117117

118118
let make_persistent_lazy ~store ~name ~default =
119119
let default () = Lwt.wrap default in
@@ -139,7 +139,10 @@ let find table key = use_pool @@ fun db ->
139139
Lwt.map (unmarshal @. one) (exec db query [key])
140140

141141
let add table key value = use_pool @@ fun db ->
142-
insert db table key value
142+
let query = sprintf "INSERT INTO %s VALUES ( $1 , $2 )
143+
ON CONFLICT ( key ) DO UPDATE SET value = $2 " table
144+
(*TODO: compatibility with < 9.5*)
145+
in exec db query [key; marshal value] >> Lwt.return ()
143146

144147
let replace_if_exists table key value = use_pool @@ fun db ->
145148
let query = sprintf "UPDATE %s SET value = $2 WHERE key = $1 RETURNING 0" table in

0 commit comments

Comments
 (0)