diff options
Diffstat (limited to 'models/user.rkt')
| -rw-r--r-- | models/user.rkt | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/models/user.rkt b/models/user.rkt new file mode 100644 index 0000000..2cbf4fe --- /dev/null +++ b/models/user.rkt @@ -0,0 +1,33 @@ +#lang racket + +(provide + ;; Struct definitions + user + user? + user-id + user-name + user-role + ;; SQL CRUD + (contract-out + [get-current-user (-> (or/c user? #f))] + #; [delete-user! (-> user? void?)])) + +(require racket/contract + db + sql + "../db/conn.rkt") + +(struct user (id name role) #:transparent) + +(define (get-current-user) + (define current-user-id "foobar") + (define query (select id name role_id + #:from users + #:where (= id ,current-user-id) + #:limit 1)) + (define row (query-maybe-row (current-conn) query)) + (cond + [(false? row) #f] + [else + (match-define (vector id name role_id) row) + (user id name role_id)])) |