Skip to content

Instantly share code, notes, and snippets.

@metametaclass
Created October 12, 2012 14:04
Show Gist options
  • Save metametaclass/3879328 to your computer and use it in GitHub Desktop.
Save metametaclass/3879328 to your computer and use it in GitHub Desktop.
(defn field
[name caption type]
{:Name name :Caption caption :FieldType type}
)
(defn param
([name caption type refer]
{:Name name :Caption caption :ParamType type :Reference refer})
([name caption type refer format default]
{:Name name :Caption caption :ParamType type :Reference refer :Format format :Default default})
)
(def reports-map
"Templates"
{:fn (fn [params] (template/list-templates))
:Metadata {:Desc "Список шаблонов документов"
:Fields [(field "ID" "ID" "integer")
(field "Name" "Название" "string")
(field "Desc" "Описание" "string")
(field "Number" "Номер" "string")
(field "Group" "Группа" "string")
]
}
}
}
)
(defn get-report
[name params]
(debugs "get-report:" name)
(if-let [ref (reports-map name)]
((:fn ref) params)
{:Error (str "Отчет " name " не найден")}
)
)
(defn get-report-metadata
[name]
(debugs "get-report-metadata:" name)
(if-let [ref (reports-map name)]
(:Metadata ref)
{:Error (str "Отчет " name " не найден")}
)
)
;;===============================
(defroutes handler
(GET "/Reports/:name/metadata" [name ]
(debugs "Report metadata:" name )
(json-response (fbreports/get-report-metadata name)))
(GET "/Reports/:name" {params :params}
(debugs "Report data:" params)
(json-response (fbreports/get-report (:name params) params)))
;;===============================
(def app
(-> handler
wrap-db-user
wrap-json-params
ring.middleware.params/wrap-params
wraplog
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment