commit 12c34ebc9691bb8d7a57bd8374efc4dc67bbcb39
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Sat Aug 8 12:13:44 2015 +0200

    wip

diff --git a/src/schema.cpp b/src/schema.cpp
index 0bc6063..af2ac16 100644
--- a/src/schema.cpp
+++ b/src/schema.cpp
@@ -177,6 +177,34 @@ void Schema::setAbstractTypeMap(const QSharedPointer<QHash<QString, QString> >
     abstractTypeMap = value;
 }
 
+QString Schema::buildColumnSchema(QString type, QString length, bool notNull,
+                                  QString defaultValue,
+                                  bool unique, QString checkConstraint) const {
+    return type + this->buildLengthString(length) + this->buildNotNullString(
+               notNull) + this->buildUniqueString(unique) + this->buildDefaultString(
+               defaultValue) + this->buildCheckString(checkConstraint);
+}
+
+QString Schema::buildLengthString(QString length) const {
+    return length.isEmpty() ? "" : "(" + length + ")";
+}
+
+QString Schema::buildNotNullString(bool notNull) const {
+    return notNull ? " NOT NULL" : "";
+}
+
+QString Schema::buildUniqueString(bool unique) const {
+    return unique ? " UNIQUE" : "";
+}
+
+QString Schema::buildDefaultString(QString def) const {
+
+}
+
+QString Schema::buildCheckString(QString check) const {
+    return check.isEmpty() ? "" : (" CHECK (" + check + ")");
+}
+
 
 QHash<QString, QSharedPointer<TableSchema> > Schema::getTables() const {
     return this->tables;
diff --git a/src/schema.h b/src/schema.h
index 715ebca..2d117f2 100644
--- a/src/schema.h
+++ b/src/schema.h
@@ -119,6 +119,16 @@ class Schema {
     void setAbstractTypeMap(const QSharedPointer<QHash<QString, QString> > &value);
 
   protected:
+    virtual QString buildColumnSchema(QString type, QString length, bool notNull = false, QString defaultValue = "",
+                                               bool unique = false, QString checkConstraint = "") const;
+    virtual QString buildLengthString(QString length) const;
+    virtual QString buildNotNullString(bool notNull) const;
+    virtual QString buildUniqueString(bool unique) const;
+    virtual QString buildDefaultString(QString def) const;
+    virtual QString buildCheckString(QString check) const;
+
+
+
     virtual QStringList findTableNames(QString schema = "") = 0;
     virtual QHash<QString, QStringList> findUniqueIndexes(const
             QSharedPointer<TableSchema>
