racket/collects/db/main.rkt
2011-08-25 12:56:42 -06:00

100 lines
3.1 KiB
Racket

#lang racket/base
(require (for-syntax racket/base)
"private/generic/lazy-require.rkt"
racket/runtime-path
racket/promise
racket/contract
"base.rkt")
(provide (all-from-out "base.rkt"))
(define-lazy-require-definer define-postgresql "private/postgresql/main.rkt")
(define-lazy-require-definer define-mysql "private/mysql/main.rkt")
(define-lazy-require-definer define-sqlite3 "private/sqlite3/main.rkt")
(define-lazy-require-definer define-odbc "private/odbc/main.rkt")
(define-lazy-require-definer define-openssl 'openssl)
(define-postgresql
postgresql-connect
postgresql-guess-socket-path
postgresql-password-hash)
(define-mysql
mysql-connect
mysql-guess-socket-path
mysql-password-hash)
(define-sqlite3
sqlite3-connect)
(define-odbc
odbc-connect
odbc-driver-connect
odbc-data-sources
odbc-drivers)
(define-openssl
ssl-client-context?)
(provide/contract
;; Duplicates contracts at postgresql.rkt
[postgresql-connect
(->* (#:user string?
#:database string?)
(#:password (or/c string? (list/c 'hash string?) #f)
#:server (or/c string? #f)
#:port (or/c exact-positive-integer? #f)
#:socket (or/c path-string? 'guess #f)
#:allow-cleartext-password? boolean?
#:ssl (or/c 'yes 'no 'optional)
#:ssl-context ssl-client-context?
#:notice-handler (or/c 'output 'error output-port? procedure?)
#:notification-handler (or/c 'output 'error output-port? procedure?))
any/c)]
[postgresql-guess-socket-path
(-> path-string?)]
[postgresql-password-hash
(-> string? string? string?)]
;; Duplicates contracts at mysql.rkt
[mysql-connect
(->* (#:user string?
#:database string?)
(#:password (or/c string? (list/c 'hash string?) #f)
#:server (or/c string? #f)
#:port (or/c exact-positive-integer? #f)
#:socket (or/c path-string? 'guess #f)
#:notice-handler (or/c 'output 'error output-port? procedure?))
any/c)]
[mysql-guess-socket-path
(-> path-string?)]
[mysql-password-hash
(-> string? string?)]
;; Duplicates contracts at sqlite3.rkt
[sqlite3-connect
(->* (#:database (or/c path-string? 'memory 'temporary))
(#:mode (or/c 'read-only 'read/write 'create)
#:busy-retry-limit (or/c exact-nonnegative-integer? +inf.0)
#:busy-retry-delay (and/c rational? (not/c negative?)))
any/c)]
;; Duplicates contracts at odbc.rkt
[odbc-connect
(->* (#:dsn (or/c string? #f))
(#:user (or/c string? #f)
#:password (or/c string? #f)
#:notice-handler (or/c 'output 'error output-port? procedure?)
#:strict-parameter-types? boolean?
#:character-mode (or/c 'wchar 'utf-8 'latin-1))
connection?)]
[odbc-driver-connect
(->* (string?)
(#:notice-handler (or/c 'output 'error output-port? procedure?)
#:strict-parameter-types? boolean?
#:character-mode (or/c 'wchar 'utf-8 'latin-1))
connection?)]
[odbc-data-sources
(-> (listof (list/c string? string?)))]
[odbc-drivers
(-> (listof (cons/c string? any/c)))])