From c42b4372744a423b24a78f903ec667a3b71638ae Mon Sep 17 00:00:00 2001 From: Mihovil Ilakovac Date: Wed, 8 Nov 2023 11:58:03 +0100 Subject: [PATCH 1/3] Add check if migrations dir exists before copying Signed-off-by: Mihovil Ilakovac --- .../src/Wasp/Generator/DbGenerator/Operations.hs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/waspc/src/Wasp/Generator/DbGenerator/Operations.hs b/waspc/src/Wasp/Generator/DbGenerator/Operations.hs index 20696af041..beea37de59 100644 --- a/waspc/src/Wasp/Generator/DbGenerator/Operations.hs +++ b/waspc/src/Wasp/Generator/DbGenerator/Operations.hs @@ -36,7 +36,7 @@ import Wasp.Generator.DbGenerator.Common webAppPrismaClientOutputDirEnv, ) import qualified Wasp.Generator.DbGenerator.Jobs as DbJobs -import Wasp.Generator.FileDraft.WriteableMonad (WriteableMonad (copyDirectoryRecursive)) +import Wasp.Generator.FileDraft.WriteableMonad (WriteableMonad (copyDirectoryRecursive, doesDirectoryExist)) import qualified Wasp.Generator.Job as J import Wasp.Generator.Job.IO (printJobMsgsUntilExitReceived, readJobMessagesAndPrintThemPrefixed) import qualified Wasp.Generator.WriteFileDrafts as Generator.WriteFileDrafts @@ -77,11 +77,17 @@ finalizeMigration genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs onLast -- | Copies the DB migrations from the generated project dir back up to theh wasp project dir copyMigrationsBackToSource :: Path' Abs (Dir ProjectRootDir) -> Path' Abs (Dir DbMigrationsDir) -> IO (Either String ()) -copyMigrationsBackToSource genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs = - copyDirectoryRecursive genProjectMigrationsDir waspMigrationsDir >> return (Right ()) - `catch` (\e -> return $ Left $ show (e :: P.PathException)) - `catch` (\e -> return $ Left $ show (e :: IOError)) +copyMigrationsBackToSource genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs = do + doesMigrationsDirExist <- doesDirectoryExist $ SP.fromAbsDir genProjectMigrationsDir + + if doesMigrationsDirExist + then copyMigrationsDir + else return $ Right () where + copyMigrationsDir = + copyDirectoryRecursive genProjectMigrationsDir waspMigrationsDir >> return (Right ()) + `catch` (\e -> return $ Left $ show (e :: P.PathException)) + `catch` (\e -> return $ Left $ show (e :: IOError)) waspMigrationsDir = dbMigrationsDirInWaspProjectDirAbs genProjectMigrationsDir = genProjectRootDirAbs dbRootDirInProjectRootDir dbMigrationsDirInDbRootDir From f44b0b5205a7ee390c48ed9e7151b5137634c3c3 Mon Sep 17 00:00:00 2001 From: Mihovil Ilakovac Date: Thu, 9 Nov 2023 11:50:41 +0100 Subject: [PATCH 2/3] PR comments --- .../Wasp/Generator/DbGenerator/Operations.hs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/waspc/src/Wasp/Generator/DbGenerator/Operations.hs b/waspc/src/Wasp/Generator/DbGenerator/Operations.hs index beea37de59..c614dfb9d5 100644 --- a/waspc/src/Wasp/Generator/DbGenerator/Operations.hs +++ b/waspc/src/Wasp/Generator/DbGenerator/Operations.hs @@ -62,7 +62,7 @@ finalizeMigration :: Path' Abs (Dir ProjectRootDir) -> Path' Abs (Dir DbMigratio finalizeMigration genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs onLastDbConcurrenceChecksumFileRefreshAction = do -- NOTE: We are updating a managed CopyDirFileDraft outside the normal generation process, so we must invalidate the checksum entry for it. Generator.WriteFileDrafts.removeFromChecksumFile genProjectRootDirAbs [Right $ SP.castDir dbMigrationsDirInProjectRootDir] - res <- copyMigrationsBackToSource genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs + res <- copyMigrationsBackToSourceIfTheyExist genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs applyOnLastDbConcurrenceChecksumFileRefreshAction return res where @@ -76,18 +76,20 @@ finalizeMigration genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs onLast IgnoreOnLastDbConcurrenceChecksumFile -> return () -- | Copies the DB migrations from the generated project dir back up to theh wasp project dir -copyMigrationsBackToSource :: Path' Abs (Dir ProjectRootDir) -> Path' Abs (Dir DbMigrationsDir) -> IO (Either String ()) -copyMigrationsBackToSource genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs = do - doesMigrationsDirExist <- doesDirectoryExist $ SP.fromAbsDir genProjectMigrationsDir - - if doesMigrationsDirExist - then copyMigrationsDir - else return $ Right () +copyMigrationsBackToSourceIfTheyExist :: + Path' Abs (Dir ProjectRootDir) -> + Path' Abs (Dir DbMigrationsDir) -> + IO (Either String ()) +copyMigrationsBackToSourceIfTheyExist genProjectRootDirAbs dbMigrationsDirInWaspProjectDirAbs = do + doesDirectoryExist (SP.fromAbsDir genProjectMigrationsDir) >>= \case + False -> return $ Right () + True -> copyMigrationsDir where copyMigrationsDir = copyDirectoryRecursive genProjectMigrationsDir waspMigrationsDir >> return (Right ()) `catch` (\e -> return $ Left $ show (e :: P.PathException)) `catch` (\e -> return $ Left $ show (e :: IOError)) + waspMigrationsDir = dbMigrationsDirInWaspProjectDirAbs genProjectMigrationsDir = genProjectRootDirAbs dbRootDirInProjectRootDir dbMigrationsDirInDbRootDir From 7dfa6b1dd8b522dcbd8c361028da5652609cebfd Mon Sep 17 00:00:00 2001 From: Mihovil Ilakovac Date: Thu, 9 Nov 2023 13:17:24 +0100 Subject: [PATCH 3/3] Updates Changelog --- waspc/ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/waspc/ChangeLog.md b/waspc/ChangeLog.md index 058a4165bc..c3619df9fc 100644 --- a/waspc/ChangeLog.md +++ b/waspc/ChangeLog.md @@ -19,6 +19,7 @@ app todoApp { ### 🐞 Bug fixes / 🔧 small improvements - Changed the minimum number of machines that a server app is using when deployed to Fly.io from 0 to 1. This prevents the server app from shutting down when there are no requests to it. There might be some other work that the server is doing e.g. running periodic Jobs or sending e-mails, so we want to make sure that the server is always running. +- Fixes a bug where copying of migrations dir failed due to a missing `migrations` dir. ## 0.11.7