Skip to content

Commit

Permalink
Adjust the DB check error message
Browse files Browse the repository at this point in the history
  • Loading branch information
infomiho committed Nov 3, 2023
1 parent b203c7d commit f58d772
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
17 changes: 13 additions & 4 deletions waspc/src/Wasp/Generator/DbGenerator/Operations.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import Control.Monad (when)
import Control.Monad.Catch (catch)
import Control.Monad.Extra (whenM)
import Data.Either (isRight)
import qualified Data.Text as T
import qualified Path as P
import StrongPath (Abs, Dir, File, Path', Rel, (</>))
import qualified StrongPath as SP
Expand All @@ -38,7 +39,7 @@ import Wasp.Generator.DbGenerator.Common
import qualified Wasp.Generator.DbGenerator.Jobs as DbJobs
import Wasp.Generator.FileDraft.WriteableMonad (WriteableMonad (copyDirectoryRecursive))
import qualified Wasp.Generator.Job as J
import Wasp.Generator.Job.IO (printJobMsgsUntilExitReceived, readJobMessagesAndPrintThemPrefixed)
import Wasp.Generator.Job.IO (collectJobTextOutput, printJobMsgsUntilExitReceived, readJobMessagesAndPrintThemPrefixed)
import qualified Wasp.Generator.WriteFileDrafts as Generator.WriteFileDrafts
import Wasp.Project.Db.Migrations (DbMigrationsDir)
import Wasp.Util (checksumFromFilePath, hexToString)
Expand Down Expand Up @@ -141,9 +142,17 @@ isDbRunning ::
isDbRunning genProjectDir = do
chan <- newChan
exitCode <- DbJobs.dbExecuteTest genProjectDir chan
-- NOTE: We only care if the command succeeds or fails, so we don't look at
-- the exit code or stdout/stderr for the process.
return $ exitCode == ExitSuccess

case exitCode of
ExitSuccess -> return True
ExitFailure _ -> do
textOutput <- collectJobTextOutput chan

-- "Database not created" error is fine since Prisma will create it for us.
let areWeOkayWithTheError = any containsDatabaseNotCreatedError textOutput
return areWeOkayWithTheError
where
containsDatabaseNotCreatedError = T.isInfixOf "P1003"

generatePrismaClients :: Path' Abs (Dir ProjectRootDir) -> IO (Either String ())
generatePrismaClients projectRootDir = do
Expand Down
21 changes: 21 additions & 0 deletions waspc/src/Wasp/Generator/Job/IO.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@ module Wasp.Generator.Job.IO
( readJobMessagesAndPrintThemPrefixed,
printJobMessage,
printJobMsgsUntilExitReceived,
collectJobTextOutput,
)
where

import Control.Concurrent (Chan, readChan)
import Control.Monad.IO.Class (liftIO)
import Data.Functor ((<&>))
import Data.Maybe (mapMaybe)
import Data.Text (Text)
import qualified Data.Text.IO as T.IO
import System.IO (hFlush)
import qualified Wasp.Generator.Job as J
Expand All @@ -29,9 +33,26 @@ readJobMessagesAndPrintThemPrefixed chan = runPrefixedWriter go
J.JobOutput {} -> printJobMessagePrefixed jobMsg >> go
J.JobExit {} -> return ()

collectJobTextOutput :: Chan J.JobMessage -> IO [Text]
collectJobTextOutput chan = collectJobMessages chan <&> mapMaybe jobMessageToText
where
jobMessageToText :: J.JobMessageData -> Maybe Text
jobMessageToText = \case
J.JobOutput text _ -> Just text
J.JobExit _ -> Nothing

printJobMessage :: J.JobMessage -> IO ()
printJobMessage jobMsg = do
let outHandle = getJobMessageOutHandle jobMsg
let message = getJobMessageContent jobMsg
T.IO.hPutStr outHandle message
hFlush outHandle

collectJobMessages :: Chan J.JobMessage -> IO [J.JobMessageData]
collectJobMessages = collect []
where
collect messages chan = do
jobMsg <- readChan chan
case J._data jobMsg of
J.JobExit {} -> return messages
message -> collect (message : messages) chan

0 comments on commit f58d772

Please sign in to comment.