More database stuff.

[?]
Jan 27, 2015, 5:34 AM
LD4GLVSF6YTA7OZWIGJ45H6TUXGM4WKUIYXKWQFNUP36WDMYSMXAC

Dependencies

  • [2] Z7KS5XHH Very WIP. Wow.
  • [3] IZEVQF62 Work in progress replacing sqlite with postgres.
  • [4] BROSTG5K Beginning of modularization of server.
  • [5] TNR3TEHK Switch to Postgres + snaplet arch compiles.
  • [*] 64C6AWH6 Rename Ananke -> Quixotic, project reboot.

Change contents

  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 28
    [3.1290]
    [3.1290]
    pidParser :: FieldParser ProjectId
    pidParser f v = ProjectId <$> fromField f v
  • replacement in lib/Quixotic/Database/PostgreSQL.hs at line 65
    [3.90][3.90:159]()
    qdbUserRowParser = QDBUser <$> fieldWith uidParser <*> userRowParser
    [3.90]
    [3.159]
    qdbUserRowParser = QDBUser <$> fieldWith uidParser
    <*> userRowParser
    projectRowParser :: RowParser Project
    projectRowParser = Project <$> field
    <*> field
    <*> fieldWith uidParser
    qdbProjectRowParser :: RowParser QDBProject
    qdbProjectRowParser = QDBProject <$> fieldWith pidParser <*> projectRowParser
  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 109
    [3.314]
    [2.273]
    newtype PQDBProject = PQDBProject { pQDBProject :: QDBProject }
    instance FromRow PQDBProject where
    fromRow = PQDBProject <$> qdbProjectRowParser
  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 192
    [3.5525]
    [3.704]
    createProject' :: Project -> ReaderT Connection IO ProjectId
    createProject' p = do
    conn <- ask
    pids <- lift $ query conn
    "INSERT INTO projects (project_name, inception_date, initiator_id) VALUES (?, ?, ?) RETURNING id"
    (p ^. projectName, p ^. inceptionDate, p ^. (initiator._UserId))
    pure . ProjectId . fromOnly $ DL.head pids
  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 200
    [3.705]
    [3.5525]
    findUserProjects' :: UserId -> ReaderT Connection IO [QDBProject]
    findUserProjects' (UserId uid) = do
    conn <- ask
    results <- lift $ query conn
    "SELECT p.id, p.project_name, p.inception_date, p.initiator_id \
    \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)
    pure $ fmap pQDBProject results
  • edit in lib/Quixotic/Database/PostgreSQL.hs at line 222
    [3.751]
    [3.5861]
    , createProject = createProject'
    , findUserProjects = findUserProjects'
  • edit in lib/Quixotic/Database.hs at line 34
    [3.855]
    [2.1641]
    , createProject :: Project -> m ProjectId
  • replacement in server/Quixotic/Api/Types.hs at line 62
    [2.4041][2.4041:4063]()
    checkProjectAccess =
    [2.4041]
    [2.4063]
    checkProjectAccess = undefined