Event logging is now functioning in postgres.

[?]
Feb 18, 2015, 2:36 AM
2G3GNDDUOVPF45PELJ65ZB2IXEHJJXJILFRVHZXGPXUL4BVNZJFQC

Dependencies

  • [2] PBD7LZYQ Postgres & auth are beginning to function.
  • [3] TNR3TEHK Switch to Postgres + snaplet arch compiles.
  • [4] VJPT6HDR Fix remaining type errors after addition of login handler.
  • [5] Z7KS5XHH Very WIP. Wow.
  • [6] I2KHGVD4 Require project permissions for access to most data.
  • [7] BROSTG5K Beginning of modularization of server.
  • [8] LD4GLVSF More database stuff.
  • [9] IZEVQF62 Work in progress replacing sqlite with postgres.
  • [10] NVOCQVAS Initial failing tests.
  • [*] ADMKQQGC Initial empty Snap project.

Change contents

  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 194
    [3.705]
    [3.705]
    let uid = p ^. (initiator._UserId)
  • replacement in lib/Quixotic/Database/PostgreSQL.hs at line 198
    [3.849][3.849:963]()
    (p ^. projectName, p ^. inceptionDate, p ^. (initiator._UserId))
    pure . ProjectId . fromOnly $ DL.head pids
    [3.849]
    [3.704]
    (p ^. projectName, p ^. inceptionDate, uid)
    let pid = fromOnly $ DL.head pids
    void . lift $ execute conn
    "INSERT INTO project_companions (project_id, companion_id) VALUES (?, ?)"
    (pid, uid)
    pure . ProjectId $ pid
  • replacement in lib/Quixotic/Database/PostgreSQL.hs at line 210
    [3.1180][3.1180:1334]()
    \FROM projects p LEFT OUTER JOIN project_companions pc ON pc.project_id = p.id \
    \WHERE p.initiator_id = ? OR pc.companion_id = ?"
    (uid, uid)
    [3.1180]
    [3.1334]
    \FROM projects p JOIN project_companions pc ON pc.project_id = p.id \
    \WHERE pc.companion_id = ?"
    (Only uid)
  • replacement in scripts/create_project.sh at line 3
    [2.1255][2.1255:1379]()
    curl -v -u "nuttycom:kjntest" -H "Content-Type: application/json" -d '{"projectName":"the"}' http://localhost:8000/projects
    [2.1255]
    [2.1379]
    curl -v -u "nuttycom:kjntest" -X POST -H "Content-Type: application/json" -d '{"projectName":"the"}' http://localhost:8000/projects
  • file addition: log_end.sh (---r------)
    [2.1220]
    curl -v -u "nuttycom:kjntest" -X POST -d '' http://localhost:8000/projects/1/logEnd/1KamUn1BaRMd2HwikyQWGTdUvfPScg9QA5
  • file addition: log_start.sh (---r------)
    [2.1220]
    curl -v -u "nuttycom:kjntest" -X POST -d '' http://localhost:8000/projects/1/logStart/1KamUn1BaRMd2HwikyQWGTdUvfPScg9QA5
  • replacement in server/Main.hs at line 52
    [3.179][2.1725:1825](),[2.1825][3.3639:3862](),[3.867][3.3639:3862]()
    , ("register", method POST registerHandler)
    , ("projects", projectsHandler)
    , ("logStart/:projectId/:btcAddr", logWorkHandler StartWork)
    , ("logEnd/:projectId/:btcAddr", logWorkHandler StopWork)
    , ("loggedIntervals/:projectId/:btcAddr", loggedIntervalsHandler)
    [3.179]
    [2.1826]
    , ("register", void $ method POST registerHandler)
    , ("projects/:projectId/logStart/:btcAddr", method POST $ logWorkHandler StartWork)
    , ("projects/:projectId/logEnd/:btcAddr", method POST $ logWorkHandler StopWork)
    , ("projects/:projectId/log/:btcAddr", method GET loggedIntervalsHandler)
  • replacement in server/Main.hs at line 57
    [2.1879][2.1879:1943]()
    , ("payouts/:projectId", method GET payoutsHandler)
    [2.1879]
    [3.8999]
    , ("projects", void $ method POST projectCreateHandler)
    , ("projects", void $ method GET projectListHandler)
    , ("payouts/:projectId", method GET payoutsHandler)
  • edit in server/Quixotic/Snaplet/Auth.hs at line 23
    [3.1323][2.2040:2061]()
    logError rawHeader
  • replacement in server/Quixotic/Snaplet/Auth.hs at line 35
    [3.1780][3.1780:2024]()
    currentUser <- requireLogin
    qdbUser <- case UserName . AU.unUid <$> AU.userId currentUser of
    Nothing -> snapError 403 "User is authenticated, but session lacks user identifier"
    Just n -> liftPG . runReaderT $ findUserByUserName n
    [3.1780]
    [3.2024]
    currentUser <- UserName . AU.userLogin <$> requireLogin
    qdbUser <- liftPG . runReaderT $ findUserByUserName currentUser
  • replacement in server/Quixotic/Snaplet/Projects.hs at line 3
    [2.2398][2.2398:2462]()
    module Quixotic.Snaplet.Projects
    ( projectsHandler
    ) where
    [2.2398]
    [2.2462]
    module Quixotic.Snaplet.Projects where
  • edit in server/Quixotic/Snaplet/Projects.hs at line 25
    [2.2915][2.2915:3056]()
    projectsHandler :: Handler App App ()
    projectsHandler = do
    void $ method POST projectCreateHandler
    void $ method GET projectListHandler
  • replacement in sql/quixotic-pg.sql at line 11
    [2.4014][2.4014:4069]()
    inception_date timestamp without time zone not null,
    [2.4014]
    [2.4069]
    inception_date timestamp with time zone not null,
  • edit in sql/quixotic-pg.sql at line 13
    [2.4123]
    [3.3201]
    );
    create table project_companions (
    project_id integer references projects(id) not null,
    companion_id integer references users(id) not null
  • replacement in sql/quixotic-pg.sql at line 20
    [3.3205][2.4124:4181]()
    create type event_t as enum ('start_work', 'stop_work');
    [3.3205]
    [2.4181]
    create type event_t as enum ('start', 'stop');
  • replacement in sql/quixotic-pg.sql at line 28
    [2.4371][2.4371:4421]()
    event_time timestamp without time zone not null
    [2.4371]
    [2.4421]
    event_time timestamp with time zone not null
  • replacement in sql/quixotic-pg.sql at line 36
    [2.4617][2.4617:4665]()
    end_time timestamp without time zone not null
    [2.4617]
    [2.4665]
    end_time timestamp with time zone not null
  • replacement in sql/quixotic-pg.sql at line 45
    [2.4861][2.4861:4909]()
    bid_time timestamp without time zone not null
    [2.4861]
    [2.4909]
    bid_time timestamp with time zone not null