This commit is contained in:
Bryce Covert
2018-04-09 12:35:13 -07:00
parent 87b94f0f3f
commit c82f61bdb4
6 changed files with 154 additions and 69 deletions

View File

@@ -0,0 +1,46 @@
(ns auto-ap.entities.vendors
(:require [clojure.spec.alpha :as s]))
(def email-regex #"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$")
(s/def ::id int)
(s/def ::name (s/nilable string?))
(s/def ::email (s/nilable (s/and string? (s/or :is-email #(re-matches email-regex %)
:is-empty #(= % "")))))
(s/def ::phone (s/nilable string?))
(s/def ::data (s/nilable string?))
(s/def ::invoice-reminder-schedule (s/nilable string?))
(s/def ::primary-contact ::name)
(s/def ::primary-email ::email)
(s/def ::primary-phone ::phone)
(s/def ::secondary-contact ::name)
(s/def ::secondary-email ::email)
(s/def ::secondary-phone ::phone)
(s/def ::code (s/nilable string?))
(s/def ::address1 (s/nilable string?))
(s/def ::address2 (s/nilable string?))
(s/def ::city (s/nilable string?))
(s/def ::state (s/nilable string?))
(s/def ::zip (s/nilable string?))
(s/def ::vendor (s/keys :req [::name]
:opt [::code
::id
::invoice-reminder-schedule
::primary-contact
::primary-email
::primary-phone
::secondary-contact
::secondary-email
::secondary-phone
::address1
::address2
::city
::state
::zip]))
(def vendor-spec (apply hash-map (drop 1 (s/form ::vendor))))
(def all-keys (concat (:req vendor-spec) (:opt vendor-spec)))