72 lines
1.6 KiB
C++
72 lines
1.6 KiB
C++
|
|
#include "postgresqlgenerator.h"
|
||
|
|
#include "table.h"
|
||
|
|
#include "tablescheema.h"
|
||
|
|
|
||
|
|
QT_BEGIN_NAMESPACE
|
||
|
|
|
||
|
|
PostgreSqlGenerator::PostgreSqlGenerator() : SqlGeneratorBase ()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
QString PostgreSqlGenerator::getColumnDef(Field *field)
|
||
|
|
{
|
||
|
|
QString ret = field->name + " ";
|
||
|
|
QString dbType;
|
||
|
|
|
||
|
|
switch (field->type) {
|
||
|
|
case QVariant::Bool:
|
||
|
|
dbType = "boolean";
|
||
|
|
break;
|
||
|
|
case QVariant::ByteArray:
|
||
|
|
dbType = "bytea";
|
||
|
|
break;
|
||
|
|
case QVariant::Date:
|
||
|
|
dbType = "date";
|
||
|
|
break;
|
||
|
|
case QVariant::DateTime:
|
||
|
|
dbType = "timestamp";
|
||
|
|
break;
|
||
|
|
case QVariant::Double:
|
||
|
|
dbType = "real";
|
||
|
|
break;
|
||
|
|
case QVariant::Int:
|
||
|
|
if(field->isAutoIncrement)
|
||
|
|
dbType = "serial";
|
||
|
|
else
|
||
|
|
dbType = "integer";
|
||
|
|
break;
|
||
|
|
case QVariant::String:
|
||
|
|
if(field->length)
|
||
|
|
dbType = QString("varchar(%1)").arg(field->length);
|
||
|
|
else
|
||
|
|
dbType = "text";
|
||
|
|
break;
|
||
|
|
case QVariant::Time:
|
||
|
|
dbType = "time";
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
dbType = "";
|
||
|
|
}
|
||
|
|
ret.append(dbType);
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
//QString PostgreSqlGenerator::saveSql(Table *t, QString tableName)
|
||
|
|
//{
|
||
|
|
// switch(t->status()){
|
||
|
|
// case Table::Added:
|
||
|
|
// return insertCommand(t, tableName) + " RETURNING " + t->primaryKey();
|
||
|
|
|
||
|
|
// default:
|
||
|
|
// return SqlGeneratorBase::saveSql(t, tableName);
|
||
|
|
// }
|
||
|
|
//}
|
||
|
|
|
||
|
|
QString PostgreSqlGenerator::deleteTableRows(QString tableName, QString where)
|
||
|
|
{
|
||
|
|
return SqlGeneratorBase::deleteTableRows(tableName, where) + " RETURNING *";
|
||
|
|
}
|
||
|
|
|
||
|
|
QT_END_NAMESPACE
|