-
Notifications
You must be signed in to change notification settings - Fork 1
/
Models.hs
53 lines (37 loc) · 1.41 KB
/
Models.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
module Models where
import Database.PostgreSQL.Simple.Time
type Id = Int
type MemberId = Id
type Email = String
type SendTime = Int
data Member = Member MemberId Email Bool SendTime UTCTimestamp deriving (Show)
type LoginCodeId = Id
type Code = String
data LoginCode = LoginCode LoginCodeId Code UTCTimestamp MemberId deriving (Show)
type TokenId = Id
data Token = Token TokenId Code MemberId deriving (Show)
type PostId = Id
type PostToken = String
data Post = Post PostId (Maybe String) UTCTimestamp PostToken MemberId deriving (Show)
type AttachmentId = Id
type Url = String
type AttachmentType = String
data Attachment = Attachment AttachmentId Url AttachmentType PostId
type AnnouncementId = Id
data Announcement = Announcement AnnouncementId Bool String deriving (Show)
memberToId :: Member -> MemberId
memberToId (Member id _ _ _ _) = id
memberToEmail :: Member -> Email
memberToEmail (Member _ email _ _ _) = email
loginCodeToMemberId :: LoginCode -> MemberId
loginCodeToMemberId (LoginCode _ _ _ id) = id
loginCodeToCode :: LoginCode -> Code
loginCodeToCode (LoginCode _ code _ _) = code
tokenToMemberId :: Token -> MemberId
tokenToMemberId (Token _ _ id) = id
postToMemberId :: Post -> MemberId
postToMemberId (Post _ _ _ _ id) = id
postToMString :: Post -> Maybe String
postToMString (Post _ mString _ _ _) = mString
announcementToString :: Announcement -> String
announcementToString (Announcement _ _ str) = str