-
Notifications
You must be signed in to change notification settings - Fork 4.9k
/
strict.clj
78 lines (56 loc) · 2.16 KB
/
strict.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(ns change.strict
(:require
[clojure.spec.alpha :as s]
[clojure.string :as str]
[column.strict]))
(comment column.strict/keep-me)
(s/def ::tableName
string?)
(s/def ::column
(s/keys :req-un [:column.strict/column]))
(s/def :change.strict.add-column/columns
(s/alt :column ::column))
(s/def ::addColumn
(s/keys :req-un [:change.strict.add-column/columns ::tableName]))
(s/def ::remarks
string?)
(s/def :change.strict.create-table/columns
(s/+ (s/alt :column ::column)))
(s/def ::createTable
;; remarks are required for new tables in strict mode
(s/keys :req-un [:change.strict.create-table/columns ::remarks ::tableName]))
;; createIndex *must* include an explicit index name.
(s/def ::indexName
#(str/starts-with? % "idx_"))
(s/def ::createIndex
(s/keys :req-un [::indexName]))
(s/def :custom-change/class (every-pred string? (complement str/blank?)))
(s/def ::customChange
(s/keys :req-un [:custom-change/class]))
(s/def ::change
(s/keys :opt-un [::addColumn ::createTable ::createIndex ::customChange]))
(s/def :change.strict.dbms-qualified-sql-change.sqlfile/dbms
string?)
(s/def :change.strict.dbms-qualified-sql-change.sqlFile/path
string?)
(s/def :change.strict.dbms-qualified-sqlFile-change.sqlFile/relativeToChangelogFile
boolean?)
(s/def :change.strict.dbms-qualified-sqlFile-change/sqlFile
(s/keys :req-un [:change.strict.dbms-qualified-sqlFile-change.sqlFile/dbms
:change.strict.dbms-qualified-sqlFile-change.sqlFile/path
:change.strict.dbms-qualified-sqlFile-change.sqlFile/relativeToChangelogFile]))
(s/def ::dbms-qualified-sqlFile-change
(s/merge
::change
(s/keys :req-un [:change.strict.dbms-qualified-sqlFile-change/sqlFile])))
(s/def :change.strict.dbms-qualified-sql-change.sql/dbms
string?)
(s/def :change.strict.dbms-qualified-sql-change.sql/sql
string?)
(s/def :change.strict.dbms-qualified-sql-change/sql
(s/keys :req-un [:change.strict.dbms-qualified-sql-change.sql/dbms
:change.strict.dbms-qualified-sql-change.sql/sql]))
(s/def ::dbms-qualified-sql-change
(s/merge
::change
(s/keys :req-un [:change.strict.dbms-qualified-sql-change/sql])))