]> gitweb.factorcode.org Git - factor.git/blob - extra/furnace/auth/providers/db/db.factor
Fixing everything for mandatory stack effects
[factor.git] / extra / furnace / auth / providers / db / db.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: db db.tuples db.types accessors
4 furnace.auth.providers kernel continuations
5 classes.singleton ;
6 IN: furnace.auth.providers.db
7
8 user "USERS"
9 {
10     { "username" "USERNAME" { VARCHAR 256 } +user-assigned-id+ }
11     { "realname" "REALNAME" { VARCHAR 256 } }
12     { "password" "PASSWORD" BLOB +not-null+ }
13     { "salt" "SALT" INTEGER +not-null+ }
14     { "email" "EMAIL" { VARCHAR 256 } }
15     { "ticket" "TICKET" { VARCHAR 256 } }
16     { "capabilities" "CAPABILITIES" FACTOR-BLOB }
17     { "profile" "PROFILE" FACTOR-BLOB }
18     { "deleted" "DELETED" INTEGER +not-null+ }
19 } define-persistent
20
21 : init-users-table ( -- ) user ensure-table ;
22
23 SINGLETON: users-in-db
24
25 M: users-in-db get-user
26     drop <user> select-tuple ;
27
28 M: users-in-db new-user
29     drop
30     [
31         user new
32             over username>> >>username
33         select-tuple [
34             drop f
35         ] [
36             dup insert-tuple
37         ] if
38     ] with-transaction ;
39
40 M: users-in-db update-user
41     drop update-tuple ;