summaryrefslogtreecommitdiff
path: root/models/user.rkt
blob: a56b469c945ffdea1100bf957eb621ad297a9fc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#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)]))
Copyright 2019--2026 Marius PETER