postmodern-utils-0.0.1

30 de Setembro de 2007 @ 17:37 - Lucindo
Arquivado sob common lisp, programação | Link desta publicação | Enviar por e-mail

Fiz um pacote que é um conjunto de funções e macros para facilitar o uso do Postmodern.

Download: http://www.lucindo.com.br/lisp/postmodern-utils.tar.gz

É possível instalar com ASDF-Install:

* (require :asdf-install)
* (asdf-install:install "http://lucindo.com.br/lisp/postmodern-utils.tar.gz")

Com ele é possível fazer o seguinte:

(eval-when (:execute)
  (setf postmodern-utils:*db-name* “db-name”
        postmodern-utils:*db-user* “username”
        postmodern-utils:*db-pass* “password”
        postmodern-utils:*db-host* “server”))

Depois disso você pode usar a macro with-pooled-connection para todo código que precise acessar o banco, como por exemplo:

(defmacro update-dao-attribute (type id accessor-fn new-value)
  (let ((dao (gensym)))
    `(with-pooled-connection
         (with-transaction ()
           (let ((,dao (get-dao type id)))
             (progn
               (setf (,accessor-fn ,dao) ,new-value)
               (save-dao ,dao)))))))

Nesse pacote ainda temos a função create-table-if-not-exists, a macro with-new-connection. A função que motivou o desenvolvimento dessa lib foi select-daos. Ela funciona como a select-dao do Postmodern, só que aceita alguns parâmetros (keyword) a mais:

(with-new-connection
 (select-daos 'entity :test '(:> attr1 100))

Mais exemplos:

(select-daos 'entity)
(select-daos 'entity :limit 20)
(select-daos 'entity :limit 20 :offset 40)
(select-daos 'entity :order-by 'attr2)
(select-daos 'entity :order-by '(:desc attr2))
(select-daos 'entity
	     :test '(:> attr1 100)
	     :order-by '(:desc attr2)
	     :limit 100
	     :offset 200)

Ainda sem comentários »

RSS de comentários deste artigo. URI para link desta publicação:

Deixe um comentário


Hits para esta publicação: 524

(blog ‘lucindo) | http://blog.lucindo.com.br