webmarker-server/src/main/java/net/mindoverflow/webmarker/utils/sql/MarkerSQLUtils.java

91 lines
3.7 KiB
Java

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<String> 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<String> 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<String> 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<String> 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);
}
}