prepare to move more db modules to db-lib pkg

This commit is contained in:
Ryan Culpepper 2013-09-13 20:02:24 -04:00
parent d2841d1113
commit adc2ccbbd9
8 changed files with 78 additions and 59 deletions

View File

@ -8,8 +8,8 @@
;; ============================================================
(require "private/generic/interfaces.rkt"
"private/generic/sql-data.rkt")
(require db/private/generic/interfaces
db/private/generic/sql-data)
(provide (struct-out simple-result)
(struct-out rows-result)
@ -77,7 +77,7 @@
;; ============================================================
(require "private/generic/functions.rkt")
(require db/private/generic/functions)
(define fetch-size/c
(or/c exact-positive-integer? +inf.0))

View File

@ -1,7 +1,7 @@
#lang racket/base
(require racket/class
"interfaces.rkt"
"common.rkt")
db/private/generic/interfaces
db/private/generic/common)
(provide kill-safe-connection
virtual-connection
connection-pool

View File

@ -16,13 +16,11 @@
sqlite3-data-source
odbc-data-source)
(lazy-require
[db/sqlite3 (sqlite3-connect)])
(lazy-require
[db (postgresql-connect
mysql-connect
odbc-connect)])
odbc-connect
sqlite3-connect)])
#|
DSN v0.1 format

View File

@ -7,9 +7,9 @@
racket/runtime-path
(for-syntax (only-in racket/base quote))
ffi/unsafe/atomic
"interfaces.rkt"
"common.rkt"
"prepared.rkt")
db/private/generic/interfaces
db/private/generic/common
db/private/generic/prepared)
(provide place-connect
place-proxy-connection%)

View File

@ -5,8 +5,8 @@
racket/place
racket/serialize
racket/lazy-require
"interfaces.rkt"
"prepared.rkt")
db/private/generic/interfaces
db/private/generic/prepared)
(provide connection-server)
(define (pchan-put chan datum)

View File

@ -1,7 +1,6 @@
#lang racket/base
(require racket/class
ffi/file
"../generic/place-client.rkt"
"connection.rkt"
"dbsystem.rkt"
"ffi.rkt")
@ -12,48 +11,38 @@
#:mode [mode 'read/write]
#:busy-retry-delay [busy-retry-delay 0.1]
#:busy-retry-limit [busy-retry-limit 10]
#:debug? [debug? #f]
#:use-place [use-place #f])
(let ([path
(case path
((memory temporary) path)
(else
(let ([path (cleanse-path (path->complete-path path))])
(security-guard-check-file 'sqlite3-connect
path
(case mode
((read-only) '(read))
(else '(read write))))
path)))])
(cond [use-place
(place-connect (list 'sqlite3 path mode busy-retry-delay busy-retry-limit)
sqlite-place-proxy%)]
[else
(let ([path-bytes
(case path
((memory) #":memory:")
((temporary) #"")
(else (path->bytes path)))])
(let-values ([(db open-status)
(sqlite3_open_v2 path-bytes
(case mode
((read-only) SQLITE_OPEN_READONLY)
((read/write) SQLITE_OPEN_READWRITE)
((create)
(+ SQLITE_OPEN_READWRITE SQLITE_OPEN_CREATE))))])
(handle-status* 'sqlite3-connect open-status db)
(let ([c
(new connection%
(db db)
(busy-retry-limit busy-retry-limit)
(busy-retry-delay busy-retry-delay))])
(when debug? (send c debug #t))
c)))])))
(define sqlite-place-proxy%
(class place-proxy-connection%
(super-new)
(define/override (get-dbsystem) dbsystem)))
#:debug? [debug? #f])
(let* ([path
(case path
((memory temporary) path)
(else
(let ([path (cleanse-path (path->complete-path path))])
(security-guard-check-file 'sqlite3-connect
path
(case mode
((read-only) '(read))
(else '(read write))))
path)))]
[path-bytes
(case path
((memory) #":memory:")
((temporary) #"")
(else (path->bytes path)))])
(let-values ([(db open-status)
(sqlite3_open_v2 path-bytes
(case mode
((read-only) SQLITE_OPEN_READONLY)
((read/write) SQLITE_OPEN_READWRITE)
((create)
(+ SQLITE_OPEN_READWRITE SQLITE_OPEN_CREATE))))])
(handle-status* 'sqlite3-connect open-status db)
(let ([c
(new connection%
(db db)
(busy-retry-limit busy-retry-limit)
(busy-retry-delay busy-retry-delay))])
(when debug? (send c debug #t))
c))))
(define (sqlite3-available?)
(and sqlite-lib #t))

View File

@ -0,0 +1,32 @@
#lang racket/base
(require racket/contract/base
racket/class
db/base
db/private/generic/place-client
(rename-in db/private/sqlite3/main
[sqlite3-connect pre:sqlite3-connect])
db/private/sqlite3/dbsystem)
(define (sqlite3-connect #:database path
#:mode [mode 'read/write]
#:busy-retry-delay [busy-retry-delay 0.1]
#:busy-retry-limit [busy-retry-limit 10]
#:debug? [debug? #f]
#:use-place [use-place #f])
(cond [use-place
(place-connect (list 'sqlite3 path mode busy-retry-delay busy-retry-limit)
sqlite-place-proxy%)]
[else
(pre:sqlite3-connect #:database path
#:mode mode
#:busy-retry-delay busy-retry-delay
#:busy-retry-limit busy-retry-limit
#:debug? debug?)]))
(define sqlite-place-proxy%
(class place-proxy-connection%
(super-new)
(define/override (get-dbsystem) dbsystem)))
(provide sqlite3-connect
sqlite3-available?)

View File

@ -1,7 +1,7 @@
#lang racket/base
(require racket/contract/base
"base.rkt"
"private/sqlite3/main.rkt")
db/base
db/private/sqlite3/place)
;; FIXME: Contracts duplicated at main.rkt
(provide/contract