summaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-12 18:23:40 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-12 18:23:40 +0100
commit7df7ad070b7a6146ad638294e379d976d363763e (patch)
tree38ee0e186b9999753b933990a411caad97d6ceb3 /models
parent46135d9af7b41af8f505968160aa2b84781682d5 (diff)
Add user entity to model.
Diffstat (limited to 'models')
-rw-r--r--models/user.rkt33
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)]))
Copyright 2019--2026 Marius PETER