summaryrefslogtreecommitdiff
path: root/models/user.rkt
blob: 2cbf4fea8fd8679e36bae475ca9366913e37f0ab (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
 ;; 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