jeudi 17 septembre 2015

Haskell: Persist.sqlite - only select

I'm trying to use Persist.sqlite to query my DB,..but in all the tutorials I have found so far is that first I have to migrate and insert data. Only after that came the select.

But what if I want to do only select over existing data? No migration and inserts before?

For example in the code below. What if I want to skip buildDb (currently that will not work)?

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies #-}
{-# LANGUAGE OverloadedStrings, GADTs, FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module DBio where

import Data.Text (Text)
import Database.Persist
import Database.Persist.Sqlite (runSqlite, runMigrationSilent)
import Database.Persist.TH (mkPersist, mkMigrate, persistLowerCase,
       share, sqlSettings)
import Database.Persist.Sql (insert)
import Data.Conduit (($$))
import Data.Conduit.List as CL
import Control.Monad.IO.Class (liftIO)


share [mkPersist sqlSettings, mkMigrate "migrateTables"] [persistLowerCase|
Tutorial
   value    Double
   url      Text
   school   Bool
   deriving Show
|]


run :: IO ()
run = runSqlite "../DB/mind.sqlite" $ do
   buildDb
   basic <- selectList [TutorialValue >. 0.0] []
   liftIO $ print basic

buildDb = do
   --runMigrationSilent migrateTables
   insert $ Tutorial 2.22 "http://ift.tt/1YfRn2i" True

Aucun commentaire:

Enregistrer un commentaire