24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
"SELECT fieldname,fieldtype FROM keys ORDER BY id ASC;")
(reverse keys))) ;; could just sort desc?
;; get key vals for a given run-id
(define (get-key-vals db run-id)
(let* ((keys (get-keys db))
(res '()))
;; (print "keys: " keys " run-id: " run-id)
(for-each
(lambda (key)
(let ((qry (conc "SELECT " (key:get-fieldname key) " FROM runs WHERE id=?;")))
;; (print "qry: " qry)
(sqlite3:for-each-row
(lambda (key-val)
(set! res (cons key-val res)))
db qry run-id)))
keys)
(reverse res)))
;; get key val pairs for a given run-id
;; ( (FIELDNAME1 keyval1) (FIELDNAME2 keyval2) ... )
(define (keys:get-key-val-pairs db run-id)
(let* ((keys (get-keys db))
(res '()))
;; (print "keys: " keys " run-id: " run-id)
(for-each
(lambda (key)
(let ((qry (conc "SELECT " (key:get-fieldname key) " FROM runs WHERE id=?;")))
;; (print "qry: " qry)
(sqlite3:for-each-row
(lambda (key-val)
(set! res (cons (list (key:get-fieldname key) key-val) res)))
db qry run-id)))
keys)
(reverse res)))
|
|
|
|
|
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
"SELECT fieldname,fieldtype FROM keys ORDER BY id ASC;")
(reverse keys))) ;; could just sort desc?
;; get key vals for a given run-id
(define (get-key-vals db run-id)
(let* ((keys (get-keys db))
(res '()))
(debug:print 6 "keys: " keys " run-id: " run-id)
(for-each
(lambda (key)
(let ((qry (conc "SELECT " (key:get-fieldname key) " FROM runs WHERE id=?;")))
;; (debug:print 0 "qry: " qry)
(sqlite3:for-each-row
(lambda (key-val)
(set! res (cons key-val res)))
db qry run-id)))
keys)
(reverse res)))
;; get key val pairs for a given run-id
;; ( (FIELDNAME1 keyval1) (FIELDNAME2 keyval2) ... )
(define (keys:get-key-val-pairs db run-id)
(let* ((keys (get-keys db))
(res '()))
(debug:print 6 "keys: " keys " run-id: " run-id)
(for-each
(lambda (key)
(let ((qry (conc "SELECT " (key:get-fieldname key) " FROM runs WHERE id=?;")))
;; (debug:print 0 "qry: " qry)
(sqlite3:for-each-row
(lambda (key-val)
(set! res (cons (list (key:get-fieldname key) key-val) res)))
db qry run-id)))
keys)
(reverse res)))
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
;; default => (val1 val2 val3 ...)
;; withkey => (:key1 val1 :key2 val2 :key3 val3 ...)
(define (keys->vallist keys . withkey) ;; ORDERING IS VERY IMPORTANT, KEEP PROPER ORDER HERE!
(let* ((keynames (map key:get-fieldname keys))
(argkeys (map (lambda (k)(conc ":" k)) keynames))
(withkey (not (null? withkey)))
(newremargs (args:get-args (cons "blah" remargs) argkeys '() args:arg-hash 0))) ;; the cons blah works around a bug in args [args assumes ("calling-prog-name" .... ) ]
;;(print "remargs: " remargs " newremargs: " newremargs)
(apply append (map (lambda (x)
(let ((val (args:get-arg x)))
;; (print "x: " x " val: " val)
(if (not val)
;; (print "WARNING: missing key " x ". Specified in database but not on command line, using \"unk\"")
(set! val "default"))
(if withkey (list x val) (list val))))
argkeys))))
;; (define (keys->alist keys)
;; (let* ((keynames (map key:get-fieldname keys))
;; (argkeys (map (lambda (k)(conc ":" k)) keynames))
;; (withkey (not (null? withkey)))
;; (newremargs (args:get-args (cons "blah" remargs) argkeys '() args:arg-hash 0))) ;; the cons blah works around a bug in args
;; (print "remargs: " remargs " newremargs: " newremargs)
;; (apply append (map (lambda (x)
;; (let ((val (args:get-arg x)))
;; (if (not val)
;; (print "ERROR: Ignoring key " x " found in database but not on command line"))
;; (if withkey (list x val) (list val))))
;; argkeys))))
(define (keystring->keys keystring)
(map (lambda (x)
(let ((xlst (string-split x ":")))
(list->vector (if (> (length xlst) 1) xlst (append (car xlst)(list "TEXT"))))))
|
|
|
|
|
|
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
;; default => (val1 val2 val3 ...)
;; withkey => (:key1 val1 :key2 val2 :key3 val3 ...)
(define (keys->vallist keys . withkey) ;; ORDERING IS VERY IMPORTANT, KEEP PROPER ORDER HERE!
(let* ((keynames (map key:get-fieldname keys))
(argkeys (map (lambda (k)(conc ":" k)) keynames))
(withkey (not (null? withkey)))
(newremargs (args:get-args (cons "blah" remargs) argkeys '() args:arg-hash 0))) ;; the cons blah works around a bug in args [args assumes ("calling-prog-name" .... ) ]
;;(debug:print 0 "remargs: " remargs " newremargs: " newremargs)
(apply append (map (lambda (x)
(let ((val (args:get-arg x)))
;; (debug:print 0 "x: " x " val: " val)
(if (not val)
;; (debug:print 0 "WARNING: missing key " x ". Specified in database but not on command line, using \"unk\"")
(set! val "default"))
(if withkey (list x val) (list val))))
argkeys))))
;; (define (keys->alist keys)
;; (let* ((keynames (map key:get-fieldname keys))
;; (argkeys (map (lambda (k)(conc ":" k)) keynames))
;; (withkey (not (null? withkey)))
;; (newremargs (args:get-args (cons "blah" remargs) argkeys '() args:arg-hash 0))) ;; the cons blah works around a bug in args
;; (debug:print 0 "remargs: " remargs " newremargs: " newremargs)
;; (apply append (map (lambda (x)
;; (let ((val (args:get-arg x)))
;; (if (not val)
;; (debug:print 0 "ERROR: Ignoring key " x " found in database but not on command line"))
;; (if withkey (list x val) (list val))))
;; argkeys))))
(define (keystring->keys keystring)
(map (lambda (x)
(let ((xlst (string-split x ":")))
(list->vector (if (> (length xlst) 1) xlst (append (car xlst)(list "TEXT"))))))
|