Привет всем!
Переписываю сейчас высоконагруженный кусок бекенда сайта с PHP на
Haskell. Вот есть у меня набор функций, сохраняющих модели в БД (в моем
случае - MySQL):
{-# LANGUAGE OverloadedStrings #-}
import Database.MySQL.Simple
...
getUserInnerId :: Line -> IO Int
getUserInnerId u@User{} = do
conn <- connect connectInfo
[Only i] <- query conn
"SELECT
u.id FROM users AS u WHERE u.id_1c=? LIMIT 1"
[userId u]
return i
createUser :: Line -> IO Int
createUser u@User{} = do
conn <- connect connectInfo
execute conn
"INSERT INTO users (id_1c, email) VALUE (?, ?)"
(userId u, "user" ++ show (userId u) ++ "
example.com")
i <- insertID conn
return (fromIntegral i)
updateUser :: Int -> Line -> IO ()
updateUser innerId u@User{} = do
conn <- connect connectInfo
execute conn
"UPDATE users SET name=?, groupid_1c=?, mult_insight=?, active=? WHERE
id=? LIMIT 1"
(userName u, userGroupId u, userMult u, 1 :: Int, innerId)
return ()
И все очень клево работает. Только не могу понять: как обойтись без
переподключения (connect) к БД при каждом вызове функции? Было бы
намного лучше коннектиться один раз при старте приложения.
--
С уважением,
Андрей