Skip to content
Snippets Groups Projects
Commit 7e5cbf50 authored by Bruno Burke's avatar Bruno Burke :hamburger:
Browse files

add document-stats and request-log for postgres-doc-storage; set version to 0.3.1

parent 61d52a88
No related branches found
No related tags found
No related merge requests found
Pipeline #143645 passed
(defproject wwsoftware/document-storage "0.3.0"
(defproject wwsoftware/document-storage "0.3.1"
:description "FIXME: write description"
:repositories [["internal" {:url "https://maven.leukipp.de/releases"
:username "anonymous"}]]
......
-- :name create-document-stats! :! :n
-- :doc creates a new document-stats record
INSERT INTO :i:document-stats-table AS st
(repository, "document", "version", request_count)
VALUES (:repository-name, :document-id, :version, 1)
ON CONFLICT(repository, "document", "version")
DO UPDATE SET request_count = st.request_count + 1
-- :name log-request! :! :n
-- :doc creates a new request-log record
INSERT INTO :i:request-log-table
(repository, "document", "version")
VALUES (:repository-name, :document-id, :version)
......@@ -39,6 +39,10 @@ DELETE FROM :i:repositories-table
WHERE id=:repository-name;
--;;
DELETE FROM :i:cache-table WHERE repository=:repository-name;
--;;
DELETE FROM :i:document-stats-table WHERE repository=:repository-name;
--;;
DELETE FROM :i:request-log-table WHERE repository=:repository-name;
-- :name update-repository!
......
......@@ -48,3 +48,21 @@ CREATE TABLE IF NOT EXISTS :i:cache-table (
created_at timestamptz NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT newtable_pk PRIMARY KEY (repository,"document","version")
);
--;;
CREATE TABLE IF NOT EXISTS :i:request-log-table (
repository varchar(32) NOT NULL,
"document" varchar(64) NOT NULL,
"version" int8 NOT NULL,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT request_log_pk PRIMARY KEY (repository, document, version, created_at)
);
--;;
CREATE TABLE IF NOT EXISTS :i:document-stats-table (
repository varchar(32) NOT NULL,
"document" varchar(64) NOT NULL,
"version" int8 NOT NULL,
request_count int8 NULL DEFAULT 0,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT document_stats_pk PRIMARY KEY (repository, document, version)
);
......@@ -50,7 +50,7 @@
(.run-query this :delete-repository! {:repository repository}))
(delete-permanently? [this repository]
(let [repo-info (.run-query this :get-repository-info
{:repository repository})]
{:repository repository})]
(:delete_permanently repo-info)))
(run-query [this query-key params]
(let [storage-schema (.get-schema this)
......@@ -74,6 +74,12 @@
"."
"repo_"
repository-name)
:document-stats-table (str storage-schema
"."
"document_stats")
:request-log-table (str storage-schema
"."
"request_log")
:uuid (get-unique-id "ds")}]
(conman/query (:queries this) query-key
(merge table-names params))))
......@@ -83,7 +89,7 @@
(.run-query this :reset-document-cache-by-repository! {:repository repository}))
(cached-repository? [this repository]
(let [repo-info (.run-query this :get-repository-info
{:repository repository})]
{:repository repository})]
(:caching repo-info)))
protocol/storage
......@@ -125,11 +131,11 @@
(list-documents [this repository]
(into #{}
(map :document_id (.run-query this :get-all-document-ids
{:repository repository}))))
{:repository repository}))))
(versioned-repository? [this repository]
(let [repo-info (.run-query this :get-repository-info
{:repository repository})]
{:repository repository})]
(:versioning repo-info)))
(find-documents [this query repository]
......@@ -152,7 +158,7 @@
(list-versions [this id repository]
(let [versions (.run-query this :get-document-versions {:repository repository
:document-id id})]
:document-id id})]
(->> versions
(map #(assoc % :data-type (keyword (:data_type %))))
(sort-by :version))))
......
......@@ -31,7 +31,8 @@
"sql/_ds_postgres.sql"
"sql/_ds_postgres_repository.sql"
"sql/_ds_postgres_storage.sql"
"sql/_ds_postgres_cache.sql")}))
"sql/_ds_postgres_cache.sql"
"sql/_ds_postgres_document_stats.sql")}))
(defn disconnect! [connection]
(.close connection)
......
......@@ -50,6 +50,17 @@
:version version
:repository repository}))))))
(defn log-request [storage repository document-id version]
(.start (Thread. (fn []
(.run-query storage :log-request!
{:repository repository
:document-id document-id
:version version})
(.run-query storage :create-document-stats!
{:repository repository
:document-id document-id
:version version})))))
(defn load-document
([storage document-id repository]
(when-let [last-document-version (get-last-document-version storage document-id repository)]
......@@ -57,6 +68,7 @@
(load-document storage document-id (:version last-document-version) repository))))
([storage document-id version repository]
(let [restore-document-fn #(restore-document-version storage document-id version repository)]
(log-request storage repository document-id version)
(if (.cached-repository? storage repository)
(cache/load-cached-document storage repository document-id version restore-document-fn)
(restore-document-fn)))))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment