packages feed

data-basic-0.2.0.0: test/Spec.hs

{-# LANGUAGE DataKinds, NoImplicitPrelude, TypeFamilies, FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts, OverloadedStrings #-}
import Prelude hiding (id)

import Data.Time
import System.Mem
import Database.PostgreSQL.Simple

import Data.Basic
import Control.Monad.IO.Class
import Control.Lens
import Control.Monad
import Data.Function ((&))


import Control.Concurrent
import Model

insertNewSession :: MonadIO m => Connection -> LocalTime -> m ()
insertNewSession conn expiration =
    handleBasicPsql conn query'
    where
        session = newUserSession
            & expirationDate .~ expiration
            & id .~ 0
        query'  = void $ insert session

main :: IO ()
main = do
    conn <- connectPostgreSQL "host=localhost port=5432 user=postgres dbname=postgres password=admin connect_timeout=10"
    t <- do
        t <- getCurrentTime
        tz <- getCurrentTimeZone
        return (utcToLocalTime tz t)
    insertNewSession conn t
    performGC
    insertNewSession conn t
    -- performGC
    threadDelay 1000000