prepare to move more db modules to db-lib pkg
This commit is contained in:
parent
d2841d1113
commit
adc2ccbbd9
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
|
|
||||||
(require "private/generic/interfaces.rkt"
|
(require db/private/generic/interfaces
|
||||||
"private/generic/sql-data.rkt")
|
db/private/generic/sql-data)
|
||||||
|
|
||||||
(provide (struct-out simple-result)
|
(provide (struct-out simple-result)
|
||||||
(struct-out rows-result)
|
(struct-out rows-result)
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
|
|
||||||
(require "private/generic/functions.rkt")
|
(require db/private/generic/functions)
|
||||||
|
|
||||||
(define fetch-size/c
|
(define fetch-size/c
|
||||||
(or/c exact-positive-integer? +inf.0))
|
(or/c exact-positive-integer? +inf.0))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#lang racket/base
|
#lang racket/base
|
||||||
(require racket/class
|
(require racket/class
|
||||||
"interfaces.rkt"
|
db/private/generic/interfaces
|
||||||
"common.rkt")
|
db/private/generic/common)
|
||||||
(provide kill-safe-connection
|
(provide kill-safe-connection
|
||||||
virtual-connection
|
virtual-connection
|
||||||
connection-pool
|
connection-pool
|
||||||
|
|
|
@ -16,13 +16,11 @@
|
||||||
sqlite3-data-source
|
sqlite3-data-source
|
||||||
odbc-data-source)
|
odbc-data-source)
|
||||||
|
|
||||||
(lazy-require
|
|
||||||
[db/sqlite3 (sqlite3-connect)])
|
|
||||||
|
|
||||||
(lazy-require
|
(lazy-require
|
||||||
[db (postgresql-connect
|
[db (postgresql-connect
|
||||||
mysql-connect
|
mysql-connect
|
||||||
odbc-connect)])
|
odbc-connect
|
||||||
|
sqlite3-connect)])
|
||||||
|
|
||||||
#|
|
#|
|
||||||
DSN v0.1 format
|
DSN v0.1 format
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
racket/runtime-path
|
racket/runtime-path
|
||||||
(for-syntax (only-in racket/base quote))
|
(for-syntax (only-in racket/base quote))
|
||||||
ffi/unsafe/atomic
|
ffi/unsafe/atomic
|
||||||
"interfaces.rkt"
|
db/private/generic/interfaces
|
||||||
"common.rkt"
|
db/private/generic/common
|
||||||
"prepared.rkt")
|
db/private/generic/prepared)
|
||||||
(provide place-connect
|
(provide place-connect
|
||||||
place-proxy-connection%)
|
place-proxy-connection%)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
racket/place
|
racket/place
|
||||||
racket/serialize
|
racket/serialize
|
||||||
racket/lazy-require
|
racket/lazy-require
|
||||||
"interfaces.rkt"
|
db/private/generic/interfaces
|
||||||
"prepared.rkt")
|
db/private/generic/prepared)
|
||||||
(provide connection-server)
|
(provide connection-server)
|
||||||
|
|
||||||
(define (pchan-put chan datum)
|
(define (pchan-put chan datum)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#lang racket/base
|
#lang racket/base
|
||||||
(require racket/class
|
(require racket/class
|
||||||
ffi/file
|
ffi/file
|
||||||
"../generic/place-client.rkt"
|
|
||||||
"connection.rkt"
|
"connection.rkt"
|
||||||
"dbsystem.rkt"
|
"dbsystem.rkt"
|
||||||
"ffi.rkt")
|
"ffi.rkt")
|
||||||
|
@ -12,48 +11,38 @@
|
||||||
#:mode [mode 'read/write]
|
#:mode [mode 'read/write]
|
||||||
#:busy-retry-delay [busy-retry-delay 0.1]
|
#:busy-retry-delay [busy-retry-delay 0.1]
|
||||||
#:busy-retry-limit [busy-retry-limit 10]
|
#:busy-retry-limit [busy-retry-limit 10]
|
||||||
#:debug? [debug? #f]
|
#:debug? [debug? #f])
|
||||||
#:use-place [use-place #f])
|
(let* ([path
|
||||||
(let ([path
|
(case path
|
||||||
(case path
|
((memory temporary) path)
|
||||||
((memory temporary) path)
|
(else
|
||||||
(else
|
(let ([path (cleanse-path (path->complete-path path))])
|
||||||
(let ([path (cleanse-path (path->complete-path path))])
|
(security-guard-check-file 'sqlite3-connect
|
||||||
(security-guard-check-file 'sqlite3-connect
|
path
|
||||||
path
|
(case mode
|
||||||
(case mode
|
((read-only) '(read))
|
||||||
((read-only) '(read))
|
(else '(read write))))
|
||||||
(else '(read write))))
|
path)))]
|
||||||
path)))])
|
[path-bytes
|
||||||
(cond [use-place
|
(case path
|
||||||
(place-connect (list 'sqlite3 path mode busy-retry-delay busy-retry-limit)
|
((memory) #":memory:")
|
||||||
sqlite-place-proxy%)]
|
((temporary) #"")
|
||||||
[else
|
(else (path->bytes path)))])
|
||||||
(let ([path-bytes
|
(let-values ([(db open-status)
|
||||||
(case path
|
(sqlite3_open_v2 path-bytes
|
||||||
((memory) #":memory:")
|
(case mode
|
||||||
((temporary) #"")
|
((read-only) SQLITE_OPEN_READONLY)
|
||||||
(else (path->bytes path)))])
|
((read/write) SQLITE_OPEN_READWRITE)
|
||||||
(let-values ([(db open-status)
|
((create)
|
||||||
(sqlite3_open_v2 path-bytes
|
(+ SQLITE_OPEN_READWRITE SQLITE_OPEN_CREATE))))])
|
||||||
(case mode
|
(handle-status* 'sqlite3-connect open-status db)
|
||||||
((read-only) SQLITE_OPEN_READONLY)
|
(let ([c
|
||||||
((read/write) SQLITE_OPEN_READWRITE)
|
(new connection%
|
||||||
((create)
|
(db db)
|
||||||
(+ SQLITE_OPEN_READWRITE SQLITE_OPEN_CREATE))))])
|
(busy-retry-limit busy-retry-limit)
|
||||||
(handle-status* 'sqlite3-connect open-status db)
|
(busy-retry-delay busy-retry-delay))])
|
||||||
(let ([c
|
(when debug? (send c debug #t))
|
||||||
(new connection%
|
c))))
|
||||||
(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)))
|
|
||||||
|
|
||||||
(define (sqlite3-available?)
|
(define (sqlite3-available?)
|
||||||
(and sqlite-lib #t))
|
(and sqlite-lib #t))
|
||||||
|
|
32
racket/collects/db/private/sqlite3/place.rkt
Normal file
32
racket/collects/db/private/sqlite3/place.rkt
Normal 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?)
|
|
@ -1,7 +1,7 @@
|
||||||
#lang racket/base
|
#lang racket/base
|
||||||
(require racket/contract/base
|
(require racket/contract/base
|
||||||
"base.rkt"
|
db/base
|
||||||
"private/sqlite3/main.rkt")
|
db/private/sqlite3/place)
|
||||||
|
|
||||||
;; FIXME: Contracts duplicated at main.rkt
|
;; FIXME: Contracts duplicated at main.rkt
|
||||||
(provide/contract
|
(provide/contract
|
||||||
|
|
Loading…
Reference in New Issue
Block a user