1つのキーでグループ化 LINQを使ってデータを特定のキー列でグループ化するにはGroupByを使います。 仮にBookというクラスを定義します。 class Book { public string Title { get; set; } public string Author { get; set; } public int Pages { get; set; } public int Ca […]
Yesodでコマンドライン上にログを出力する方法 Yesodでログを出力するには$(logInfo)を使います。 ログはコマンドライン上に表示されます。 getLogR :: Handler Html getLogR = do $(logInfo) "ログです ..." defaultLayout $ [whamlet|<p>logを出力しました ...|] 使い方 […]
Jsonを返すリソース まずは適当なjsonを返すように定義してみます。 getJsonR :: Handler Value getJsonR = jsonToRepJson $ object ["data" .= ("val" :: Text)] 型を Handler Value とします。 jsonToRepJsonでobjectで作ったデータをJsonとして返している… みたいな […]
Viewからの読込 YesodでCSS/Javascripを使用する場合、Shakespearean TemplatesのCassius(CSS) / Lucius(CSS) / Julius(Javascript) を使うことができます。ただし通常のjavascriptファイルやcssファイルを読み込んで使用したい場合は、StaticRを使ってパスを指定できます。 今回は次のjavascript […]
テンプレートからプロジェクトの作成 まずはStackのテンプレートを使用してプロジェクトを作成します。テンプレートにはyesod-postgresを使用します。 $ stack new my-project yesod-postgres PostgreSQLの設定 とりあえず適当にPostgreSQLをインストールしておきます。それから使用するユーザー、データベースを作成しておきます。Yesodの […]
ルートの追加 今回は一覧からデータを削除をできるようにしてみます。まずはrouteを追加します。削除はPOSTで削除対象のIdを受け取り処理します。 config/routes /ArticleDelete ArticleDeleteR POST フォームはInputFormで実装してみます。Idのみの送信なのでこのほうが簡単です、たぶん。 Handler/ArticleList.hs modul […]
Handlerの編集(リソースの追加) 今回はデータを修正をできるようにしてみます。Handlerを新しく作ってもよいのですが、面倒なので Article.hs に修正用のリソースを追加で定義してやります。 ASP.NET MVC だとコントローラの中のメソッドでCRUDのメソッドを全部まとめて実装したりするのを見るのでこのようにしてみました。 config/routes /Article/#Ar […]
Handlerの作成 前回まででデータの取得、表示ができました。(データがないので未確認ですが。)今回はデータを登録をできるようにしてみます。これがうまく実装できれば、前回実装したデータの表示についても確認できます。 まずはHandlerの追加からです。今回は Article というHandlerにデータの更新処理を任せます。 $ stack exec -- yesod add-handler N […]
YesodでDBを操作する方法(データの一覧表示) 今回は前回作成したモデルのデータを画面に表示させたいと思います。これから作るDB操作のサンプルはいたってシンプルで、データを表示させる一覧画面とデータを登録・修正するための更新画面の2画面です。 まずは今回必要となるハンドラーの追加を行います。下記のコマンドを実行してハンドラーの追加を行います。 $ stack exec -- yesod add […]
YesodでDBを操作する方法 Stackでプロジェクト作成するときにテンプレートでDBを選択指定ます。Yesodで使えるDBは、 SQLite PostgreSQL MySQL MongoDB などなどが使えます。 YesodでDBを操作する方法を見ていきます。(1)でのプロジェクト作成時にSQLiteのテンプレートを使用したので、SQLiteをそのまま使用します。 config/models […]