From 9a956785eff706157cb3fd1a0c81f4fc964a4e1e Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 17 Mar 2018 20:39:22 +0000 Subject: [PATCH] Try out some basic sqlite stuff --- app/Main.hs | 6 ++++-- package.yaml | 12 ++++++++++++ src/TaskMachine/Database.hs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/TaskMachine/Database.hs diff --git a/app/Main.hs b/app/Main.hs index de1c1ab..48c5672 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,6 +1,8 @@ module Main where -import Lib +import qualified Database.SQLite.Simple as DB + +import qualified TaskMachine.Database as TMB main :: IO () -main = someFunc +main = DB.withConnection "test.db" TMB.initializeNewDB diff --git a/package.yaml b/package.yaml index 2e2b423..65afd17 100644 --- a/package.yaml +++ b/package.yaml @@ -21,6 +21,18 @@ description: Please see the README on Github at = 4.7 && < 5 +- sqlite-simple + #- containers + #- unordered-containers + #- text + #- time + #- transformers + #- async + #- aeson + #- bytestring + #- stm + #- megaparsec + #- brick library: source-dirs: src diff --git a/src/TaskMachine/Database.hs b/src/TaskMachine/Database.hs new file mode 100644 index 0000000..487d9cc --- /dev/null +++ b/src/TaskMachine/Database.hs @@ -0,0 +1,30 @@ +{-# LANGUAGE OverloadedStrings #-} + +module TaskMachine.Database + ( initializeNewDB + ) where + +--import qualified Data.Text as T +import qualified Database.SQLite.Simple as DB + +initializeNewDB :: DB.Connection -> IO () +initializeNewDB c = do + DB.execute_ c createTaskTable + DB.execute_ c createVersionTable + DB.execute c fillVersionTable (DB.Only (1 :: Integer)) + where + createTaskTable = + "CREATE TABLE IF NOT EXISTS tasks (\ + \ id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\ + \ deadline TEXT,\ + \ formula TEXT,\ + \ description TEXT NOT NULL,\ + \ repetitions_total INTEGER NOT NULL DEFAULT 1,\ + \ repetitions_done INTEGER NOT NULL DEFAULT 0\ + \)" + createVersionTable = + "CREATE TABLE version (\ + \ version_number INTEGER\ + \)" + fillVersionTable = + "INSERT INTO version (version_number) VALUES (?)"