Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions infra/handler/src/DeckGo/Handler.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1210,6 +1210,7 @@ data DbVersion
| DbVersion2
| DbVersion3
| DbVersion4
| DbVersion5
deriving stock (Enum, Bounded, Ord, Eq)

-- | Migrates from ver to latest
Expand Down Expand Up @@ -1347,6 +1348,43 @@ migrateFrom = \frm -> do
, ");"
]
) HE.unit HD.unit True
DbVersion5 -> do
HS.sql "DROP TABLE IF EXISTS username"
HS.sql "DROP TABLE IF EXISTS account CASCADE"
HS.sql "DROP TABLE IF EXISTS slide"
HS.sql "DROP TABLE IF EXISTS deck"
HS.statement () $ Statement
(BS8.unwords
[ "CREATE TABLE account ("
, "id TEXT PRIMARY KEY,"
, "firebase_id TEXT UNIQUE,"
, "username TEXT UNIQUE NULL"
, ");"
]
) HE.unit HD.unit True
HS.statement () $ Statement
(BS8.unwords
[ "CREATE TABLE deck ("
, "id TEXT PRIMARY KEY,"
, "name TEXT NOT NULL,"
, "background TEXT NULL,"
, "owner TEXT NOT NULL REFERENCES account (id) ON DELETE CASCADE,"
, "attributes JSON"
, ");"
]
) HE.unit HD.unit True
HS.statement () $ Statement
(BS8.unwords
[ "CREATE TABLE slide ("
, "id TEXT PRIMARY KEY,"
, "deck TEXT NOT NULL REFERENCES deck (id) ON DELETE CASCADE,"
, "index INT2 NULL,"
, "content TEXT," -- TODO: is any of this nullable?
, "template TEXT,"
, "attributes JSON"
, ");"
]
) HE.unit HD.unit True

readDbVersion :: HS.Session (Either String (Maybe DbVersion))
readDbVersion = do
Expand Down Expand Up @@ -1391,6 +1429,7 @@ dbVersionToText = \case
DbVersion2 -> "2"
DbVersion3 -> "3"
DbVersion4 -> "4"
DbVersion5 -> "5"

dbVersionFromText :: T.Text -> Maybe DbVersion
dbVersionFromText t =
Expand Down