trivial/icfp-2016/examples/typed-racket-db.rkt
2016-03-20 00:06:07 -04:00

26 lines
988 B
Racket

#lang typed/racket/base
;; Example using the db library in Typed Racket
;; - require/typed gives specific type
;; - rename-in allows multiple specific types in a file (just need to deal with renamings)
;; -----------------------------------------------------------------------------
(require/typed db
(#:opaque Connection connection?)
(postgresql-connect (->* () (#:user String #:database String) Connection)))
(require/typed (prefix-in w: db)
(w:query-row (-> Connection String Any * (Vector Natural String))))
(require/typed (prefix-in s: db)
(s:query-row (-> Connection String Any * (Vector Natural Natural))))
;; -----------------------------------------------------------------------------
(define c (postgresql-connect #:user "ben" #:database "ipoe"))
(define r0 (w:query-row c "SELECT * FROM word WHERE word.word=$1" "blossoms"))
(define r1 (s:query-row c "SELECT * FROM word_syllables WHERE word_syllables.word=$1" (vector-ref r0 0)))
(displayln r0)
(displayln r1)