Overview
Comment: | Allow to take zero SQL parameters |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0d3df6790a58452429db1a09661d3262 |
User & Date: | joel on 2019-03-09 03:59:13 |
Other Links: | manifest | tags |
Context
2019-03-09
| ||
04:00 | Small fixes in dust check-in: e18e8fa4 user: joel tags: trunk | |
03:59 | Allow to take zero SQL parameters check-in: 0d3df679 user: joel tags: trunk | |
2019-03-08
| ||
00:01 | Change scribble command in makefile so that it can link to documentation for packages installed in user scope check-in: 7e52d6a3 user: joel tags: trunk | |
Changes
Modified code-docs/sqlite-tools.scrbl from [dda37e2d] to [de7cfd61].
︙ | ︙ | |||
35 36 37 38 39 40 41 | @section{Parameters} @defparam[sqltools:dbc con connection? #:value "No DB connection!"] The current database connection. This module assumes a single active connection and stores it in this parameter so you don’t have to pass it to a function every time you execute a query. It’s | | > | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | @section{Parameters} @defparam[sqltools:dbc con connection? #:value "No DB connection!"] The current database connection. This module assumes a single active connection and stores it in this parameter so you don’t have to pass it to a function every time you execute a query. It’s provided here so you can use it directly with the functions provided by @racketmodname[db] (all of which are re-provided by this module for convenience). @defboolparam[sqltools:log-queries? v #:value #f] A kill-switch that determines whether @racket[log-query] does anything. @section{SQL building-blocks} |
︙ | ︙ |
Modified sqlite-tools.rkt from [74d52a42] to [044c6c3e].
︙ | ︙ | |||
57 58 59 60 61 62 63 | (#:primary-key-cols (listof stringish?)) . ->* . string?)] [make-insert/replace-query (stringish? (listof stringish?) . -> . string?)] [make-insert-rows-query (stringish? (listof stringish?) (listof (listof stringish?)) . -> . string?)] [make-select-query (stringish? (listof stringish?) #:where stringish? . -> . string?)] ;; Database operations | | | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | (#:primary-key-cols (listof stringish?)) . ->* . string?)] [make-insert/replace-query (stringish? (listof stringish?) . -> . string?)] [make-insert-rows-query (stringish? (listof stringish?) (listof (listof stringish?)) . -> . string?)] [make-select-query (stringish? (listof stringish?) #:where stringish? . -> . string?)] ;; Database operations [init-db! ((pathish?) () #:rest (listof string?) . ->* . void?)] [query! ((string?) () #:rest (listof any/c) . ->* . void?)] [select-rows! (case-> (stringish? (listof stringish?) any/c . -> . (or/c empty? hash?)) (string? (listof stringish?) . -> . (or/c empty? hash?)))])) ;; ~~~ Private use ~~~ (define uninitialized-connection "No DB connection!") |
︙ | ︙ | |||
220 221 222 223 224 225 226 | (for ([q (in-list qs)]) (query! q)))) ;; Run a query with logging (if enabled) and return the result (define (query! q . parameters) (unless (good-connection?) (error "(query!) DB not connected")) (log-query q) | > | | 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | (for ([q (in-list qs)]) (query! q)))) ;; Run a query with logging (if enabled) and return the result (define (query! q . parameters) (unless (good-connection?) (error "(query!) DB not connected")) (log-query q) (cond [(empty? parameters) (query-exec (sqltools:dbc) q)] [else (apply query-exec (sqltools:dbc) q parameters)])) ;; Run a SELECT query, return a hash with field names as keys (define select-rows! (case-lambda ;; Use arbitrary query [(query fieldnames) (unless (good-connection?) (error "(select-rows!) DB not connected")) |
︙ | ︙ | |||
247 248 249 250 251 252 253 | ;; TESTING: database connection state and queries (module+ test (define TESTDB "SQLITE-TOOLS-TEST.sqlite") ;; Check that things start out uninitialized and that queries don’t work (check-equal? (sqltools:dbc) uninitialized-connection) (check-false (file-exists? TESTDB)) | | | 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | ;; TESTING: database connection state and queries (module+ test (define TESTDB "SQLITE-TOOLS-TEST.sqlite") ;; Check that things start out uninitialized and that queries don’t work (check-equal? (sqltools:dbc) uninitialized-connection) (check-false (file-exists? TESTDB)) (check-exn exn:fail? (lambda () (query! "SELECT 1"))) (check-exn exn:fail? (lambda () (select-rows! 'posts '(title) 1))) ;; Initialize db connection, create file with no schema (test-begin (check-equal? (init-db! TESTDB) (void)) (check-true (file-exists? TESTDB)) (delete-file TESTDB)) |
︙ | ︙ |