(blog ‘lucindo)

um dia eu aprendo a programar

postmodern-utils-0.0.1

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)


 | Enviar por e-mail  | Hits para esta publicação: 1211

Deixe uma resposta.