(module autoform-postgresql () (import chicken scheme data-structures) (use postgresql autoform) (define ($db conn . q) (let ((result (query* conn (string-intersperse q "")))) (if (zero? (row-count result)) #f (row-map identity result)))) (get-database-structure (lambda (conn db-table) (let ((results ($db conn "select column_name, data_type, character_maximum_length, is_nullable " "from information_schema.columns where table_name = '" db-table "'"))) (map (lambda (item) ;; set the `mandatory?' field according to `is_nullable' (if (equal? (list-ref item 3) "NO") (set-car! (cdddr item) #t) (set-car! (cdddr item) #f)) item) results)))) (autoform-db-connection? connection?) (autoform-db-connect connect) (autoform-db-disconnect disconnect) ); end module