#lang racket (provide ;; Model struct user user? user-id user-name user-role (contract-out ;; SQL CRUD [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)]))