11#include <QCoreApplication>
28 const auto& procStdErr = process.readAllStandardError ();
29 switch (process.exitStatus ())
31 case QProcess::CrashExit:
33 const auto& procErr = process.errorString ();
35 if (process.error () == QProcess::FailedToStart)
36 return Left { Tr::tr (
"Unable to start dumping process: %1. Do you have sqlite3 installed?").arg (procErr) };
38 const auto& message = procStdErr.isEmpty () ?
39 Tr::tr (
"Dumping process crashed: %1.").arg (procErr) :
40 Tr::tr (
"Dumping process crashed: %1 (%2).").arg (procErr, procStdErr);
41 return Left { message };
43 case QProcess::NormalExit:
44 if (
const auto ec = process.exitCode ())
46 const auto& message = Tr::tr (
"Dumping process returned an error: %1 (%2).")
49 return Left { message };
63 dumper.setStandardOutputProcess (&restorer);
65 static const auto sqlite =
"sqlite3"_qs;
66 dumper.start (sqlite, { from,
".dump"_qs });
67 restorer.start (sqlite, { to });
70 co_await CheckProcessFinishStatus (dumper);
73 co_await CheckProcessFinishStatus (restorer);
Task< Either< QString, Void > > DumpSqlite(QString from, QString to)
A proper void type, akin to unit (or ()) type in functional languages.