gameServer/OfficialServer/extdbinterface.hs
changeset 9435 59eec19cb31a
parent 9427 c6c7e68de2a4
child 9437 8d1e9a9dda8e
equal deleted inserted replaced
9433:f0a8ac191839 9435:59eec19cb31a
    15 import CoreTypes
    15 import CoreTypes
    16 import Utils
    16 import Utils
    17 
    17 
    18 
    18 
    19 dbQueryAccount =
    19 dbQueryAccount =
    20     "SELECT users.pass, users_roles.rid FROM users LEFT JOIN users_roles ON (users.uid = users_roles.uid AND users_roles.rid = 3) WHERE users.name = ?"
    20     "SELECT users.pass, \ 
       
    21     \ (SELECT COUNT(users_roles.rid) FROM users_roles WHERE users.uid = users_roles.uid AND users_roles.rid = 3), \
       
    22     \ (SELECT COUNT(users_roles.rid) FROM users_roles WHERE users.uid = users_roles.uid AND users_roles.rid = 13) \
       
    23     \ FROM users WHERE users.name = ?"
    21 
    24 
    22 dbQueryStats =
    25 dbQueryStats =
    23     "INSERT INTO gameserver_stats (players, rooms, last_update) VALUES (?, ?, UNIX_TIMESTAMP())"
    26     "INSERT INTO gameserver_stats (players, rooms, last_update) VALUES (?, ?, UNIX_TIMESTAMP())"
    24 
    27 
    25 dbQueryAchievement =
    28 dbQueryAchievement =
    33 
    36 
    34     case q of
    37     case q of
    35         CheckAccount clId clUid clNick _ -> do
    38         CheckAccount clId clUid clNick _ -> do
    36                 statement <- prepare dbConn dbQueryAccount
    39                 statement <- prepare dbConn dbQueryAccount
    37                 execute statement [SqlByteString clNick]
    40                 execute statement [SqlByteString clNick]
    38                 passAndRole <- fetchRow statement
    41                 result <- fetchRow statement
    39                 finish statement
    42                 finish statement
    40                 let response =
    43                 let response =
    41                         if isJust passAndRole then
    44                         if isJust result then let [pass, adm, contr] = fromJust $ result
    42                         (
    45                         (
    43                             clId,
    46                             clId,
    44                             clUid,
    47                             clUid,
    45                             HasAccount
    48                             HasAccount
    46                                 (fromSql . head . fromJust $ passAndRole)
    49                                 (fromSql pass)
    47                                 (fromSql (last . fromJust $ passAndRole) == Just (3 :: Int))
    50                                 (fromSql adm == Just (1 :: Int))
       
    51                                 (fromSql contr == Just (1 :: Int))
    48                         )
    52                         )
    49                         else
    53                         else
    50                         (clId, clUid, Guest)
    54                         (clId, clUid, Guest)
    51                 print response
    55                 print response
    52                 hFlush stdout
    56                 hFlush stdout