summaryrefslogtreecommitdiff
path: root/models/user.rkt
blob: 526ea202ea10025587fbdaca1372b9857ee4022a (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
#lang racket

(provide user
         user?
         user-id
         user-name
         user-role
         (contract-out [get-current-user (-> (or/c user? #f))]))

(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