forked from commercialhaskell/haskellers
/
Model.hs
57 lines (47 loc) · 1.98 KB
/
Model.hs
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
module Model where
import Prelude
import Yesod
import Data.Text (Text, append)
import Data.Char (isUpper)
import qualified Data.Text as T
import Data.Time (UTCTime, Day)
import Database.Persist.Quasi
import Text.Blaze.Html (ToMarkup (..))
data Employment = FullTime | PartTime | FullPartTime | NotLooking
deriving (Show, Read, Eq, Enum, Bounded)
derivePersistField "Employment"
data Service = Twitter | XMPP | AIM | Freenode | GooglePlus
deriving (Show, Read, Eq, Enum, Bounded)
derivePersistField "Service"
data TeamUserStatus = Watching | UnapprovedMember | ApprovedMember | Admin
deriving (Show, Read, Eq, Enum, Bounded)
derivePersistField "TeamUserStatus"
data TopicType = Discussion | Feature | Bug
deriving (Show, Read, Eq, Enum, Bounded)
derivePersistField "TopicType"
data TopicStatus = Open | Resolved | Closed
deriving (Show, Read, Eq, Enum, Bounded)
derivePersistField "TopicStatus"
prettyEmployment :: Employment -> String
prettyEmployment FullTime = "You can ask me about full-time employment"
prettyEmployment PartTime = "You can ask me about part-time employment"
prettyEmployment FullPartTime = "You can ask me about full- or part-time employment"
prettyEmployment NotLooking = "I am not currently seeking employment"
instance ToMarkup Employment where toMarkup = toMarkup . prettyEmployment
-- You can define all of your database entities in the entities file.
-- You can find more information on persistent and how to declare entities
-- at:
-- http://www.yesodweb.com/book/persistent/
share [mkPersist sqlSettings, mkMigrate "migrateAll"]
$(persistFileWith upperCaseSettings
{ psToDBName = \t ->
if not (T.null t) && isUpper (T.head t)
then "Haskellers__" `append` psToDBName upperCaseSettings t
else psToDBName upperCaseSettings t
} "config/models")
userFullName' :: User -> Text
userFullName' u =
let s = userFullName u
in if T.length s > 50
then T.take 40 s `T.append` "..."
else s