Add model/controller for staticpermission
This commit is contained in:
parent
6f55d755e6
commit
8c3dce4313
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user