From bf7565a8dce1c79f6e97cd341d926cc83d5a752f Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:23:57 +0200 Subject: [PATCH] Created the TableCreationQuery --- .../queries/TableCreationQuery.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java new file mode 100644 index 0000000..84371f5 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java @@ -0,0 +1,49 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; +import de.gnmyt.sqltoolkit.types.TableField; + +import java.util.ArrayList; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.PRIMARY_KEY; + +public class TableCreationQuery extends AbstractQuery { + + @Override + public void defaults() { + addParameter(QueryParameter.TABLE_NAME, "default"); + addParameter(QueryParameter.FIELD_LIST, new ArrayList()); + addParameter(PRIMARY_KEY, ""); + } + + /** + * Builds the field list + * @return the field list as a string + */ + public String buildFieldList() { + StatementBuilder builder = new StatementBuilder("("); + + ArrayList fieldList = (ArrayList) getParameter(QueryParameter.FIELD_LIST); + + for (int i = 0; i < fieldList.size(); i++) { + if (i > 0) builder.appendDefault(","); + builder.append(fieldList.get(i).generateSQLRow()); + } + + if (!((String) getParameter(PRIMARY_KEY)).isEmpty()) builder.appendDefault(String.format(", PRIMARY KEY (%s)", getParameter(PRIMARY_KEY))); + + return builder.append(")").build(); + } + + @Override + public SQLQuery build() { + StatementBuilder builder = new StatementBuilder("CREATE TABLE IF NOT EXISTS").append("`" + getParameter(QueryParameter.TABLE_NAME) + "`"); + + builder.append(buildFieldList()); + + return new SQLQuery().setStatement(builder.build()); + } +}