TableHelper.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "TableHelper.h"
  2. #include <QStringList>
  3. TableHelper::TableHelper()
  4. {
  5. }
  6. QString TableHelper::createTable(const QString &tablename, const QList<QPair<QString, QString> > &fieldAndTypes)
  7. {
  8. QStringList fields;
  9. foreach(auto &item, fieldAndTypes)
  10. {
  11. if(item.second == "DATETIME")
  12. fields << item.first +" DATE" ;
  13. else
  14. fields << item.first +" " + item.second;
  15. }
  16. return QString("create table %1 ( \n %2 \n ); \n").arg(tablename).arg(fields.join(", \n"));
  17. }
  18. QString TableHelper::createComment(const QString &tablename, const QList<QPair<QString, QString> > &fieldAndComments)
  19. {
  20. QStringList comments;
  21. foreach(auto &item, fieldAndComments)
  22. {
  23. comments << QString("COMMENT ON COLUMN %1.%2 IS '%3'; ").arg(tablename).arg(item.first).arg(item.second);
  24. }
  25. return comments.join("\n");
  26. }
  27. QString TableHelper::createPrimaryAlter(const QString &tablename)
  28. {
  29. return QString("alter table %1 add constraint PK_%1_Id primary key(ID);").arg(tablename);
  30. }
  31. QString TableHelper::createSeq(const QString &tablename)
  32. {
  33. return QString("CREATE SEQUENCE SEQ_%1 \n\
  34. START WITH 1 \n\
  35. MAXVALUE 99999999999999 \n\
  36. MINVALUE 1 \n\
  37. CYCLE \n\
  38. CACHE 20 \n\
  39. ORDER;").arg(tablename);
  40. }
  41. QString TableHelper::createTrigger(const QString &tablename)
  42. {
  43. return QString("create or replace trigger %1_TRIGGER \n\
  44. before insert on %1 \n\
  45. for each row \n\
  46. begin \n\
  47. select SEQ_%1.nextval into :new.ID from dual;\n\
  48. end;").arg(tablename);
  49. }
  50. QString TableHelper::createDescription(const QString &entityname,const QList<QPair<QString, QString> > &fieldAndComments)
  51. {
  52. QStringList descriptions;
  53. foreach(auto &item, fieldAndComments)
  54. {
  55. descriptions << QString("pData = t.data(& %1::m_%2, \"%2\", 0, true, true);\n \
  56. pData->setDescription(\"%3\");\n").arg(entityname).arg(item.first).arg(item.second);
  57. }
  58. return descriptions.join("\n");
  59. }