在Clojure / Luminus / Composure中使用SQL

时间:2016-05-25 08:05:35

标签: sql clojure compojure luminus

1)我有一个luminus应用程序。我想在单个数据库连接中执行多个数据库请求,这意味着无需再次打开连接。 现在我有了这个:

(defn page1 [id]
  (layout/render "page1.html"
    (my-var1 (db/get-single-article {:id (Integer/parseInt id)}))))

我想在执行db / get-single-article的同一数据库连接中执行其他内容,比如db / get-something-else。怎么样?

2)在resources / sql / queries.sql中我有这个:

-- :name get-single-article :? :1
-- :doc retrieve an article given the id.
SELECT * FROM article
WHERE id = :id

如何向此添加一个查询,以便它在db / get-single-article调用中执行并返回不同的结果集?像这样:

-- :name get-single-article :? :1
-- :doc retrieve an article given the id.
SELECT * FROM article
WHERE id = :id

select * from another_table
where ...

如何在调用db / get-single-article时导航它们?

1 个答案:

答案 0 :(得分:1)

继续并在SQL文件中定义第二个查询:

-- :name get-something-else :? :*
select * from another_table where ...

然后为这两个查询分配查询结果:

(defn page1 [id]
  (layout/render "page1.html"
    {:my-var1 (db/get-single-article {:id (Integer/parseInt id)})
     :my-var2 (db/get-something-else)}))