package net.mindoverflow.webmarker.utils.sql; import net.mindoverflow.webmarker.utils.Cached; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.UUID; public class MarkerSQLUtils { public static boolean addUser(UUID randomId, String name, String password) { String query = "INSERT INTO " + MDatabaseTable.USERS.getTable().getTableSQLName() + " (" + MDatabaseColumn.USER_UUID.getColumn().getColumnSQLName() + ", " + MDatabaseColumn.USERNAME.getColumn().getColumnSQLName() + ", " + MDatabaseColumn.PASSWORD.getColumn().getColumnSQLName() + ") VALUES (?, ?, ?);"; return Cached.sqlManager.executeUpdate(query, randomId.toString(), name, password); } public static boolean userExists(String name) { String query = "SELECT " + MDatabaseColumn.USERNAME.getColumn().getColumnSQLName() + " FROM " + MDatabaseTable.USERS.getTable().getTableSQLName() + " WHERE " + MDatabaseColumn.USERNAME.getColumn().getColumnSQLName() + " = ? ;"; List result = Cached.sqlManager.executeStatement(query, MDatabaseColumn.USERNAME, name); return result.size() > 0; } public static boolean uuidTaken(UUID randomId) { String query = "SELECT " + MDatabaseColumn.USER_UUID.getColumn().getColumnSQLName() + " FROM " + MDatabaseTable.USERS.getTable().getTableSQLName() + " WHERE " + MDatabaseColumn.USER_UUID.getColumn().getColumnSQLName() + " = ? ;"; List result = Cached.sqlManager.executeStatement(query, MDatabaseColumn.USER_UUID, randomId.toString()); if(result.size() > 0) return true; return false; } public static UUID getUserUUID(String username) { String query = "SELECT " + MDatabaseColumn.USER_UUID.getColumn().getColumnSQLName() + " FROM " + MDatabaseTable.USERS.getTable().getTableSQLName() + " WHERE " + MDatabaseColumn.USERNAME.getColumn().getColumnSQLName() + " = ? ;"; List result = Cached.sqlManager.executeStatement(query, MDatabaseColumn.USER_UUID, username); if(result.size() != 1) return null; //todo: error! return UUID.fromString(result.get(0)); } // todo: use UUID? public static String getUserBcryptedPassword(String username) { String query = "SELECT " + MDatabaseColumn.PASSWORD.getColumn().getColumnSQLName() + " FROM " + MDatabaseTable.USERS.getTable().getTableSQLName() + " WHERE " + MDatabaseColumn.USERNAME.getColumn().getColumnSQLName() + " = ? ;"; List result = Cached.sqlManager.executeStatement(query, MDatabaseColumn.PASSWORD, username); if(result.size() != 1) return null; // todo: error! return result.get(0); } public static boolean addHistoryRecord(UUID uuid, String url, LocalDateTime timestampUTC) { String query = "INSERT INTO " + MDatabaseTable.HISTORY.getTable().getTableSQLName() + " (" + MDatabaseColumn.USER_UUID.getColumn().getColumnSQLName() + ", " + MDatabaseColumn.WEB_DOMAIN.getColumn().getColumnSQLName() + ", " + MDatabaseColumn.TIMESTAMP_UTC.getColumn().getColumnSQLName() + ") VALUES (?, ?, ?);"; DateTimeFormatter sqlDateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timestampSQL = sqlDateTime.format(timestampUTC); System.out.println("SQL Timestamp: " + timestampSQL); return Cached.sqlManager.executeUpdate(query, uuid.toString(), url, timestampSQL); } }