Fixes to generated routes, views and queries
List views now work; edit views don't yet.
This commit is contained in:
parent
8ee91b5372
commit
e879b8b628
|
@ -54,7 +54,9 @@
|
||||||
|
|
||||||
(defn order-by-clause
|
(defn order-by-clause
|
||||||
"Generate an appropriate `order by` clause for queries on this `entity`"
|
"Generate an appropriate `order by` clause for queries on this `entity`"
|
||||||
[entity]
|
([entity]
|
||||||
|
(order-by-clause entity ""))
|
||||||
|
([entity prefix]
|
||||||
(let
|
(let
|
||||||
[entity-name (:name (:attrs entity))
|
[entity-name (:name (:attrs entity))
|
||||||
preferred (map
|
preferred (map
|
||||||
|
@ -65,10 +67,10 @@
|
||||||
(empty? preferred)
|
(empty? preferred)
|
||||||
""
|
""
|
||||||
(str
|
(str
|
||||||
"ORDER BY " entity-name "."
|
"ORDER BY " prefix entity-name "."
|
||||||
(s/join
|
(s/join
|
||||||
(str ",\n\t" entity-name ".")
|
(str ",\n\t" prefix entity-name ".")
|
||||||
(flatten (cons preferred (key-names entity))))))))
|
(flatten (cons preferred (key-names entity)))))))))
|
||||||
|
|
||||||
|
|
||||||
(defn insert-query
|
(defn insert-query
|
||||||
|
@ -152,8 +154,8 @@
|
||||||
(str
|
(str
|
||||||
"-- :doc selects existing "
|
"-- :doc selects existing "
|
||||||
pretty-name
|
pretty-name
|
||||||
" records having any string field matching `:pattern` by substring match")
|
" records having any string field matching the parameter of the same name by substring match")
|
||||||
(str "SELECT * FROM " entity-name)
|
(str "SELECT * FROM lv_" entity-name)
|
||||||
"WHERE "
|
"WHERE "
|
||||||
(s/join
|
(s/join
|
||||||
"\n\tOR "
|
"\n\tOR "
|
||||||
|
@ -162,9 +164,9 @@
|
||||||
(map
|
(map
|
||||||
#(if
|
#(if
|
||||||
(#{"string" "date" "text"} (:type (:attrs %)))
|
(#{"string" "date" "text"} (:type (:attrs %)))
|
||||||
(str (-> % :attrs :name) " LIKE '%:pattern%'"))
|
(str (-> % :attrs :name) " LIKE '%params." (-> % :attrs :name) "%'"))
|
||||||
properties)))
|
properties)))
|
||||||
(order-by-clause entity)
|
(order-by-clause entity "lv_")
|
||||||
"--~ (if (:offset params) \"OFFSET :offset \")"
|
"--~ (if (:offset params) \"OFFSET :offset \")"
|
||||||
"--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))})))
|
"--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))})))
|
||||||
|
|
||||||
|
@ -232,8 +234,8 @@
|
||||||
(list
|
(list
|
||||||
(str "-- :name " query-name " " signature)
|
(str "-- :name " query-name " " signature)
|
||||||
(str "-- :doc lists all existing " pretty-name " records")
|
(str "-- :doc lists all existing " pretty-name " records")
|
||||||
(str "SELECT * FROM " entity-name)
|
(str "SELECT * FROM lv_" entity-name)
|
||||||
(order-by-clause entity)
|
(order-by-clause entity "lv_")
|
||||||
"--~ (if (:offset params) \"OFFSET :offset \")"
|
"--~ (if (:offset params) \"OFFSET :offset \")"
|
||||||
"--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))})))
|
"--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))})))
|
||||||
|
|
||||||
|
@ -276,9 +278,11 @@
|
||||||
"entity" (list
|
"entity" (list
|
||||||
(str "-- :name " query-name " " signature)
|
(str "-- :name " query-name " " signature)
|
||||||
(str "-- :doc lists all existing " pretty-name " records related to a given " pretty-far)
|
(str "-- :doc lists all existing " pretty-name " records related to a given " pretty-far)
|
||||||
(str "SELECT * \nFROM " entity-name)
|
(str "SELECT * \nFROM lv_" entity-name ", " entity-name)
|
||||||
(str "WHERE " entity-name "." link-field " = :id")
|
(str "WHERE lv_" entity-name "." (first (key-names entity)) " = "
|
||||||
(order-by-clause entity))
|
entity-name "." (first (key-names entity))
|
||||||
|
"\n\tAND " entity-name "." link-field " = :id")
|
||||||
|
(order-by-clause entity "lv_"))
|
||||||
"link" (let [link-table-name
|
"link" (let [link-table-name
|
||||||
(link-table-name entity far-entity)]
|
(link-table-name entity far-entity)]
|
||||||
(list
|
(list
|
||||||
|
|
|
@ -78,11 +78,25 @@
|
||||||
:list
|
:list
|
||||||
{:records
|
{:records
|
||||||
(list
|
(list
|
||||||
(symbol
|
'if
|
||||||
(str
|
(list
|
||||||
"db/search-strings-"
|
'not
|
||||||
(singularise (:name (:attrs e)))))
|
(list
|
||||||
'p)})))))))
|
'empty?
|
||||||
|
(list 'remove 'nil? (list 'vals 'p))))
|
||||||
|
(list
|
||||||
|
(symbol
|
||||||
|
(str
|
||||||
|
"db/search-strings-"
|
||||||
|
(singularise (:name (:attrs e)))))
|
||||||
|
(symbol "db/*db*")
|
||||||
|
'p)
|
||||||
|
(list
|
||||||
|
(symbol
|
||||||
|
(str
|
||||||
|
"db/list-"
|
||||||
|
(:name (:attrs e))))
|
||||||
|
(symbol "db/*db*") {}))})))))))
|
||||||
|
|
||||||
(defn make-route
|
(defn make-route
|
||||||
"Make a route for method `m` to request the resource with name `n`."
|
"Make a route for method `m` to request the resource with name `n`."
|
||||||
|
|
|
@ -422,7 +422,7 @@
|
||||||
[list-spec entity application]
|
[list-spec entity application]
|
||||||
{:tag :tbody
|
{:tag :tbody
|
||||||
:content
|
:content
|
||||||
["{% for record in %records% %}"
|
["{% for record in records %}"
|
||||||
{:tag :tr
|
{:tag :tr
|
||||||
:content
|
:content
|
||||||
(apply
|
(apply
|
||||||
|
@ -438,7 +438,6 @@
|
||||||
:attrs
|
:attrs
|
||||||
{:href
|
{:href
|
||||||
(str
|
(str
|
||||||
"{{servlet-context}}/"
|
|
||||||
(editor-name entity application)
|
(editor-name entity application)
|
||||||
"?"
|
"?"
|
||||||
(s/join
|
(s/join
|
||||||
|
|
Loading…
Reference in a new issue