Skip to content

Commit

Permalink
Extract db seeds
Browse files Browse the repository at this point in the history
  • Loading branch information
duck1123 committed Sep 19, 2021
1 parent 0a89869 commit a075e1b
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 119 deletions.
6 changes: 2 additions & 4 deletions src/main/dinsro/actions/lnd.clj
Expand Up @@ -14,6 +14,7 @@
org.bitcoinj.params.RegTestParams
org.bitcoinj.wallet.KeyChainGroup
org.lightningj.lnd.wrapper.Message
org.lightningj.lnd.wrapper.message.AddressType
org.lightningj.lnd.wrapper.message.LightningAddress
org.lightningj.lnd.wrapper.message.ListChannelsRequest
org.lightningj.lnd.wrapper.message.ListInvoiceRequest
Expand Down Expand Up @@ -206,10 +207,7 @@

(defn get-lnd-address
[s-lnd-api]
(.getAddress
(.newAddress s-lnd-api
org.lightningj.lnd.wrapper.message.AddressType/WITNESS_PUBKEY_HASH
"foo")))
(.getAddress (.newAddress s-lnd-api AddressType/WITNESS_PUBKEY_HASH "foo")))

(defn open-channel-request
[pubkey]
Expand Down
4 changes: 2 additions & 2 deletions src/main/dinsro/core.clj
Expand Up @@ -5,8 +5,8 @@
[dinsro.components.nrepl]
[dinsro.components.secrets :as secrets]
[dinsro.components.server]
[dinsro.handler :as handler]
[dinsro.middleware :as middleware]
[dinsro.seed :as seed]
[mount.core :as mount]
[taoensso.timbre :as log])
(:gen-class))
Expand All @@ -33,7 +33,7 @@
(let [options (parse-opts args cli-options)]
(doseq [component (-> options mount/start-with-args :started)]
(log/debug component "started")))
(handler/seed-db!)
(seed/seed-db!)
(.addShutdownHook (Runtime/getRuntime) (Thread. stop-app)))

(defn -main
Expand Down
116 changes: 3 additions & 113 deletions src/main/dinsro/handler.clj
@@ -1,28 +1,14 @@
(ns dinsro.handler
(:require
[com.fulcrologic.rad.type-support.date-time :as dt]
[crux.api :as crux]
[dinsro.env :refer [defaults]]
[dinsro.components.crux :as c.crux]
[dinsro.layout :refer [error-page] :as layout]
[dinsro.middleware :as middleware]
[dinsro.model.rate-sources :as m.rate-sources]
[dinsro.model.seed :as seed]
[dinsro.model.transactions :as m.transactions]
[dinsro.mutations.accounts :as mu.accounts]
[dinsro.mutations.categories :as mu.categories]
[dinsro.mutations.currencies :as mu.currencies]
[dinsro.mutations.rate-sources :as mu.rate-sources]
[dinsro.mutations.session :as mu.session]
[dinsro.mutations.transactions :as mu.transactions]
[dinsro.queries.currencies :as q.currencies]
[dinsro.queries.users :as q.users]
[dinsro.routes :as routes]
[dinsro.seed :as seed]
[mount.core :as mount]
[reitit.coercion.spec]
[reitit.ring :as ring]
[taoensso.timbre :as log]
[tick.alpha.api :as tick]))
[taoensso.timbre :as log]))

(mount/defstate init-app
:start ((or (:init defaults) (fn [])))
Expand All @@ -42,103 +28,7 @@
:not-acceptable
(constantly (error-page {:status 406, :title "406 - Not acceptable"}))}))))

(def links
[["accounts" "Accounts" "/accounts" :dinsro.views.index-accounts/IndexAccountsPage]
["admin" "Admin" "/admin" :dinsro.views.admin/AdminPage]
["categories" "Categories" "/categories" :dinsro.views.index-categories/IndexCategoriesPage]
["currencies" "Currencies" "/currencies" :dinsro.views.index-currencies/IndexCurrenciesPage]
["home" "Home" "/" :dinsro.views.home/HomePage]
["login" "Login" "/login" :dinsro.views.login/LoginPage]
["rates" "Rates" "/rates" :dinsro.views.index-rates/IndexRatesPage]
["rate-sources" "Rate Sources" "/rate-sources" :dinsro.views.index-rate-sources/IndexRateSourcesPage]
["registration" "Registration" "/register" :dinsro.views.registration/RegistrationPage]
["settings" "Settings" "/settings" :dinsro.views.settings/SettingsPage]
["transactions" "Transactions" "/transactions" :dinsro.views.index-transactions/IndexTransactionsPage]
["users" "User" "/users" :dinsro.views.index-users/IndexUsersPage]])

