Liking cljdoc? Tell your friends :D

db-model

配合duct framework,自動產生資料庫中英字典檔.spec.graphql schema及sql等檔案,避免重複人工作業。

Developing

目前僅於postgres資料庫測試通過,其他資料庫尚未支援。

Setup

System model設定參考/dev/resources/model.edn

DB設定參考/dev/resources/db.edn

Environment

配合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並儲存

Legal

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