diff of 9860ba0b7dd1991884d7ebca4ad67c9624497ddf

9860ba0b7dd1991884d7ebca4ad67c9624497ddf
diff --git a/resources/sql/log-fns.sql b/resources/sql/log-fns.sql
index 4d35e53..c427b9b 100644
--- a/resources/sql/log-fns.sql
+++ b/resources/sql/log-fns.sql
@@ -5,25 +5,10 @@ FROM blog.loggroup_reads
 JOIN blog.log_group ON group_id = blog.log_group.ID
 WHERE user_id = $1;
 
--- name: group-id*
--- count: single
-SELECT id from blog.log_group where name = $1;
-
--- name: update-readcount* @execute
-UPDATE blog.loggroup_reads r
-SET read_count = $1
+-- name: upsert-readcount* @execute
+INSERT INTO blog.loggroup_reads
+SELECT g.id, $2, $1
 FROM blog.log_group g 
-WHERE r.group_id = g.id AND r.user_id = $2 AND g.name = $3;
-
--- name: insert-readcount* @execute
-insert into blog.loggroup_reads
-select g.id, $2, $1
-from blog.log_group g 
-WHERE g.name = $3;
-
--- name: readcount-exists?
--- count: single
-select exists (select *
-       	       from blog.loggroup_reads
-	       JOIN blog.log_group gr ON group_id = gr.ID
-	       where user_id = $1 and gr.name = $2);
+WHERE g.name = $3
+ON CONFLICT( group_id, user_id) DO
+UPDATE SET read_count = excluded.read_count;
diff --git a/src/routes/settings-routes.lisp b/src/routes/settings-routes.lisp
index c3e06ec..6c8329f 100644
--- a/src/routes/settings-routes.lisp
+++ b/src/routes/settings-routes.lisp
@@ -146,8 +146,6 @@
       (dolist (k (alexandria:hash-table-alist read-counts))
 	(destructuring-bind (group . count) k
 	  (log:info "Updating ~a to ~d~%" group count)
-	  (if (readcount-exists? user-id group)
-	      (update-readcount* count user-id group)
-	      (insert-readcount* count user-id group))))
+	  (upsert-readcount* count user-id group)))
       
        (stringify groups))))