(defn create-navlinks!
[]
(let [node (:main c.crux/crux-nodes)
add (fnil conj [])
data (reduce
(fn [data link]
(let [[id name href target] link]
(update data :navlinks add (seed/new-navlink id name href target))))
{} links)
txes (->> data
vals
flatten
(mapv #(vector :crux.tx/put %)))]
(crux/submit-tx node txes)))

(defn seed-db!
[]
(let [username "admin"
password "hunter2"
categories ["Category A"
"Category B"
"Category C"]]

(create-navlinks!)
(dt/set-timezone! "America/Los_Angeles")
(mu.session/do-register username password)

(let [user-eid (q.users/find-eid-by-name username)]
(doseq [name categories] (mu.categories/do-create user-eid name))

(mu.currencies/do-create "sats" "Sats" username)
(let [currency-id (q.currencies/find-eid-by-code "sats")]
(mu.accounts/do-create "exchange account" currency-id user-eid 620000.)
(mu.accounts/do-create "hot wallet" currency-id user-eid 1000000.)
(mu.accounts/do-create "duress account" currency-id user-eid (* 6.15 100000000 0.01))
(mu.accounts/do-create "hodl stack" currency-id user-eid (* 6.15 100000000)))

(mu.currencies/do-create "usd" "Dollars" username)

(if-let [currency-id (q.currencies/find-eid-by-code "usd")]
(do
(mu.rate-sources/do-create
{::m.rate-sources/name "CoinLott0"
::m.rate-sources/url "https://www.coinlott0.localhost/api/v1/quotes/BTC-USD"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "BitPonzi"
::m.rate-sources/url "https://www.bitponzi.biz.localhost/cgi?id=3496709"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "DuckBitcoin"
::m.rate-sources/url "https://www.duckbitcoin.localhost/api/current-rates"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "Leviathan"
::m.rate-sources/url "https://www.leviathan.localhost/prices"
::m.rate-sources/currency currency-id})

(mu.accounts/do-create "cash" currency-id user-eid 3.50)
(mu.accounts/do-create "Fun Money" currency-id user-eid 23.67)

(if-let [account-id
(nth (:created-item (mu.accounts/do-create "debit" currency-id user-eid 500.))
1)]
(do
(mu.transactions/do-create
{::m.transactions/account account-id
::m.transactions/description "a"
::m.transactions/date (tick/instant)
::m.transactions/value 1.0})
(mu.transactions/do-create
{::m.transactions/account account-id
::m.transactions/description "b"
::m.transactions/date (tick/instant)
::m.transactions/value 2.0}))
(throw "no account")))
(throw "no currency"))

(mu.currencies/do-create "eur" "Euros" username)
(let [currency-id (q.currencies/find-eid-by-code "eur")]
(mu.accounts/do-create "travel" currency-id user-eid 0)))))

(defn app []
(log/info "starting app handler")
(seed-db!)
(seed/seed-db!)
(middleware/wrap-base #'app-routes))
115 changes: 115 additions & 0 deletions src/main/dinsro/seed.clj
@@ -0,0 +1,115 @@
(ns dinsro.seed
(:require
[com.fulcrologic.rad.type-support.date-time :as dt]
[crux.api :as crux]
[dinsro.components.crux :as c.crux]
[dinsro.model.rate-sources :as m.rate-sources]
[dinsro.model.seed :as seed]
[dinsro.model.transactions :as m.transactions]
[dinsro.mutations.accounts :as mu.accounts]
[dinsro.mutations.categories :as mu.categories]
[dinsro.mutations.currencies :as mu.currencies]
[dinsro.mutations.rate-sources :as mu.rate-sources]
[dinsro.mutations.session :as mu.session]
[dinsro.mutations.transactions :as mu.transactions]
[dinsro.queries.currencies :as q.currencies]
[dinsro.queries.users :as q.users]
[reitit.coercion.spec]
[taoensso.timbre :as log]
[tick.alpha.api :as tick]))

(def links
[["accounts" "Accounts" "/accounts" :dinsro.views.index-accounts/IndexAccountsPage]
["admin" "Admin" "/admin" :dinsro.views.admin/AdminPage]
["categories" "Categories" "/categories" :dinsro.views.index-categories/IndexCategoriesPage]
["currencies" "Currencies" "/currencies" :dinsro.views.index-currencies/IndexCurrenciesPage]
["home" "Home" "/" :dinsro.views.home/HomePage]
["login" "Login" "/login" :dinsro.views.login/LoginPage]
["rates" "Rates" "/rates" :dinsro.views.index-rates/IndexRatesPage]
["rate-sources" "Rate Sources" "/rate-sources" :dinsro.views.index-rate-sources/IndexRateSourcesPage]
["registration" "Registration" "/register" :dinsro.views.registration/RegistrationPage]
["settings" "Settings" "/settings" :dinsro.views.settings/SettingsPage]
["transactions" "Transactions" "/transactions" :dinsro.views.index-transactions/IndexTransactionsPage]
["users" "User" "/users" :dinsro.views.index-users/IndexUsersPage]])

(defn create-navlinks!
[]
(let [node (:main c.crux/crux-nodes)
add (fnil conj [])
data (reduce
(fn [data link]
(let [[id name href target] link]
(update data :navlinks add (seed/new-navlink id name href target))))
{} links)
txes (->> data
vals
flatten
(mapv #(vector :crux.tx/put %)))]
(crux/submit-tx node txes)))

(defn seed-db!
[]
(let [username "admin"
password "hunter2"
categories ["Category A"
"Category B"
"Category C"]]

(create-navlinks!)
(dt/set-timezone! "America/Los_Angeles")
(mu.session/do-register username password)

(let [user-eid (q.users/find-eid-by-name username)]
(doseq [name categories] (mu.categories/do-create user-eid name))

(mu.currencies/do-create "sats" "Sats" username)
(let [currency-id (q.currencies/find-eid-by-code "sats")]
(mu.accounts/do-create "exchange account" currency-id user-eid 620000.)
(mu.accounts/do-create "hot wallet" currency-id user-eid 1000000.)
(mu.accounts/do-create "duress account" currency-id user-eid (* 6.15 100000000 0.01))
(mu.accounts/do-create "hodl stack" currency-id user-eid (* 6.15 100000000)))

(mu.currencies/do-create "usd" "Dollars" username)

(if-let [currency-id (q.currencies/find-eid-by-code "usd")]
(do
(mu.rate-sources/do-create
{::m.rate-sources/name "CoinLott0"
::m.rate-sources/url "https://www.coinlott0.localhost/api/v1/quotes/BTC-USD"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "BitPonzi"
::m.rate-sources/url "https://www.bitponzi.biz.localhost/cgi?id=3496709"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "DuckBitcoin"
::m.rate-sources/url "https://www.duckbitcoin.localhost/api/current-rates"
::m.rate-sources/currency currency-id})
(mu.rate-sources/do-create
{::m.rate-sources/name "Leviathan"
::m.rate-sources/url "https://www.leviathan.localhost/prices"
::m.rate-sources/currency currency-id})

(mu.accounts/do-create "cash" currency-id user-eid 3.50)
(mu.accounts/do-create "Fun Money" currency-id user-eid 23.67)

(if-let [account-id
(nth (:created-item (mu.accounts/do-create "debit" currency-id user-eid 500.))
1)]
(do
(mu.transactions/do-create
{::m.transactions/account account-id
::m.transactions/description "a"
::m.transactions/date (tick/instant)
::m.transactions/value 1.0})
(mu.transactions/do-create
{::m.transactions/account account-id
::m.transactions/description "b"
::m.transactions/date (tick/instant)
::m.transactions/value 2.0}))
(throw "no account")))
(throw "no currency"))

(mu.currencies/do-create "eur" "Euros" username)
(let [currency-id (q.currencies/find-eid-by-code "eur")]
(mu.accounts/do-create "travel" currency-id user-eid 0)))))

0 comments on commit a075e1b

Please sign in to comment.