{-# LANGUAGE TemplateHaskell, OverloadedStrings #-}

module HsDev.Database.SQLite.Schema (
        schema, commands
        ) where

import qualified Data.Text as T
import Data.List (unfoldr)
import Database.SQLite.Simple (Query(..))

import HsDev.Database.SQLite.Schema.TH

schema :: T.Text
schema = T.pack $schemaExp

commands :: [Query]
commands = map (Query . T.unlines) . unfoldr takeStmt . T.lines $ schema where
        takeStmt :: [T.Text] -> Maybe ([T.Text], [T.Text])
        takeStmt ls = case break endsStmt ls of
                (_, []) -> Nothing
                (hs, t:ts) -> Just (hs ++ [t], ts)
        comment :: T.Text -> Bool
        comment t = "-- " `T.isPrefixOf` T.strip t
        endsStmt :: T.Text -> Bool
        endsStmt t = not (comment t) && ";" `T.isSuffixOf` T.strip t