string keys are stored as strings.
This commit is contained in:
+16
-8
@@ -130,7 +130,8 @@
|
||||
|
||||
(define (get-deleted)
|
||||
(let ((count (store-count db-store))
|
||||
(k 0))
|
||||
(k 0)
|
||||
(last-perc 0))
|
||||
(let ((keys (store-keys db-store)))
|
||||
(map (λ (key)
|
||||
(let ((info (store-ref db-store key)))
|
||||
@@ -139,7 +140,8 @@
|
||||
(filter (λ (key)
|
||||
(set! k (+ k 1))
|
||||
(let ((perc (quotient (* k 100) count)))
|
||||
(when (= (remainder perc 10) 0)
|
||||
(when (and (= (remainder perc 10) 0) (> perc last-perc))
|
||||
(set! last-perc perc)
|
||||
(info-am "get-deleteed: ~a%" perc)))
|
||||
(let ((v (store-ref db-store key)))
|
||||
(eq? (hash-ref v 'file-db) 'unknown)))
|
||||
@@ -147,14 +149,20 @@
|
||||
)
|
||||
|
||||
(let* ((walker-count 0)
|
||||
(last-commit-s (current-seconds))
|
||||
(fw (make-file-walker base-path "*"
|
||||
(λ (base-path path info)
|
||||
(cond
|
||||
((= walker-count 0)
|
||||
(store-begin db-store))
|
||||
((= (remainder walker-count 250) 0)
|
||||
(store-commit db-store)
|
||||
(store-begin db-store))
|
||||
(let ((tm (current-seconds)))
|
||||
(cond
|
||||
((= walker-count 0)
|
||||
(store-begin db-store))
|
||||
((or (= (remainder walker-count 250) 0)
|
||||
(> (- tm last-commit-s) 5))
|
||||
(store-commit db-store)
|
||||
(store-begin db-store)
|
||||
(set! last-commit-s tm)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! walker-count (+ walker-count 1))
|
||||
(let-values (((base-path* path* info*) (file-admin base-path path info)))
|
||||
|
||||
+28
-21
@@ -19,6 +19,9 @@
|
||||
store-commit
|
||||
)
|
||||
|
||||
(define (cvtkey k)
|
||||
(string-downcase (format "~a" k)))
|
||||
|
||||
(define store-kind 'hash)
|
||||
|
||||
(define (store-config! #:kind [kind 'hash])
|
||||
@@ -48,34 +51,38 @@
|
||||
(serialize st) file #:exists 'replace))
|
||||
(ks-close (cadr st))))
|
||||
|
||||
(define (store-ref st key . val)
|
||||
(if (eq? (car st) 'hash)
|
||||
(if (null? val)
|
||||
(hash-ref (cadr st) key)
|
||||
(hash-ref (cadr st) key (car val)))
|
||||
(let ((v (if (null? val)
|
||||
(ks-get (cadr st) key)
|
||||
(define (store-ref st key* . val)
|
||||
(let ((key (cvtkey key*)))
|
||||
(if (eq? (car st) 'hash)
|
||||
(if (null? val)
|
||||
(hash-ref (cadr st) key)
|
||||
(hash-ref (cadr st) key (car val)))
|
||||
(let ((v (if (null? val)
|
||||
(ks-get (cadr st) key)
|
||||
(ks-get (cadr st) key (car val)))))
|
||||
(if (eq? v 'ks-nil)
|
||||
(error "No such key in storage")
|
||||
v))
|
||||
)
|
||||
)
|
||||
)
|
||||
))
|
||||
|
||||
(define (store-set! st key val)
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-set! (cadr st) key val)
|
||||
(ks-set! (cadr st) key val)))
|
||||
(define (store-set! st key* val)
|
||||
(let ((key (cvtkey key*)))
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-set! (cadr st) key val)
|
||||
(ks-set! (cadr st) key val))))
|
||||
|
||||
(define (store-remove! st key)
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-remove! (cadr st) key)
|
||||
(ks-drop! (cadr st) key)))
|
||||
(define (store-remove! st key*)
|
||||
(let ((key (cvtkey key*)))
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-remove! (cadr st) key)
|
||||
(ks-drop! (cadr st) key))))
|
||||
|
||||
(define (store-exists? st key)
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-has-key? (cadr st) key)
|
||||
(ks-exists? (cadr st) key)))
|
||||
(define (store-exists? st key*)
|
||||
(let ((key (cvtkey key*)))
|
||||
(if (eq? (car st) 'hash)
|
||||
(hash-has-key? (cadr st) key)
|
||||
(ks-exists? (cadr st) key))))
|
||||
|
||||
(define (store-keys st)
|
||||
(if (eq? (car st) 'hash)
|
||||
|
||||
Reference in New Issue
Block a user