Add model/controller for staticpermission

This commit is contained in:
Aleksei 2020-07-03 17:19:57 -04:00
parent 6f55d755e6
commit 8c3dce4313
2 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,118 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.database.controllers;
import dev.salmonllama.fsbot.database.FSDB;
import dev.salmonllama.fsbot.database.models.StaticPermission;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
public class StaticPermissionController {
// Need to insert, get all per user, get per keyword, and delete
public static CompletableFuture<Void> insert(StaticPermission perm) {
return CompletableFuture.runAsync(() -> {
try {
insertExec(perm);
} catch (SQLException e) {
throw new CompletionException(e);
}
});
}
public static CompletableFuture<Optional<Collection<StaticPermission>>> getByUser(String userId) {
return CompletableFuture.supplyAsync(() -> {
try {
return getByUserExec(userId);
} catch (SQLException e) {
throw new CompletionException(e);
}
});
}
public static CompletableFuture<Optional<Collection<StaticPermission>>> getByPermission(String perm) {
return CompletableFuture.supplyAsync(() -> {
try {
return getByPermissionExec(perm);
} catch (SQLException e) {
throw new CompletionException(e);
}
});
}
public static CompletableFuture<Void> delete(StaticPermission perm) {
return delete(perm.getUserId(), perm.getPermission());
}
public static CompletableFuture<Void> delete(String userId, String perm) {
return CompletableFuture.runAsync(() -> {
try {
deleteExec(userId, perm);
} catch (SQLException e) {
throw new CompletionException(e);
}
});
}
private static void insertExec(StaticPermission perm) throws SQLException {
FSDB.get().insert("INSERT INTO static_permissions (user_id, permission, date_added) VALUES (?, ?, ?)",
perm.getUserId(),
perm.getPermission(),
perm.getAdded()
);
}
private static Optional<Collection<StaticPermission>> getByUserExec(String userId) throws SQLException {
ResultSet rs = FSDB.get().select("SELECT * FROM static_permissions WHERE user_id = ?", userId);
Collection<StaticPermission> permissions = new ArrayList<>();
while (rs.next()) {
permissions.add(mapObject(rs));
}
FSDB.get().close(rs);
if (permissions.isEmpty()) {
return Optional.empty();
}
return Optional.of(permissions);
}
private static Optional<Collection<StaticPermission>> getByPermissionExec(String perm) throws SQLException {
ResultSet rs = FSDB.get().select("SELECT * FROM static_permissions WHERE permission = ?", perm);
Collection<StaticPermission> users = new ArrayList<>();
while (rs.next()) {
users.add(mapObject(rs));
}
FSDB.get().close(rs);
if (users.isEmpty()) {
return Optional.empty();
}
return Optional.of(users);
}
private static void deleteExec(String userId, String perm) throws SQLException {
FSDB.get().query("DELETE FROM static_permissions WHERE user_id = ? AND permission = ?", userId, perm);
}
private static StaticPermission mapObject(ResultSet rs) throws SQLException {
return new StaticPermission.StaticPermissionBuilder(rs.getString("user_id"))
.setPermission(rs.getString("permission"))
.setAdded(new Timestamp(rs.getLong("date_added")))
.build();
}
}

View File

@ -0,0 +1,62 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.database.models;
import dev.salmonllama.fsbot.database.DatabaseModel;
import java.sql.Timestamp;
public class StaticPermission extends DatabaseModel {
private String userId;
private String permission;
private Timestamp added;
private StaticPermission(StaticPermissionBuilder builder) {
userId = builder.userId;
permission = builder.permission;
added = builder.added;
}
public String getUserId() {
return userId;
}
public String getPermission() {
return permission;
}
public Timestamp getAdded() {
return added;
}
public static String schema() {
return "CREATE TABLE IF NOT EXISTS static_permissions (user_id TEXT, permission TEXT, date_added TEXT)";
}
public static class StaticPermissionBuilder {
private String userId;
private String permission = null;
private Timestamp added = null;
public StaticPermissionBuilder(String userId) {
this.userId = userId;
}
public StaticPermissionBuilder setPermission(String permission) {
this.permission = permission;
return this;
}
public StaticPermissionBuilder setAdded(Timestamp added) {
this.added = added;
return this;
}
public StaticPermission build() {
return new StaticPermission(this);
}
}
}