配合duct framework,自動產生資料庫中英字典檔.spec.graphql schema及sql等檔案,避免重複人工作業。
目前僅於postgres資料庫測試通過,其他資料庫尚未支援。
System model設定參考/dev/resources/model.edn
DB設定參考/dev/resources/db.edn
配合duct使用,需於resources/namespace/config.edn中設定:
[:duct/const :db-model/config] {:model "db_model/model.edn"
:db "db_model/db.edn"
:default-sql-dir "resources/migrations"
:target-database :postgres}
:db-model/system #ig/ref [:duct/const :db-model/config]
:db-model/default-db #ig/ref [:duct/const :db-model/config]
:db-model/dictionary #ig/ref :db-model/default-db
; configurate ragtime sql file directory
:duct.migrator/ragtime {:strategy :rebase
:migrations [#ig/ref :db-model.migrations/dev]}
[:duct.migrator.ragtime/resources :db-model.migrations/dev] {:path "migrations"}}
duct會自動初始化相關設定
dev=> (reset)
:reloading (...)
:resumed
(require '[db-model.core])
讀取edn file
read-edn:
(read-edn file) ; 讀取edn file
(read-edn) ; 讀取預設db edn file
SQL: 產生 sql file 供 ragtime 使用
(expand-schema schema) ; 擴充schema成sql定義
(schema->sql schema) ; 產生sql file
(save-auto-sql schema dir) ; 產生並儲存sql file
(save-auto-sql schema) ; 產生並儲存sql file至預設目錄
(save-edn-sql edn-file dir) ; 由edn產生並儲存sql file
(save-edn-sql edn-file) ; 由edn產生並儲存sql file至預設目錄
dictionary: 中英字典檔 map
(generate-dictionary schema) ; 由擴充後的schema生成字典檔
(ename->cname ename dictionary) ; 向dictionary進行英中查詢
(ename->cname ename) ; 向系統dictionary進行英中查詢
(cname->ename cname dictionary) ; 向dictionary進行中英查詢
(cname->ename cname) ; 向系統dictionary進行中英查詢
spec: 產生 spec-tools 的 spec record
(schema->spec schema) ; 由擴充後的schema生成spec
(save-edn-spec edn-file fname header) ; 由edn-file及file header生成spec file並儲存
(save-edn-spec edn-file fname) ; 由edn-file及系統file header(定義於model.edn)生成spec file並儲存
graphql: 產生 lacinia 相容的 graphql schema edn file
(schema->graphql schema) ; 由擴充後的schema生成graphql
(edn->graphql edn-file) ; 由edn-file生成graphql
(save-edn-graphql edn-file fname) ; 由edn-file生成graphql並儲存
Copyright © 2020 by caesarhu(Hu, Pei Shun)
Distributed under the Apache License, Version 2.0.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close