@@ -150,15 +150,16 @@ (next-iteration 0)) (dbi:with-transaction db (lambda () (dbi:for-each-row + (lambda (output) (lambda (iteration) - (if (and (number? iteration) + (if (and (number? (vector-refiteration) (>= iteration next-iteration)) (set! next-iteration (+ iteration 1)))) - iter-qry area version-name) + iter-qry area version-name)) ;; now store the data (dbi:exec db "INSERT INTO pkgs (area,version_name,iteration,store_type,submitter,source_path,quality,comment) VALUES (?,?,?,?,?,?,?,?);" area version-name next-iteration (conc store-type) submitter source-path quality comment))) (dbi:close iter-qry) @@ -166,11 +167,11 @@ (define (datashare:get-id db area version-name iteration) (let ((res #f)) (dbi:for-each-row (lambda (id) - (set! res id)) + (set! res (vector-ref id 0))) db "SELECT id FROM pkgs WHERE area=? AND version_name=? AND iteration=?;" area version-name iteration) res)) @@ -181,12 +182,12 @@ (dbi:exec db "UPDATE pkgs SET copied=? WHERE id=?;" value id)) (define (datashare:get-pkg-record db area version-name iteration) (let ((res #f)) (dbi:for-each-row - (lambda (a . b) - (set! res (apply vector a b))) + (lambda (output) + (set! res output)) db "SELECT * FROM pkgs WHERE area=? AND version_name=? AND iteration=?;" area version-name iteration) @@ -214,11 +215,11 @@ (define (datashare:count-refs db pkg-id) (let ((res 0)) (dbi:for-each-row (lambda (count) - (set! res count)) + (set! res (vector-ref count 0)) db "SELECT count(id) FROM refs WHERE pkg_id=?;" pkg-id) res)) @@ -281,12 +282,12 @@ (define open-run-close open-run-close-no-exception-handling) (define (datashare:get-pkgs db area-filter version-filter iter-filter) (let ((res '())) (dbi:for-each-row ;; replace with fold ... - (lambda (a . b) - (set! res (cons (list->vector (cons a b)) res))) + (lambda (output) + (set! res (cons output res))) db (conc "SELECT id,area,version_name,store_type,copied,source_path,iteration,submitter,datetime,storegrp,datavol,quality,disk_id,comment,stored_path " " FROM pkgs WHERE area like ? AND version_name LIKE ? AND iteration " iter-filter ";") area-filter version-filter) (reverse res))) @@ -293,12 +294,12 @@ (define (datashare:get-pkg db area-name version-name #!key (iteration #f)) (let ((dat '()) (res #f)) (dbi:for-each-row ;; replace with fold ... - (lambda (a . b) - (set! dat (cons (list->vector (cons a b)) dat))) + (lambda (output) + (set! dat (cons output dat))) db (conc "SELECT id,area,version_name,store_type,copied,source_path,iteration,submitter,datetime,storegrp,datavol,quality,disk_id,comment,stored_path " " FROM pkgs WHERE area=? AND version_name=? ORDER BY iteration ASC;") area-name version-name) ;; now filter for iteration, either max if #f or specific one @@ -316,13 +317,14 @@ (define (datashare:get-versions-for-area db area-name #!key (version-patt #f)) (let ((res '()) (data (make-hash-table))) (dbi:for-each-row + (lambda (output) (lambda (version-name submitter iteration submitted-time comment) ;; 0 1 2 3 4 - (hash-table-set! data version-name (vector version-name submitter iteration submitted-time comment))) + (hash-table-set! data version-name (vector version-name submitter iteration submitted-time comment)))) db "SELECT version_name,submitter,iteration,datetime,comment FROM pkgs WHERE area='megatest' AND version_name != 'latest' AND version_name LIKE ? ORDER BY datetime asc;" (or version-patt "%")) (map (lambda (x)(hash-table-ref data x))(sort (hash-table-keys data) string-ci>=))))