@@ -1210,6 +1210,7 @@ data DbVersion
12101210 | DbVersion2
12111211 | DbVersion3
12121212 | DbVersion4
1213+ | DbVersion5
12131214 deriving stock (Enum , Bounded , Ord , Eq )
12141215
12151216-- | Migrates from ver to latest
@@ -1347,6 +1348,43 @@ migrateFrom = \frm -> do
13471348 , " );"
13481349 ]
13491350 ) HE. unit HD. unit True
1351+ DbVersion5 -> do
1352+ HS. sql " DROP TABLE IF EXISTS username"
1353+ HS. sql " DROP TABLE IF EXISTS account CASCADE"
1354+ HS. sql " DROP TABLE IF EXISTS slide"
1355+ HS. sql " DROP TABLE IF EXISTS deck"
1356+ HS. statement () $ Statement
1357+ (BS8. unwords
1358+ [ " CREATE TABLE account ("
1359+ , " id TEXT PRIMARY KEY,"
1360+ , " firebase_id TEXT UNIQUE,"
1361+ , " username TEXT UNIQUE NULL"
1362+ , " );"
1363+ ]
1364+ ) HE. unit HD. unit True
1365+ HS. statement () $ Statement
1366+ (BS8. unwords
1367+ [ " CREATE TABLE deck ("
1368+ , " id TEXT PRIMARY KEY,"
1369+ , " name TEXT NOT NULL,"
1370+ , " background TEXT NULL,"
1371+ , " owner TEXT NOT NULL REFERENCES account (id) ON DELETE CASCADE,"
1372+ , " attributes JSON"
1373+ , " );"
1374+ ]
1375+ ) HE. unit HD. unit True
1376+ HS. statement () $ Statement
1377+ (BS8. unwords
1378+ [ " CREATE TABLE slide ("
1379+ , " id TEXT PRIMARY KEY,"
1380+ , " deck TEXT NOT NULL REFERENCES deck (id) ON DELETE CASCADE,"
1381+ , " index INT2 NULL,"
1382+ , " content TEXT," -- TODO: is any of this nullable?
1383+ , " template TEXT,"
1384+ , " attributes JSON"
1385+ , " );"
1386+ ]
1387+ ) HE. unit HD. unit True
13501388
13511389readDbVersion :: HS. Session (Either String (Maybe DbVersion ))
13521390readDbVersion = do
@@ -1391,6 +1429,7 @@ dbVersionToText = \case
13911429 DbVersion2 -> " 2"
13921430 DbVersion3 -> " 3"
13931431 DbVersion4 -> " 4"
1432+ DbVersion5 -> " 5"
13941433
13951434dbVersionFromText :: T. Text -> Maybe DbVersion
13961435dbVersionFromText t =
0 commit comments