27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
(module dbmod
*
(import scheme
chicken
data-structures
extras
(prefix sqlite3 sqlite3:)
posix
typed-records
srfi-1
srfi-18
srfi-69
|
>
|
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
(module dbmod
*
(import scheme
chicken
data-structures
extras
files
(prefix sqlite3 sqlite3:)
posix
typed-records
srfi-1
srfi-18
srfi-69
|
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
;; (dbmod:sync-tables tables last-update inmem db)
;; (dbmod:sync-tables tables last-update db inmem))))
;; direction: 'fromdest 'todest
;;
(define (dbmod:sync-gasket tables last-update inmem dbh dbfname direction)
(assert (sqlite3:database? inmem) "FATAL: sync-gasket: inmem is not a db")
(assert (sqlite3:database? inmem) "FATAL: sync-gasket: dbh is not a db")
(case (dbfile:sync-method)
((none) #f)
((attach)
(dbmod:attach-sync tables inmem dbfname direction))
((newsync)
(dbmod:new-sync tables inmem dbh dbfname direction))
(else
|
|
|
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
;; (dbmod:sync-tables tables last-update inmem db)
;; (dbmod:sync-tables tables last-update db inmem))))
;; direction: 'fromdest 'todest
;;
(define (dbmod:sync-gasket tables last-update inmem dbh dbfname direction)
(assert (sqlite3:database? inmem) "FATAL: sync-gasket: inmem is not a db")
(assert (sqlite3:database? dbh) "FATAL: sync-gasket: dbh is not a db")
(case (dbfile:sync-method)
((none) #f)
((attach)
(dbmod:attach-sync tables inmem dbfname direction))
((newsync)
(dbmod:new-sync tables inmem dbh dbfname direction))
(else
|
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
|
(or newstate currstate "NOT_STARTED")
(or newstatus currstate "UNKNOWN")
run-id testname)))))
;;======================================================================
;; db to db sync
;;======================================================================
(define (dbmod:db-to-db-sync src-db dest-db last-update)
(let ((sdb #f) ;;
(ddb #f))
(dbmod:sync-gasket tables last-update inmem db
dbfullname syncdir)
))
)
|
|
>
>
>
>
>
>
>
>
>
|
|
|
<
<
|
<
|
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
|
(or newstate currstate "NOT_STARTED")
(or newstatus currstate "UNKNOWN")
run-id testname)))))
;;======================================================================
;; db to db sync
;;======================================================================
(define (dbmod:db-to-db-sync src-db dest-db last-update init-proc keys)
(if (and (file-exists? src-db)
(file-read-access? src-db))
(let* ((d-wr (or (and (file-exists? dest-db)
(file-write-access? dest-db)) ;; exists and writable
(let* ((dirname (pathname-directory dest-db)))
(and dirname
(file-exists? dirname)
(file-write-access? dirname)))))
(tables (db:sync-all-tables-list keys))
(sdb (dbmod:safely-open-db src-db init-proc #t))
(ddb (dbmod:safely-open-db dest-db init-proc d-wr)))
(dbmod:sync-gasket tables last-update sdb ddb dest-db 'todest))))
)
|