100 lines
3.1 KiB
Racket
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)))])
|