SelectOneManyとかもうないのか...
二日酔いが続く中、Database.Persist.Query.Join (SelectOneMany (..), selectOneMany)のあたりの関数がごっそりなくなっていて、嗚咽を模様した今日この頃です。
この辺の記事(「Yesod Web Framework SQL Join」)がそれっぽいようなことを書いてあるような気配がするのですが、英語も読む気力がないので、どなたか訳してくれないでしょうか...Orz
そんなことはいいとして、適当に書き換えてみました、データベースに入っているデータを単純に読み込むだけですが
データはこんな感じ
cuomo@karky7 ~ $ mysql -u root SAMPLEDB Reading table information for completion of table and column names ... ... mysql> SELECT * FROM Person; +----+-------------------+------+ | id | name | age | +----+-------------------+------+ | 11 | Kazuto Ando | 40 | | 12 | Yoshirou Dorumaki | 41 | +----+-------------------+------+ 2 rows in set (0.00 sec) mysql>で、haskellのコード、Persistent MySQLを利用しています
{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE FlexibleContexts #-} import Database.Persist import Database.Persist.MySQL import Database.Persist.TH import Data.Int import Control.Monad.Logger (runNoLoggingT, MonadLogger) import Control.Monad.IO.Class import Control.Monad.Trans.Control (MonadBaseControl) share [mkPersist sqlSettings] [persistUpperCase| Person name String age Int Maybe deriving(Show) BlogPost title String authorId PersonId deriving(Show) |] main :: IO () main = do person <- getPerson 11 case person of Just p -> dispPerson (personName p) (personAge p) Nothing -> putStrLn "Nothing" dispPerson :: String -> Maybe Int -> IO () dispPerson name (Just age) = putStrLn $ name ++ "\n" ++ show(age) dispPerson name Nothing = putStrLn name getPerson :: (MonadBaseControl IO m, MonadIO m) => Int64 -> m (Maybe Person) getPerson n = runNoLoggingT $ getConn $ runSqlConn $ do get (toSqlKey n) getConn :: (MonadBaseControl IO m, MonadIO m, MonadLogger m) => (SqlBackend -> m a) -> m a getConn = withMySQLConn getConnection getConnection :: ConnectInfo getConnection = ConnectInfo { connectHost = "localhost", connectPort = 3306, connectUser = "root", connectPassword = "", connectDatabase = "SAMPLEDB", connectOptions = [], connectPath = "", connectSSL = Nothing }
そしたら、11番目の「かずと」を抜いてみる、最近、プロマネ的な仕事をこなしているっぽい、出世したらしい
*Main> :load "/home/cuomo/Code/yesod/Persistent/PersistMySQL.hs" [1 of 1] Compiling Main ( /home/cuomo/Code/yesod/Persistent/PersistMySQL.hs, interpreted ) Ok, modules loaded: Main. *Main> main Kazuto Ando 40 *Main>こんだけです、気持ちが悪いので止めておきます...
0 件のコメント:
コメントを投稿