content: import Control.Monad (unless)
  
  import Database.HaskellDB
  import Database.HaskellDB.Query (runQuery) -- for debugging
  
  import TestConnect
  
  import Dp037.D3proj_time_reports hiding (xid)
  import qualified Dp037.D3proj_time_reports
  import Dp037.D3proj_users
  
  {-
  
  Tables:
  
  CREATE TABLE d3proj_time_reports (
    id int NOT NULL,
    userid varchar(8) NOT NULL,
    day date NOT NULL,
    hours float NOT NULL,
    activity text NOT NULL,
    reported timestamp NOT NULL,
    PRIMARY KEY (id)
  )
  
  CREATE TABLE d3proj_users (
    id varchar(8) NOT NULL,
    first_name varchar(255) NOT NULL,
    last_name varchar(255) NOT NULL,
    email varchar(255) NOT NULL,
    PRIMARY KEY (id)
  )
  
  -}
  
  reports user
      = do
        reports <- table d3proj_time_reports
        users <- table d3proj_users
        restrict (reports!userid .==. users!xid .&&. reports!userid .==. constant user)
        project (first_name << users!first_name 
  	       # last_name << users!last_name
  	       # activity << reports!activity)
  
  avgWorkChunks
      = do
        reports <- table d3proj_time_reports
        users <- table d3proj_users
        restrict (reports!userid .==. users!xid)
        r <- project (first_name << users!first_name 
  		    # last_name << users!last_name
  		    # hours << avg (reports!hours))
        order [asc r hours]
        return r
  
  floatTest 
      = do
        reports <- table d3proj_time_reports
        project (hours << reports!hours)
  
  doFloatTest db
      = do 
        result <- query db floatTest
        mapM_ (putStrLn . (\r -> show (r!hours))) result
  
  
  actToString r = r!first_name ++ " " ++ r!last_name ++ ": " ++ r!activity
  
  printActivity username db 
      = do
        result <- query db (reports username)
  --      fs <- describe db "d3proj_users"
  --      putStrLn $ unlines $ map show fs
        mapM_ (putStrLn . actToString) result
  
  printAvgWorkChunks db 
      = do
        result <- query db avgWorkChunks 
        mapM_ (putStrLn . showRow) result
        where showRow r = r!first_name ++ " " ++ r!last_name ++ ": " ++ show (r!hours) ++ " h"
  
  main = do
  --       putStrLn $ show $ runQuery avgWorkChunks
  --       putStrLn $ show $ showQ avgWorkChunks
  --       putStrLn $ show $ showOpt avgWorkChunks
         putStrLn $ show $ showSql avgWorkChunks
  --       putStrLn $ show $ showOpt floatTest
         argConnect printAvgWorkChunks
  