;; ;; Author: David Krentzlin ;; ;; Created: So Nov 14 14:35:46 2010 (CET) ;; Last-Updated: Do Mär 29 12:19:31 2012 (CEST) ;; By: (module nomads-postgresql () (import chicken scheme) (require-library postgresql nomads) (import nomads postgresql) (import (only extras sprintf)) (db-with-connection (lambda (connection-spec proc) (let ((connection (connect connection-spec))) (handle-exceptions exn (begin (when (connection? connection) (disconnect connection)) (signal exn)) (proc connection) (disconnect connection))))) (db-with-transaction with-transaction) (db-schema-information-exists? (lambda (con table) (not (zero? (row-count (query con "SELECT tablename FROM pg_tables WHERE schemaname='public' AND tablename=$1" table)))))) (db-initialize-schema-information (lambda (con table) (query con (sprintf "DROP TABLE \"~A\" IF EXISTS " table)) (query con (sprintf "CREATE TABLE \"~A\" (version character varying(255) NOT NULL)" table)))) (db-version-list (lambda (con table) (let ((result (query con (sprintf "SELECT version FROM \"~A\" " table)))) (if (zero? (row-count result)) '() (row-values result))))) (db-add-version (lambda (con version table) (query con (sprintf "INSERT INTO \"~A\" (version) VALUES($1) " table) version))) (db-remove-version (lambda (con version table) (query con (sprintf "DELETE FROM \"~A\" WHERE version=$1 " table) version))) (db-execute-sql (lambda (con expr) (row-map values (query con expr)))) (db-error? (condition-predicate 'postgresql)) (db-message-from-error (condition-property-accessor 'postgresql 'message-detail)) )