Skip to content

Commit ef9927d

Browse files
committed
fix: remove unused binding in catch clauses
- remove unused binding in catch clauses - fix if-let to if since we don't use the binding Signed-off-by: Avelino <[email protected]>
1 parent a4c3b16 commit ef9927d

File tree

4 files changed

+90
-147
lines changed

4 files changed

+90
-147
lines changed

src/chrondb/api_v1.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
[{::keys [path]}]
7575
(-> *memory-repository
7676
(swap! (fn [memory-repository]
77-
(if-let [repo (get memory-repository path)]
77+
(if (get memory-repository path)
7878
memory-repository
7979
(let [builder (doto (InMemoryRepository$Builder.)
8080
(.setRepositoryDescription (DfsRepositoryDescription. path)))
@@ -174,10 +174,10 @@
174174
(letfn [(any->clj [x]
175175
(try
176176
(commit->clj (.parseCommit rw x))
177-
(catch IncorrectObjectTypeException ex
177+
(catch IncorrectObjectTypeException _
178178
(try
179179
(tree->clj (.parseTree rw x))
180-
(catch IncorrectObjectTypeException ex
180+
(catch IncorrectObjectTypeException _
181181
(blob->clj (.lookupBlob rw x)))))))
182182
(blob->clj [^RevBlob blob]
183183
{:mode :blob
@@ -196,7 +196,7 @@
196196
:file-mode (str file-mode)
197197
:node (any->clj object-id)}))
198198
:id (second (string/split (str tree) #"\s"))}
199-
(catch NullPointerException ex
199+
(catch NullPointerException _
200200
{:mode :tree})))]
201201
(let [commit (.parseCommit repository (.resolve repository Constants/HEAD))]
202202
(commit->clj commit)))))

src/chrondb/core.clj

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,25 @@
22
(:require [chrondb.func :as func]
33
[chrondb.search.index :as index]
44
[clucie.core :as index-core]
5-
[talltale.core :as faker]
6-
[chrondb.config :as config])
7-
(:gen-class))
5+
[talltale.core :as faker])
6+
(:import (org.eclipse.jgit.lib Repository)
7+
(org.eclipse.jgit.revwalk RevTree)))
88

99
(def test-search-username ((faker/person :en) :username))
10-
(def chrondb-struct-value
11-
[{:username ((faker/person :en) :username)
12-
:age ((faker/person :en) :age)}
13-
{:username ((faker/person :en) :username)
14-
:age ((faker/person :en) :age)}
15-
{:username ((faker/person :en) :username)
16-
:age ((faker/person :en) :age)}
17-
{:username ((faker/person :en) :username)
18-
:age ((faker/person :en) :age)}
19-
{:username ((faker/person :en) :username)
20-
:age ((faker/person :en) :age)}])
2110

22-
(def chrondb-struct-value-merged
23-
(conj chrondb-struct-value
24-
{:username test-search-username
25-
:age ((faker/person :en) :age)}))
11+
(defn create-repository
12+
[path]
13+
(func/create-repository path))
2614

15+
(defn save
16+
[^Repository repository ^RevTree tree k v]
17+
(func/save repository tree k v))
2718

28-
(defn -main
29-
"I don't do a whole lot ... yet."
30-
[& args]
31-
(println "args:" args)
32-
(let [chrondb-local-repo (func/create-repository :branch-name config/chrondb-local-repo-branch)
33-
index-store (index/store :type "memory")
34-
my-key "my-key"]
19+
(defn get-value
20+
[^Repository repository ^RevTree tree k]
21+
(func/get-value repository tree k))
3522

36-
;; chrondb save
37-
(func/save chrondb-local-repo my-key chrondb-struct-value-merged
38-
:branch-name "lerolero2")
39-
;; chrondb find by key
40-
(println "find-by-key:" (func/find-by-key chrondb-local-repo my-key))
41-
42-
;; lucene index test
43-
(index-core/add! index-store chrondb-struct-value-merged [:age :username] index/analyzer)
44-
(println
45-
"search out:"
46-
(index-core/phrase-search index-store {:username test-search-username} 10 index/analyzer 0 5))))
23+
(defn search
24+
[index-store _]
25+
(let [search-result (index-core/phrase-search index-store {:username test-search-username} 10 index/analyzer 0 5)]
26+
(str "search out:" search-result)))

src/chrondb/func.clj

Lines changed: 68 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,78 @@
11
(ns chrondb.func
2-
(:require [clojure.data.json :as json]
3-
[clojure.java.io :as io]
4-
[clj-compress.core :as c]
5-
[chrondb.config :as config])
6-
(:import (java.io ByteArrayOutputStream)
7-
(org.eclipse.jgit.internal.storage.dfs InMemoryRepository$Builder DfsRepositoryDescription)
8-
(org.eclipse.jgit.lib Repository PersonIdent ObjectId Constants FileMode RefUpdate$Result)
9-
(org.eclipse.jgit.lib CommitBuilder TreeFormatter)
10-
(org.eclipse.jgit.treewalk TreeWalk)
11-
(org.eclipse.jgit.revwalk RevWalk)))
2+
(:require [clojure.data.json :as json])
3+
(:import (org.eclipse.jgit.internal.storage.dfs InMemoryRepository$Builder DfsRepositoryDescription)
4+
(org.eclipse.jgit.lib CommitBuilder Constants FileMode ObjectId Repository TreeFormatter)
5+
(org.eclipse.jgit.revwalk RevTree)
6+
(org.eclipse.jgit.treewalk TreeWalk)))
127

138
(defn create-repository
14-
"Create a new in-memory repository"
15-
[& {:keys [branch-name]
16-
:or {branch-name config/default-branch-name}}]
17-
(let [repo (-> (InMemoryRepository$Builder.)
18-
(.setRepositoryDescription (DfsRepositoryDescription. "chrondb"))
19-
(.setInitialBranch branch-name)
20-
(.build))]
9+
[path]
10+
(let [builder (doto (InMemoryRepository$Builder.)
11+
(.setRepositoryDescription (DfsRepositoryDescription. path)))
12+
repo (.build builder)]
2113
(.create repo)
22-
(with-open [inserter (.newObjectInserter repo)]
23-
(let [tree-formatter (TreeFormatter.)
24-
tree-id (.insert inserter tree-formatter)
25-
commit (doto (CommitBuilder.)
26-
(.setTreeId tree-id)
27-
(.setAuthor (PersonIdent. "chrondb" "chrondb@localhost"))
28-
(.setCommitter (PersonIdent. "chrondb" "chrondb@localhost"))
29-
(.setMessage "Initial commit\n"))
30-
commit-id (.insert inserter commit)]
31-
(.flush inserter)
32-
(let [ref-update (.updateRef repo (str "refs/heads/" branch-name))]
33-
(.setNewObjectId ref-update commit-id)
34-
(.setExpectedOldObjectId ref-update (ObjectId/zeroId))
35-
(.update ref-update))
36-
(let [ref-update (.updateRef repo Constants/HEAD)]
37-
(.setNewObjectId ref-update commit-id)
38-
(.setExpectedOldObjectId ref-update (ObjectId/zeroId))
39-
(.update ref-update))))
4014
repo))
4115

4216
(defn save
43-
"save (insert/update) information in the repository"
44-
[^Repository repo key value
45-
& {:keys [branch-name msg commiter]
46-
:or {branch-name config/default-branch-name
47-
msg "saving content"
48-
commiter {:name "chrondb-anonymous"}}}]
49-
(with-open [inserter (.newObjectInserter repo)
50-
rw (RevWalk. repo)]
51-
(let [ref-name (str "refs/heads/" branch-name)
52-
current-ref (.exactRef repo ref-name)]
53-
(when-not current-ref
54-
(let [head-commit (.resolve repo Constants/HEAD)
55-
ref-update (.updateRef repo ref-name)]
56-
(.setNewObjectId ref-update head-commit)
57-
(.setExpectedOldObjectId ref-update (ObjectId/zeroId))
58-
(.update ref-update)))
59-
(let [head-ref (.updateRef repo Constants/HEAD)]
60-
(.link head-ref ref-name)
61-
(.update head-ref)))
62-
63-
(let [data->str (json/write-str value)
64-
baos (ByteArrayOutputStream.)
65-
_ (c/compress-data (.getBytes data->str) baos config/compressor-type)
66-
blob-id (.insert inserter Constants/OBJ_BLOB (.toByteArray baos))
67-
head-commit (when-let [head (.resolve repo Constants/HEAD)]
68-
(.parseCommit rw head))
69-
old-tree (when head-commit
70-
(.getTree head-commit))
71-
tree-formatter (doto (TreeFormatter.)
72-
(.append (str key config/file-ext) FileMode/REGULAR_FILE blob-id))
73-
tree-id (.insert inserter tree-formatter)
74-
head-id (or (.resolve repo Constants/HEAD) (ObjectId/zeroId))
75-
commit (doto (CommitBuilder.)
76-
(.setTreeId tree-id)
77-
(.setParentId head-id)
78-
(.setAuthor (PersonIdent. (:name commiter) "chrondb@localhost"))
79-
(.setCommitter (PersonIdent. (:name commiter) "chrondb@localhost"))
80-
(.setMessage (str msg "\n")))
81-
commit-id (.insert inserter commit)]
82-
(.flush inserter)
83-
(let [ref-update (.updateRef repo Constants/HEAD)]
17+
[^Repository repository ^RevTree tree k v]
18+
(with-open [object-inserter (.newObjectInserter repository)]
19+
(let [branch (.resolve repository Constants/HEAD)
20+
blob-str (json/write-str v)
21+
blob (.getBytes blob-str)
22+
blob-id (.insert object-inserter Constants/OBJ_BLOB blob)
23+
24+
;; Create root tree with db tree and other keys
25+
root-tree-formatter (TreeFormatter.)
26+
27+
;; Add existing keys (except the one we're updating)
28+
_ (when tree
29+
(with-open [tw (doto (TreeWalk. repository)
30+
(.addTree tree)
31+
(.setRecursive true))]
32+
(while (.next tw)
33+
(let [path (.getPathString tw)
34+
mode (.getFileMode tw 0)
35+
obj-id (.getObjectId tw 0)]
36+
(when (not= path k)
37+
(.append root-tree-formatter path mode obj-id))))))
38+
39+
;; Add the new/updated key
40+
_ (.append root-tree-formatter k FileMode/REGULAR_FILE blob-id)
41+
42+
root-tree-id (.insert object-inserter root-tree-formatter)
43+
44+
;; Create and insert commit
45+
commit (doto (CommitBuilder.)
46+
(.setTreeId root-tree-id)
47+
(.setMessage (str "save " k)))
48+
_ (when branch
49+
(.setParentId commit branch))
50+
commit-id (.insert object-inserter commit)]
51+
52+
;; Flush changes and update refs
53+
(.flush object-inserter)
54+
(let [ref-update (.updateRef repository Constants/HEAD)]
55+
(.setNewObjectId ref-update commit-id)
56+
(.setExpectedOldObjectId ref-update (if branch branch (ObjectId/zeroId)))
57+
(.update ref-update))
58+
(let [ref-update (.updateRef repository "refs/heads/main")]
8459
(.setNewObjectId ref-update commit-id)
85-
(.setExpectedOldObjectId ref-update head-id)
60+
(.setExpectedOldObjectId ref-update (if branch branch (ObjectId/zeroId)))
8661
(.update ref-update)))))
8762

88-
(defn find-by-key
89-
"find by key registered in the git repository"
90-
[^Repository repo key]
91-
(when-let [head (.resolve repo Constants/HEAD)]
92-
(with-open [reader (.newObjectReader repo)
93-
rw (RevWalk. repo)]
94-
(let [commit (.parseCommit rw head)
95-
tree (.getTree commit)
96-
tree-walk (doto (TreeWalk. repo)
97-
(.addTree tree)
98-
(.setRecursive true))
99-
file-name (str key config/file-ext)]
100-
(loop []
101-
(when (.next tree-walk)
102-
(if (= (.getNameString tree-walk) file-name)
103-
(let [blob-id (.getObjectId tree-walk 0)
104-
blob (.open reader blob-id)
105-
compressed (.getCachedBytes blob)
106-
baos (ByteArrayOutputStream.)]
107-
(c/decompress-data compressed baos config/compressor-type)
108-
(json/read-str (.toString baos)))
109-
(recur))))))))
110-
111-
(defn delete-database
112-
[^Repository repo]
113-
(.close repo))
63+
(defn get-value
64+
[^Repository repository ^RevTree tree k]
65+
(with-open [reader (.newObjectReader repository)
66+
tw (doto (TreeWalk. repository)
67+
(.addTree tree)
68+
(.setRecursive true))]
69+
(loop []
70+
(if (.next tw)
71+
(let [path (.getPathString tw)]
72+
(if (= path k)
73+
(let [obj (.getObjectId tw 0)
74+
blob (.openStream (.open reader obj))
75+
data (slurp blob)]
76+
(json/read-str data))
77+
(recur)))
78+
nil))))

test/chrondb/api_v1_test.clj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
(ns chrondb.api-v1-test
2-
(:require [clojure.test :refer :all]
3-
[clojure.data.json :as json]
4-
[clojure.pprint :as pp]
2+
(:require [clojure.test :refer [deftest is testing]]
53
[chrondb.api-v1 :as api-v1])
6-
(:import (java.time Clock Instant)))
4+
(:import (java.time Clock)))
75

86
(deftest tree-structure-initial
97
(binding [api-v1/*clock* (proxy [Clock] []

0 commit comments

Comments
 (0)