Migrate and seed Crux data.
lein / boot:
[org.pariyatti/joplin.crux "0.0.2"]
CLI / deps.edn:
org.pariyatti/joplin.crux {:mvn/version "0.0.2"}
You can use the joplin.repl
namespace from within Clojure itself. In these examples:
config
is an example Joplin Config (EDN):prod
is an example environment:crux-prod
is an example database(joplin.repl/migrate config :prod)
(joplin.repl/rollback config :prod :crux-prod 1)
;; or (joplin.repl/rollback config :prod :crux-prod 20151215114952-users)
(joplin.repl/seed config :prod)
(joplin.repl/reset config :prod :crux-prod)
(joplin.repl/pending config :prod :crux-prod)
You can run a lein alias from the command line if you configure them in your project.clj
, like so:
:aliases {"migrate" ["run" "-m" "joplin.crux.alias/migrate" "joplin/config.edn"]
"seed" ["run" "-m" "joplin.crux.alias/seed" "joplin/config.edn"]
"rollback" ["run" "-m" "joplin.crux.alias/rollback" "joplin/config.edn"]
"reset" ["run" "-m" "joplin.crux.alias/reset" "joplin/config.edn"]
"pending" ["run" "-m" "joplin.crux.alias/pending" "joplin/config.edn"]
"create" ["run" "-m" "joplin.crux.alias/create" "joplin/config.edn"]}
Then you can run Joplin commands from the command line:
lein migrate prod
lein rollback prod crux-prod 1
# or lein rollback prod crux-prod 20151215114952-users
lein seed prod
lein reset prod crux-prod
lein pending prod crux-prod
NOTE: You must refer to the joplin.crux.alias
shim in your aliases, unlike the default alias configuration seen in the joplin.core example.. Because joplin.crux
is a plugin, joplin.alias
doesn't know about it out of the box. This is arguably a bug in Joplin.
(joplin.repl/create config :prod :crux-prod "add_users_schema")
or
lein create prod crux-prod add_users_schema
joplin.crux
could use Transaction Functions to ensure that all migrations executed at once share the same tx-time
. This will definitely make the historical timeline for schema and data migrations cleaner, but it also requires a "meta schema change" of sorts, which is the Transaction Function itself. I'm a bit nervous making any assumptions about what sort of entities the consumers of joplin.crux
want in their database, so I've left the direct (naive) implementation for now. This upgrade can always come later without impacting historical migrations.Run tests:
lein test
brew install gnupg2
echo "GPG_TTY=$(tty)\nexport GPG_TTY" >> ~/.zshrc # or ~/.bash_profile
gpg --gen-key
# save your passphrase in your password manager
gpg --list-keys
gpg --fingerprint 1A1A11A11AA11A111A1AAA1A11AA1111A11A1111
gpg --send-keys 1A1A11A11AA11A111A1AAA1A11AA1111A11A1111
# save your revocation certificate in your password manager:
cat ~/.gnupg/openpgp-revocs.d/1A1A11A11AA11A111A1AAA1A11AA1111A11A1111.rev
~/.lein/credentials.clj
(as described here):{#"clojars"
{:username "my-web-username"
:password "CLOJARS_5a5a5aa5a555555555a55aa..."}}
gpg --default-recipient-self -e ~/.lein/credentials.clj > ~/.lein/credentials.clj.gpg
lein deploy clojars
project.clj
.lein deploy clojars
Copyright © 2021 Pariyatti
Distributed under either the MIT License or the Eclipse Public License (1.0 or later).
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close