@@ -8,10 +8,10 @@ import Settings (getDatabaseName, getDatabaseUser)
8
8
import Control.Monad.Logger (NoLoggingT (runNoLoggingT ))
9
9
import Data.List (inits , intercalate )
10
10
import Data.Text (Text , pack , unpack )
11
- import Database.Persist.MySQL (ConnectInfo (ConnectInfo , connectDatabase , connectUser ), Entity (Entity ), EntityNameDB (unEntityNameDB ), FieldDef (FieldDef ), FieldNameHS (unFieldNameHS ), Filter (Filter ), FilterValue (FilterValue ), PersistFilter (BackendSpecificFilter ), PersistStoreWrite (insert_ ), SqlPersistT , defaultConnectInfo , fieldDBName , getEntityDBName , getEntityFields , runMigration , runSqlConn , selectList , withMySQLConn )
11
+ import Database.Persist.MySQL (ConnectInfo (ConnectInfo , connectDatabase , connectUser ), Entity (Entity ), EntityNameDB (unEntityNameDB ), FieldDef (FieldDef ), FieldNameHS (unFieldNameHS ), Filter (Filter ), FilterValue (FilterValue ), PersistFilter (BackendSpecificFilter ), PersistStoreWrite (insert_ ), SqlPersistT , defaultConnectInfo , fieldDBName , getEntityDBName , getEntityFields , runMigration , runSqlConn , selectList , withMySQLConn , SelectOpt )
12
12
import Database.Persist.TH (mkMigrate , mkPersist , persistLowerCase , share , sqlSettings )
13
13
import Database.Persist.Types (EntityDef , FieldDef (fieldSqlType ), fieldHaskell )
14
- import Database.Persist ((==.) )
14
+ import Database.Persist ((==.) , (=.) )
15
15
import Database.Schema (EntityField (TokenToken , VisitUuid ), GuestbookEntry (GuestbookEntry , guestbookEntryIndex ), Snake (Snake , snakeIndex ), Token (tokenName , tokenToken , Token , tokenIndex ), User (userName , User , userIndex ), Visit (Visit , visitIndex ), defs , migrateAll )
16
16
import Logger (info )
17
17
import Tree (Tree (Tree ))
@@ -34,53 +34,8 @@ runDb cmd = do
34
34
doMigration :: IO ()
35
35
doMigration = runDb $ runMigration migrateAll
36
36
37
- -- utils
38
- guestbookToTree :: [GuestbookEntry ] -> Int -> [Tree GuestbookEntry ]
39
- guestbookToTree entries targetParent = [Tree (GuestbookEntry id timestamp name content parent) $ guestbookToTree entries id | (GuestbookEntry id timestamp name content parent) <- entries, parent == targetParent]
40
-
41
37
-- getters
42
38
43
- getVisits :: IO [Visit ]
44
- getVisits = do
45
- visits <- runDb $ selectList [] []
46
- return $ map (\ (Entity _ u) -> u) visits
47
-
48
- getGuestbook :: IO [Tree GuestbookEntry ]
49
- getGuestbook = do
50
- entries <- runDb $ selectList [] [] :: IO [Entity GuestbookEntry ]
51
- return $ guestbookToTree (map (\ (Entity _ entry) -> entry) entries) (- 1 )
52
-
53
- getGuestbookEntries :: IO [GuestbookEntry ]
54
- getGuestbookEntries = do
55
- entries <- runDb $ selectList [] []
56
- return $ map (\ (Entity _ e) -> e) entries
57
-
58
- getLeaderboard :: IO [Snake ]
59
- getLeaderboard = do
60
- entries <- runDb $ selectList [] []
61
- return $ map (\ (Entity _ e) -> e) entries
62
-
63
- getUsers :: IO [User ]
64
- getUsers = do
65
- entries <- runDb $ selectList [] []
66
- return $ map (\ (Entity _ e) -> e) entries
67
-
68
- getTokens :: IO [Token ]
69
- getTokens = do
70
- entries <- runDb $ selectList [] []
71
- return $ map (\ (Entity _ e) -> e) entries
72
-
73
- uuidExists :: String -> IO Bool
74
- uuidExists uuid = do
75
- visits <- runDb $ selectList [VisitUuid ==. uuid] [] :: IO [Entity Visit ]
76
- print visits
77
- return (null visits)
78
-
79
- tokenToUsername :: String -> IO String
80
- tokenToUsername token = do
81
- (Entity _ token : _) <- runDb $ selectList [TokenToken ==. token] []
82
- return $ tokenName token
83
-
84
39
-- schema
85
40
prettyPrintSchema :: String
86
41
prettyPrintSchema =
@@ -95,29 +50,29 @@ prettyPrintSchema =
95
50
fieldType field = show $ fieldSqlType field
96
51
97
52
validateToken :: String -> IO Bool
98
- validateToken token = any (\ x -> tokenToken x == token) <$> getTokens
53
+ validateToken token = any (\ x -> tokenToken x == token) <$> (getData [] [] :: IO [ Token ])
99
54
100
55
class AdminTable a where
101
56
toList :: a -> [String ]
102
57
button :: a -> Html
103
- getData :: [Filter a ] -> IO [a ]
58
+ getData :: [Filter a ] -> [ SelectOpt a ] -> IO [a ]
104
59
instance AdminTable Visit where
105
60
toList (Visit rid timestamp uuid) = [show rid, show timestamp, uuid]
106
61
button a = [hsx |<button id={"visits::"++(show $ visitIndex a)} onclick="delete_row(this.id)">Delete</button>|]
107
- getData f = map (\ (Entity _ e) -> e) <$> runDb (selectList f [] ) :: IO [Visit ]
62
+ getData f o = map (\ (Entity _ e) -> e) <$> runDb (selectList f o ) :: IO [Visit ]
108
63
instance AdminTable GuestbookEntry where
109
64
toList (GuestbookEntry rid timestamp name content parentId) = [show rid, show timestamp, name, content, show parentId]
110
65
button a = [hsx |<button id={"guestbook::"++(show $ guestbookEntryIndex a)} onclick="delete_row(this.id)">Delete</button>|]
111
- getData f = map (\ (Entity _ e) -> e) <$> runDb (selectList f [] ) :: IO [GuestbookEntry ]
66
+ getData f o = map (\ (Entity _ e) -> e) <$> runDb (selectList f o ) :: IO [GuestbookEntry ]
112
67
instance AdminTable Snake where
113
68
toList (Snake rid timestamp name score speed fruits) = [show rid, show timestamp, name, show score, show speed, show fruits]
114
69
button a = [hsx |<button id={"snake::"++(show $ snakeIndex a)} onclick="delete_row(this.id)">Delete</button>|]
115
- getData f = map (\ (Entity _ e) -> e) <$> runDb (selectList f [] ) :: IO [Snake ]
70
+ getData f o = map (\ (Entity _ e) -> e) <$> runDb (selectList f o ) :: IO [Snake ]
116
71
instance AdminTable User where
117
72
toList (User rid name password) = [show rid, name, password]
118
- button a = [hsx || <button id={"users::"++(show $ userIndex a)} onclick="delete_row(this.id)">Delete</button>|]
119
- getData f = map (\ (Entity _ e) -> e) <$> runDb (selectList f [] ) :: IO [User ]
73
+ button a = [hsx |<button id={"users::"++(show $ userIndex a)} onclick="delete_row(this.id)">Delete</button>|]
74
+ getData f o = map (\ (Entity _ e) -> e) <$> runDb (selectList f o ) :: IO [User ]
120
75
instance AdminTable Token where
121
76
toList (Token rid token name) = [show rid, token, name]
122
77
button a = [hsx |<button id={"valid_tokens::"++(show $ tokenIndex a)} onclick="delete_row(this.id)">Delete</button>|]
123
- getData f = map (\ (Entity _ e) -> e) <$> runDb (selectList f [] ) :: IO [Token ]
78
+ getData f o = map (\ (Entity _ e) -> e) <$> runDb (selectList f o ) :: IO [Token ]
0 commit comments