Skip to content

Commit a49e6f3

Browse files
committed
incorporated feedback and made sure applyMigrations updates version number
1 parent e807a7a commit a49e6f3

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

app/Database/Database.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ import Control.Monad.IO.Class (MonadIO, liftIO)
1515
import Data.Maybe (fromMaybe)
1616
import Data.Text as T (findIndex, length, reverse, take, unpack)
1717
import Database.CourseVideoSeed (seedVideos)
18-
import Database.Persist.Sqlite (SqlPersistT, Entity(..), entityVal, insert_, runMigration, runMigrationQuiet,
19-
selectFirst, update, (=.))
18+
import Database.Persist.Sqlite (Entity (..), SqlPersistT, entityVal, insert_, runMigration,
19+
runMigrationQuiet, selectFirst, update, (=.))
2020
import Database.Tables
2121
import System.Directory (createDirectoryIfMissing)
2222
import WebParsing.ArtSciParser (parseCalendar)
@@ -63,7 +63,7 @@ getDatabaseVersion = do
6363
setDatabaseVersion :: MonadIO m => Int -> SqlPersistT m ()
6464
setDatabaseVersion newVersion = do
6565
result <- selectFirst [] []
66-
case result of
66+
case result of
6767
Just (Entity key _) -> update key [SchemaVersionVersion =. newVersion]
6868
Nothing -> insert_ $ SchemaVersion newVersion
6969

app/Database/Migrations.hs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ module Database.Migrations
22
(migrateDatabase) where
33

44
import Control.Monad.Reader (MonadIO)
5-
import Database.Database (getDatabaseVersion)
6-
import Database.Persist.Sql (Migration, SqlPersistT, addMigration, runMigration, runMigrationUnsafe)
7-
import Database.Tables (migrateAll)
5+
import Data.List (sortOn)
6+
import Database.Database (getDatabaseVersion, setDatabaseVersion)
7+
import Database.Persist.Sql (Migration, SqlPersistT, addMigration, runMigrationUnsafe)
88

99
data MigrationWrapper = MigrationWrapper {
1010
version :: Int,
@@ -14,16 +14,19 @@ data MigrationWrapper = MigrationWrapper {
1414
-- | Migrates the database
1515
migrateDatabase :: MonadIO m => SqlPersistT m ()
1616
migrateDatabase = do
17-
-- Run unsafe migrations
1817
currVersion <- getDatabaseVersion
1918
applyMigrations currVersion migrationList
20-
-- Run safe migrations
21-
runMigration migrateAll
2219

2320
-- | Migrates the database by applying only migrations newer than the current version number
2421
applyMigrations :: MonadIO m => Int -> [MigrationWrapper] -> SqlPersistT m ()
2522
applyMigrations currVersion migrations = do
26-
mapM_ (runMigrationUnsafe . script) $ filter (\migration -> version migration > currVersion) migrations
23+
mapM_ (runMigrationUnsafe . script)
24+
$ sortOn version
25+
$ filter (\migration -> version migration > currVersion) migrations
26+
27+
case migrations of
28+
[] -> return ()
29+
_ -> setDatabaseVersion $ maximum $ map version migrations
2730

2831
-- | List of migrations
2932
migrationList :: [MigrationWrapper]

backend-test/Database/CourseQueriesTests.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ runReqsForProgramTest :: String -> T.Text -> T.Text -> String -> TestTree
3434
runReqsForProgramTest label reqsToInsert program expected =
3535
testCase label $ do
3636
currentTime <- liftIO getCurrentTime
37-
let testProgram = Program Major "Computer Science" program "Sample post description" reqsToInsert currentTime currentTime
37+
let testProgram = Program Major "Computer Science" program "Sample program description" reqsToInsert currentTime currentTime
3838

3939
runDb $ do
4040
clearDatabase

0 commit comments

Comments
 (0)