syndicate-2017/examples/webchat/server/account.rkt

28 lines
940 B
Racket
Raw Normal View History

#lang syndicate
2016-11-30 05:08:35 +00:00
(require racket/set)
(require/activate syndicate/reload)
(require/activate syndicate/supervise)
2016-11-30 05:08:35 +00:00
(require "protocol.rkt")
(require "duplicate.rkt")
2016-11-30 05:08:35 +00:00
2017-02-20 17:54:52 +00:00
(spawn #:name 'account-manager
2016-11-30 05:08:35 +00:00
(stop-when-reloaded)
(define/query-set accounts (account $e) e)
(on (asserted (session $email _))
(when (not (set-member? (accounts) email))
(send! (create-resource (account email))))))
2016-11-30 05:08:35 +00:00
2017-02-20 17:54:52 +00:00
(spawn #:name 'account-factory
(stop-when-reloaded)
(on (message (create-resource ($ a (account $email))))
2017-02-20 17:54:52 +00:00
(spawn #:name (list 'account email)
(on-start (log-info "Account ~s created." email))
(on-stop (log-info "Account ~s deleted." email))
(assert a)
(assert (grant email email email (p:follow email) #t))
(stop-when-duplicate a)
(stop-when (message (delete-resource a))))))