1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include "sqliteraise.h"
#include "parser/statementtokenbuilder.h"
#include "common/global.h"
#include "sqliteexpr.h"
SqliteRaise::SqliteRaise()
{
}
SqliteRaise::SqliteRaise(const SqliteRaise& other) :
SqliteStatement(other), type(other.type)
{
DEEP_COPY_FIELD(SqliteExpr, expr);
}
SqliteRaise::SqliteRaise(const QString &type)
{
this->type = raiseType(type);
}
SqliteRaise::SqliteRaise(const QString &type, SqliteExpr *value)
{
this->type = raiseType(type);
this->expr = value;
}
SqliteStatement*SqliteRaise::clone()
{
return new SqliteRaise(*this);
}
SqliteRaise::Type SqliteRaise::raiseType(const QString &value)
{
QString upper = value.toUpper();
if (upper == "IGNORE")
return SqliteRaise::Type::IGNORE;
else if (upper == "ROLLBACK")
return SqliteRaise::Type::ROLLBACK;
else if (upper == "ABORT")
return SqliteRaise::Type::ABORT;
else if (upper == "FAIL")
return SqliteRaise::Type::FAIL;
else
return SqliteRaise::Type::null;
}
QString SqliteRaise::raiseType(SqliteRaise::Type value)
{
switch (value)
{
case SqliteRaise::Type::IGNORE:
return "IGNORE";
case SqliteRaise::Type::ROLLBACK:
return "ROLLBACK";
case SqliteRaise::Type::ABORT:
return "ABORT";
case SqliteRaise::Type::FAIL:
return "FAIL";
default:
return QString();
}
}
TokenList SqliteRaise::rebuildTokensFromContents()
{
StatementTokenBuilder builder;
builder.withKeyword("RAISE").withSpace().withParLeft().withKeyword(raiseType(type));
if (type != Type::IGNORE)
builder.withOperator(",").withSpace().withStatement(expr);
builder.withParRight();
return builder.build();
}
|