Refactoring. Extracted data-storage module in preparation for daily message files.

This commit is contained in:
Robert C. Martin 2022-07-19 09:38:59 -05:00
parent d19ab062c0
commit db212d7c63
3 changed files with 66 additions and 53 deletions

View File

@ -19,7 +19,7 @@
(def keys-filename (atom "private/keys"))
(def relays-filename (atom "private/relays"))
(def read-event-ids-filename (atom "private/read-event-ids"))
(def tabs-filename (atom "private/tabs"))
(def tabs-filename (atom "private/tabs")) ;grandfathered.
(def tabs-list-filename (atom "private/tabs-list"))
(def messages-directory (atom "private/messages"))
(def messages-filename (atom "private/messages/message-file"))

View File

@ -3,76 +3,39 @@
(ns more-speech.core
(:gen-class)
(:require [clojure.core.async :as async]
[more-speech.config :as config]
(:require [more-speech.config :as config]
[more-speech.nostr.protocol :as protocol]
[more-speech.ui.swing.main-window :as swing]
[more-speech.nostr.events :as events]
[more-speech.nostr.relays :as relays]
[more-speech.ui.swing.tabs :as tabs]
[more-speech.ui.swing.ui-context :refer :all]
[more-speech.migrator :as migrator])
[more-speech.migrator :as migrator]
[more-speech.data-storage :as data-storage]
[clojure.core.async :as async])
)
(def send-chan (async/chan))
(declare more-speech
setup-jframe
set-event-handler
read-old-events)
(declare set-event-handler)
(defn ^:export -main [& _args]
(migrator/migrate-to config/migration-level)
(let [keys (read-string (slurp @config/keys-filename))
_ (relays/load-relays-from-file @config/relays-filename)
read-event-ids (read-string (slurp @config/read-event-ids-filename))
profiles (read-string (slurp @config/profiles-filename))
tabs-list (tabs/ensure-tab-list-has-all
(read-string (slurp @config/tabs-list-filename)))
event-context (events/make-event-context {:keys keys
:send-chan send-chan
:profiles profiles
:read-event-ids read-event-ids
:tabs-list tabs-list
})
_ (swap! ui-context assoc :event-context event-context)
handler (swing/setup-main-window)
]
(data-storage/load-configuration)
(let [event-context (:event-context @ui-context)
handler (swing/setup-main-window)]
(swap! event-context set-event-handler handler)
(let [latest-old-message-time (read-old-events event-context handler)]
(swap! event-context assoc :send-chan send-chan)
(let [latest-old-message-time
(if (not config/test-run?)
(data-storage/read-old-events event-context handler)
(-> (System/currentTimeMillis) (quot 1000) (- 86400)))]
(protocol/get-events event-context latest-old-message-time))
(when (not config/test-run?)
(spit @config/profiles-filename
(with-out-str
(clojure.pprint/pprint (:profiles @event-context))))
(spit @config/read-event-ids-filename
(with-out-str
(clojure.pprint/pprint (:read-event-ids @event-context))))
(spit @config/relays-filename
(with-out-str
(clojure.pprint/pprint (relays/relays-for-writing))))
(spit @config/messages-filename
(with-out-str
(clojure.pprint/pprint (:text-event-map @event-context)))))
(data-storage/write-configuration)
(data-storage/write-messages))
(System/exit 1)))
(defn set-event-handler [event-state handler]
(assoc event-state :event-handler handler))
(defn read-old-events [event-context handler]
(let [old-events (vals (read-string (slurp @config/messages-filename)))
creation-times (map :created-at old-events)]
(when (not config/test-run?)
(doseq [event old-events]
(let [url (first (:relays event))]
(swap! event-context events/add-event event url)
(events/handle-text-event handler event))
))
(if (empty? creation-times)
(-> (System/currentTimeMillis) (quot 1000) (- 86400))
(apply max creation-times))))

View File

@ -0,0 +1,50 @@
(ns more-speech.data-storage
(:require [more-speech.config :as config]
[more-speech.ui.swing.ui-context :refer :all]
[more-speech.nostr.events :as events]
[more-speech.nostr.relays :as relays]
[more-speech.ui.swing.tabs :as tabs]))
(defn write-configuration []
(let [event-context (:event-context @ui-context)]
(spit @config/profiles-filename
(with-out-str
(clojure.pprint/pprint (:profiles @event-context))))
(spit @config/read-event-ids-filename
(with-out-str
(clojure.pprint/pprint (:read-event-ids @event-context))))
(spit @config/relays-filename
(with-out-str
(clojure.pprint/pprint (relays/relays-for-writing))))))
(defn write-messages []
(let [event-context (:event-context @ui-context)]
(spit @config/messages-filename
(with-out-str
(clojure.pprint/pprint (:text-event-map @event-context))))))
(defn load-configuration []
(let [keys (read-string (slurp @config/keys-filename))
read-event-ids (read-string (slurp @config/read-event-ids-filename))
profiles (read-string (slurp @config/profiles-filename))
tabs-list (tabs/ensure-tab-list-has-all
(read-string (slurp @config/tabs-list-filename)))
event-context (events/make-event-context {:keys keys
:profiles profiles
:read-event-ids read-event-ids
:tabs-list tabs-list
})]
(swap! ui-context assoc :event-context event-context)
(relays/load-relays-from-file @config/relays-filename)))
(defn read-old-events [event-context handler]
(let [old-events (vals (read-string (slurp @config/messages-filename)))
creation-times (map :created-at old-events)]
(doseq [event old-events]
(let [url (first (:relays event))]
(swap! event-context events/add-event event url)
(events/handle-text-event handler event)))
(if (empty? creation-times)
(-> (System/currentTimeMillis) (quot 1000) (- 86400))
(apply max creation-times))))