summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ebus-racket/db.rkt (renamed from ebus-racket/db.plt)23
1 files changed, 19 insertions, 4 deletions
diff --git a/ebus-racket/db.plt b/ebus-racket/db.rkt
index 050eafe..14817e5 100644
--- a/ebus-racket/db.plt
+++ b/ebus-racket/db.rkt
@@ -7,16 +7,31 @@
#:password "ebus"
#:server "10.2.2.26"))
+;; Query ID of sensor given by sensor-name
+;; Returns null if sensor is undefined
+(define (get-sensor-id sensor-name)
+ (with-handlers ([exn:fail? (lambda (exn) (void))])
+ (db:query-value pgc "SELECT id FROM sensor WHERE name = $1" sensor-name)))
-(define (query-sensor-id sensor-name)
- (db:query-value pgc "select id from sensor where name = $1" sensor-name))
+;; Create Sensor-ID with given name
+;; returns id
+(define (create-sensor-id sensor-name)
+ (db:query-exec "INSERT INTO sensor(name) VALUES ($1)" sensor-name)
+ (get-sensor-id sensor-name))
+
+;; Get ID of sensor given by sensor-name
+;; define sensor if needed
+(define (sensor-id sensor-name)
+ (let ([id (get-sensor-id sensor-name)])
+ (cond ((void? id) (create-sensor-id sensor-id))
+ (else id))))
(define (insert sensor-name value-float value-int value-string)
- (let ([sensor-id (query-sensor-id sensor-name)]
+ (let ([sensor-id (sensor-id sensor-name)]
[type (cond ((not (void? value-string)) "string")
((not (void? value-float)) "float")
((not (void? value-int)) "int"))])
(db:query-exec (string-append "INSERT INTO value(timestamp, sensor_id, type, value_float, value_int, value_string) "
"VALUES (now(), $1, $2, $3, $4, $5)")
sensor-id type value-float value-int value-string)))
- ;(db:query-exec pgc "select \ No newline at end of file
+