From 6e6074b770037f3a1bd83f1180d2a3fbd6f0d893 Mon Sep 17 00:00:00 2001 From: Aleksei Date: Thu, 20 Feb 2020 15:58:53 -0500 Subject: [PATCH] Refactored CreateGallery with new Database --- .../developer/CreateGalleryCommand.java | 92 +++++++++---------- .../controllers/GalleryController.java | 10 ++ 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java index 1b8c93b..270786b 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java @@ -8,6 +8,8 @@ package dev.salmonllama.fsbot.commands.developer; import com.rethinkdb.RethinkDB; import com.rethinkdb.net.Connection; import dev.salmonllama.fsbot.config.BotConfig; +import dev.salmonllama.fsbot.database.controllers.GalleryController; +import dev.salmonllama.fsbot.database.models.GalleryChannel; import dev.salmonllama.fsbot.guthix.Command; import dev.salmonllama.fsbot.guthix.CommandContext; import dev.salmonllama.fsbot.guthix.CommandPermission; @@ -17,6 +19,7 @@ import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import java.awt.*; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -34,63 +37,50 @@ public class CreateGalleryCommand extends Command { // TODO: This command needs static final Connection CONN = R.connection().hostname("localhost").port(28015).connect(); @Override - public void onCommand(CommandContext ctx) { - Optional opServer = ctx.getServer(); - TextChannel channel = ctx.getChannel(); - String[] args = ctx.getArgs(); - String targetChannelId = channel.getIdAsString(); - String targetChannelName = channel.asServerChannel().get().getName(); // TODO: un-band-aid this. - - if (!opServer.isPresent()) { - ctx.reply("This command can only be used in a server"); + public void onCommand(CommandContext ctx) { // TODO: Might need some logic help... + if (ctx.isPrivateMessage()) { + ctx.reply("This command can only be used in a server!"); // TODO: Stop this. Turn this into a preset no-no embed. return; } + // Check if the channel is already a registered gallery channel. + // Create a gallery channel of the current channel. + // Store the gallery channel in the database. - Server server = opServer.get(); - String targetServerName = server.getName(); - String targetServerId = server.getIdAsString(); - - if (!server.getIdAsString().equals(BotConfig.HOME_SERVER)) { - channel.sendMessage("Fashion galleries can only be created in the Fashionscape server"); - return; + String channelId = ctx.getChannel().getIdAsString(); + try { + if (GalleryController.galleryExists(channelId)) { + ctx.reply("A gallery already exists in this channel, can not create a new one."); + return; + } + } catch (SQLException e) { + ctx.reply("An error occurred"); // TODO: error logging. } - if (args.length < 1) { - channel.sendMessage("No Arguments provided"); - return; - } - else if (args.length > 1) { - channel.sendMessage("Too many arguments provided."); - return; + GalleryChannel gallery = new GalleryChannel(); + gallery.channelId = channelId; + String tag = ctx.getArgs()[0]; + + ctx.getServer().ifPresent(server -> { + gallery.serverId = server.getIdAsString(); + gallery.serverName = server.getName(); + }); + + ctx.getChannel().asServerTextChannel().ifPresent(channel -> gallery.channelName = channel.getName()); + + try { + GalleryController.insert(gallery); + } catch(SQLException e) { + ctx.reply("An error occurred."); // TODO: error logging. } - String tag = args[0]; - - if (R.db("fsbot").table("channels").getField("cId").contains(targetChannelId).run(CONN)) { - EmbedBuilder embed = new EmbedBuilder() - .setColor(Color.RED) - .addField("ERROR", "This channel is already gathering images"); - channel.sendMessage(embed); + EmbedBuilder embed = new EmbedBuilder() + .setColor(Color.GREEN) + .addField("Success", "Channel added to storage with the following values:") + .addField("Channel Name:", gallery.channelName) + .addField("Channel Id:", gallery.channelId) + .addField("Tag:", tag) + .addField("End:", String.format("Table \"%s\" created for images in this channel", tag)); + ctx.getChannel().sendMessage(embed); } - else { - R.db("fsbot").table("channels").insert( - R.hashMap("sName", targetServerName) - .with("sId", targetServerId) - .with("cName", targetChannelName) - .with("cId", targetChannelId) - .with("tag", tag) - ).run(CONN); - - R.db("fsbot").tableCreate(tag).run(CONN); - - EmbedBuilder embed = new EmbedBuilder() - .setColor(Color.GREEN) - .addField("Success", "Channel added to storage with the following values:") - .addField("Channel Name:", targetChannelName) - .addField("Channel Id:", targetChannelId) - .addField("Tag:", tag) - .addField("End:", String.format("Table \"%s\" created for images in this channel", tag)); - channel.sendMessage(embed); - } - } } + diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java index 507c57f..9a40b13 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java @@ -33,9 +33,19 @@ public class GalleryController { galleries.add(mapObject(rs)); } + FSDB.get().close(rs); return galleries; } + public static boolean galleryExists(String channelId) throws SQLException { + ResultSet rs = FSDB.get().select("SELECT EXISTS(SELECT 1 AS exists FROM galleries WHERE channel_id = ?", channelId); + + boolean exists = rs.getBoolean("exists"); + + FSDB.get().close(rs); + return exists; + } + private static GalleryChannel mapObject(ResultSet rs) throws SQLException { GalleryChannel gallery = new GalleryChannel(); gallery.serverId = rs.getString("server_id");