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