diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-11-12 18:23:40 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-11-12 18:23:40 +0100 |
| commit | 7df7ad070b7a6146ad638294e379d976d363763e (patch) | |
| tree | 38ee0e186b9999753b933990a411caad97d6ceb3 /models | |
| parent | 46135d9af7b41af8f505968160aa2b84781682d5 (diff) | |
Add user entity to model.
Diffstat (limited to 'models')
| -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)])) |