From 47e87834ef96d51ecfa54c9d92176033945c64db Mon Sep 17 00:00:00 2001 From: FlameyosFlow <89988527+FlameyosSnowy@users.noreply.github.com> Date: Sun, 12 Oct 2025 12:24:58 +0300 Subject: [PATCH 1/2] Delete src/main/java/me/cobeine/sqlava/connection/database/query/impl directory --- .../database/query/impl/DeleteQuery.java | 55 ----------- .../database/query/impl/InsertQuery.java | 88 ----------------- .../database/query/impl/SelectQuery.java | 99 ------------------- .../database/query/impl/UpdateQuery.java | 84 ---------------- 4 files changed, 326 deletions(-) delete mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java delete mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java delete mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java delete mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java deleted file mode 100644 index eff12e3..0000000 --- a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java +++ /dev/null @@ -1,55 +0,0 @@ -package me.cobeine.sqlava.connection.database.query.impl; - -import me.cobeine.sqlava.connection.database.query.Query; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Cobeine - */ - -public class DeleteQuery implements Query { - private final String table; - private final List wheres = new ArrayList<>(); - public DeleteQuery(String table) { - this.table = table; - } - - public DeleteQuery where(String expression) { - wheres.add(expression + "=?"); - return this; - } - public DeleteQuery where(String... expression) { - for (String s : expression) { - wheres.add(s + "=?"); - } - return this; - } - public DeleteQuery where(String expression,Object value) { - wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); - return this; - } - public DeleteQuery and(String expression) { - where(expression); - return this; - } - public DeleteQuery and(String expression,Object value) { - where(expression,value); - return this; - } - - - @Override - public String build() { - StringBuilder builder = new StringBuilder(); - builder.append("DELETE FROM ").append(table); - - if (wheres.size() > 0) - builder.append(" WHERE ").append(separate(wheres, " AND ")); - - return builder.toString(); - } - - -} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java deleted file mode 100644 index 355ed1c..0000000 --- a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java +++ /dev/null @@ -1,88 +0,0 @@ -package me.cobeine.sqlava.connection.database.query.impl; - -import me.cobeine.sqlava.connection.database.query.Query; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Cobeine - */ - -public class InsertQuery implements Query { - private final String table; - private final LinkedHashMap values = new LinkedHashMap<>(); - private final LinkedHashMap duplicateValues = new LinkedHashMap<>(); - private boolean onDuplicateKey = false; - - public InsertQuery(String table) { - this.table = table; - } - - - public InsertQuery value(String column, String value) { - values.put(column, value); - return this; - } - - - public InsertQuery value(String column) { - value(column, "?"); - return this; - } - public InsertQuery values(String... column) { - for (String s : column) { - values.put(s, "?"); - } - return this; - } - - public InsertQuery onDuplicateKeyUpdate() { - onDuplicateKey = true; - return this; - } - - - public InsertQuery set(String column, String value) { - duplicateValues.put(column, value); - return this; - } - - - public InsertQuery set(String column) { - set(column, "VALUES(" + column + ")"); - return this; - } - - - @Override - public String build() { - StringBuilder builder = new StringBuilder(); - builder.append("INSERT INTO ").append(table).append(" (") - .append(separate(values.keySet())).append(")").append(" VALUES (").append(separate(values.values())).append(")"); - - if (onDuplicateKey) { - builder.append(" ON DUPLICATE KEY UPDATE "); - - String separator = ""; - if (duplicateValues.isEmpty()) { - String sep = ""; - for (String s : values.keySet()) { - builder.append(sep).append(s).append("=").append("VALUES(").append(s).append(")"); - sep = ", "; - } - }else { - for (Map.Entry entry : duplicateValues.entrySet()) { - String column = entry.getKey(); - String value = entry.getValue(); - builder.append(separator).append(column).append("=").append(value); - separator = ","; - } - } - - } - return builder.toString(); - } - - -} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java deleted file mode 100644 index 23c2517..0000000 --- a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java +++ /dev/null @@ -1,99 +0,0 @@ -package me.cobeine.sqlava.connection.database.query.impl; - -import me.cobeine.sqlava.connection.database.query.Query; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * @author Cobeine - */ - -public class SelectQuery implements Query { - private final String table; - private final List columns = new ArrayList<>(); - private final List wheres = new ArrayList<>(); - private String orderBy; - private boolean orderByAscending = false; - private int limitOffset = 0; - private int limitRowCount = 0; - - public SelectQuery(String table) { - this.table = table; - } - - - public SelectQuery column(String column) { - columns.add(column); - return this; - } - public SelectQuery column(String... column) { - columns.addAll(Arrays.asList(column)); - return this; - } - - public SelectQuery where(String expression) { - wheres.add(expression + "=?"); - return this; - } - public SelectQuery where(String... expression) { - for (String s : expression) { - wheres.add(s + "=?"); - } - return this; - } - public SelectQuery where(String expression,Object value) { - wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); - return this; - } - public SelectQuery and(String expression) { - where(expression); - return this; - } - public SelectQuery and(String expression,Object value) { - where(expression,value); - return this; - } - - public SelectQuery orderBy(String column, boolean ascending) { - this.orderBy = column; - this.orderByAscending = ascending; - return this; - } - - - public SelectQuery limit(int offset, int rowCount) { - this.limitOffset = offset; - this.limitRowCount = rowCount; - return this; - } - - public SelectQuery limit(int rowCount) { - this.limitOffset = 0; - this.limitRowCount = rowCount; - return this; - } - - @Override - public String build() { - StringBuilder builder = new StringBuilder(); - - if (columns.isEmpty()) builder.append("SELECT *").append(" FROM ").append(table); - - else builder.append("SELECT ").append(separate(columns)).append(" FROM ").append(table); - - if (wheres.size() > 0) - builder.append(" WHERE ").append(separate(wheres, " AND ")); - - if (orderBy != null) - builder.append(" ORDER BY ").append(orderBy).append(orderByAscending ? " ASC" : " DESC"); - - if (limitRowCount > 0) - builder.append(" LIMIT ").append(limitOffset).append(",").append(limitRowCount); - - - return builder.toString(); - } - -} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java deleted file mode 100644 index 01ea170..0000000 --- a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java +++ /dev/null @@ -1,84 +0,0 @@ -package me.cobeine.sqlava.connection.database.query.impl; - -import me.cobeine.sqlava.connection.database.query.Query; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author Cobeine - */ - -public class UpdateQuery implements Query { - private final String table; - private final LinkedHashMap values = new LinkedHashMap<>(); - private final List wheres = new ArrayList<>(); - - public UpdateQuery(String table) { - this.table = table; - } - - public UpdateQuery setMultiple(String... column) { - for (String s : column) { - set(s, "?"); - } - return this; - } - public UpdateQuery set(String column, String value) { - values.put(column, value); - return this; - } - - public UpdateQuery set(String column) { - set(column, "?"); - return this; - } - public UpdateQuery where(String expression) { - wheres.add(expression + "=?"); - return this; - } - public UpdateQuery where(String... expression) { - for (String s : expression) { - wheres.add(s + "=?"); - } - return this; - } - public UpdateQuery where(String expression,Object value) { - wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); - return this; - } - public UpdateQuery and(String expression) { - where(expression); - return this; - } - public UpdateQuery and(String expression,Object value) { - where(expression,value); - return this; - } - - @Override - public String build() { - StringBuilder builder = new StringBuilder(); - builder.append("UPDATE ").append(table).append(" SET "); - - String seperator = ""; - for (Map.Entry entry : values.entrySet()) { - - String column = entry.getKey(); - String value = entry.getValue(); - builder.append(seperator) - .append(column) - .append("=") - .append(value); - seperator = ","; - - } - - if (!wheres.isEmpty()) - builder.append(" WHERE ").append(separate(wheres, " AND ")); - - return builder.toString(); - } -} From 51c634d426df267c946dfd2a2f7672802303bc5e Mon Sep 17 00:00:00 2001 From: FlameyosFlow <89988527+FlameyosSnowy@users.noreply.github.com> Date: Sun, 12 Oct 2025 12:26:55 +0300 Subject: [PATCH 2/2] Add backticks to table names to the query Add backticks to table names to the query; This should improve flexibility without letting the user think about it --- .../database/query/impl/DeleteQuery.java | 56 +++++++++++ .../database/query/impl/InsertQuery.java | 87 +++++++++++++++++ .../database/query/impl/SelectQuery.java | 97 +++++++++++++++++++ .../database/query/impl/UpdateQuery.java | 83 ++++++++++++++++ 4 files changed, 323 insertions(+) create mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java create mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java create mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java create mode 100644 src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java new file mode 100644 index 0000000..b6d4f26 --- /dev/null +++ b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/DeleteQuery.java @@ -0,0 +1,56 @@ +package me.cobeine.sqlava.connection.database.query.impl; + +import me.cobeine.sqlava.connection.database.query.Query; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Cobeine + */ + +public class DeleteQuery implements Query { + private final String table; + private final List wheres = new ArrayList<>(); + + public DeleteQuery(String table) { + this.table = '`' + table + '`';; + } + + public DeleteQuery where(String expression) { + wheres.add(expression + "=?"); + return this; + } + public DeleteQuery where(String... expression) { + for (String s : expression) { + wheres.add(s + "=?"); + } + return this; + } + public DeleteQuery where(String expression,Object value) { + wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); + return this; + } + public DeleteQuery and(String expression) { + where(expression); + return this; + } + public DeleteQuery and(String expression,Object value) { + where(expression,value); + return this; + } + + + @Override + public String build() { + StringBuilder builder = new StringBuilder(); + builder.append("DELETE FROM ").append(table); + + if (wheres.size() > 0) + builder.append(" WHERE ").append(separate(wheres, " AND ")); + + return builder.toString(); + } + + +} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java new file mode 100644 index 0000000..3d7600d --- /dev/null +++ b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/InsertQuery.java @@ -0,0 +1,87 @@ +package me.cobeine.sqlava.connection.database.query.impl; + +import me.cobeine.sqlava.connection.database.query.Query; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author Cobeine + */ + +public class InsertQuery implements Query { + private final String table; + private final LinkedHashMap values = new LinkedHashMap<>(); + private final LinkedHashMap duplicateValues = new LinkedHashMap<>(); + private boolean onDuplicateKey = false; + + public InsertQuery(String table) { + this.table = '`' + table + '`';; + } + + public InsertQuery value(String column, String value) { + values.put(column, value); + return this; + } + + + public InsertQuery value(String column) { + value(column, "?"); + return this; + } + public InsertQuery values(String... column) { + for (String s : column) { + values.put(s, "?"); + } + return this; + } + + public InsertQuery onDuplicateKeyUpdate() { + onDuplicateKey = true; + return this; + } + + + public InsertQuery set(String column, String value) { + duplicateValues.put(column, value); + return this; + } + + + public InsertQuery set(String column) { + set(column, "VALUES(" + column + ")"); + return this; + } + + + @Override + public String build() { + StringBuilder builder = new StringBuilder(); + builder.append("INSERT INTO ").append(table).append(" (") + .append(separate(values.keySet())).append(")").append(" VALUES (").append(separate(values.values())).append(")"); + + if (onDuplicateKey) { + builder.append(" ON DUPLICATE KEY UPDATE "); + + String separator = ""; + if (duplicateValues.isEmpty()) { + String sep = ""; + for (String s : values.keySet()) { + builder.append(sep).append(s).append("=").append("VALUES(").append(s).append(")"); + sep = ", "; + } + }else { + for (Map.Entry entry : duplicateValues.entrySet()) { + String column = entry.getKey(); + String value = entry.getValue(); + builder.append(separator).append(column).append("=").append(value); + separator = ","; + } + } + + } + return builder.toString(); + } + + +} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java new file mode 100644 index 0000000..948b2c8 --- /dev/null +++ b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/SelectQuery.java @@ -0,0 +1,97 @@ +package me.cobeine.sqlava.connection.database.query.impl; + +import me.cobeine.sqlava.connection.database.query.Query; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author Cobeine + */ + +public class SelectQuery implements Query { + private final String table; + private final List columns = new ArrayList<>(); + private final List wheres = new ArrayList<>(); + private String orderBy; + private boolean orderByAscending = false; + private int limitOffset = 0; + private int limitRowCount = 0; + + public SelectQuery(String table) { + this.table = '`' + table + '`';; + } + + public SelectQuery column(String column) { + columns.add(column); + return this; + } + public SelectQuery column(String... column) { + columns.addAll(Arrays.asList(column)); + return this; + } + + public SelectQuery where(String expression) { + wheres.add(expression + "= ?"); + return this; + } + public SelectQuery where(String... expression) { + for (String s : expression) { + wheres.add(s + "= ?"); + } + return this; + } + public SelectQuery where(String expression,Object value) { + wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); + return this; + } + public SelectQuery and(String expression) { + where(expression); + return this; + } + public SelectQuery and(String expression,Object value) { + where(expression,value); + return this; + } + + public SelectQuery orderBy(String column, boolean ascending) { + this.orderBy = column; + this.orderByAscending = ascending; + return this; + } + + + public SelectQuery limit(int offset, int rowCount) { + this.limitOffset = offset; + this.limitRowCount = rowCount; + return this; + } + + public SelectQuery limit(int rowCount) { + this.limitOffset = 0; + this.limitRowCount = rowCount; + return this; + } + + @Override + public String build() { + StringBuilder builder = new StringBuilder(); + + if (columns.isEmpty()) builder.append("SELECT *").append(" FROM ").append(table); + + else builder.append("SELECT ").append(separate(columns)).append(" FROM ").append(table); + + if (!wheres.isEmpty()) + builder.append(" WHERE ").append(separate(wheres, " AND ")); + + if (orderBy != null) + builder.append(" ORDER BY ").append(orderBy).append(orderByAscending ? " ASC" : " DESC"); + + if (limitRowCount > 0) + builder.append(" LIMIT ").append(limitOffset).append(",").append(limitRowCount); + + return builder.toString(); + } + +} diff --git a/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java new file mode 100644 index 0000000..42b163f --- /dev/null +++ b/src/main/java/me/cobeine/sqlava/connection/database/query/impl/UpdateQuery.java @@ -0,0 +1,83 @@ +package me.cobeine.sqlava.connection.database.query.impl; + +import me.cobeine.sqlava.connection.database.query.Query; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Cobeine + */ + +public class UpdateQuery implements Query { + private final String table; + private final LinkedHashMap values = new LinkedHashMap<>(); + private final List wheres = new ArrayList<>(); + + public UpdateQuery(String table) { + this.table = '`' + table + '`'; + } + + public UpdateQuery setMultiple(String... column) { + for (String s : column) { + set(s, "?"); + } + return this; + } + public UpdateQuery set(String column, String value) { + values.put(column, value); + return this; + } + + public UpdateQuery set(String column) { + set(column, "?"); + return this; + } + public UpdateQuery where(String expression) { + wheres.add(expression + "=?"); + return this; + } + public UpdateQuery where(String... expression) { + for (String s : expression) { + wheres.add(s + "=?"); + } + return this; + } + public UpdateQuery where(String expression,Object value) { + wheres.add(expression + "=" + (value instanceof String ? "'" + value +"'" : value)); + return this; + } + public UpdateQuery and(String expression) { + where(expression); + return this; + } + public UpdateQuery and(String expression,Object value) { + where(expression,value); + return this; + } + + @Override + public String build() { + StringBuilder builder = new StringBuilder(); + builder.append("UPDATE ").append(table).append(" SET "); + + String seperator = ""; + for (Map.Entry entry : values.entrySet()) { + String column = entry.getKey(); + String value = entry.getValue(); + builder.append(seperator) + .append(column) + .append("=") + .append(value); + seperator = ","; + + } + + if (!wheres.isEmpty()) + builder.append(" WHERE ").append(separate(wheres, " AND ")); + + return builder.toString(); + } +}