package com.techcavern.wavetact.utils;
import com.techcavern.wavetact.ircCommands.netadmin.Nick;
import org.jooq.Record;
import org.jooq.Result;
import static com.techcavern.wavetactdb.Tables.*;
/**
* Created by jztech101 on 12/30/14.
*/
public class DatabaseUtils {
public static void addAccount(String account, String password, String randomString) {
Registry.wavetactDB.insertInto(ACCOUNTS).values(account, password, randomString).execute();
}
public static Record getAccount(String account) {
Result<Record> accountRecord = Registry.wavetactDB.select().from(ACCOUNTS).where(ACCOUNTS.USERNAME.eq(account)).fetch();
return getRecord(accountRecord);
}
public static void updateAccount(Record account) {
Registry.wavetactDB.update(ACCOUNTS).set(account).where(ACCOUNTS.USERNAME.eq(account.getValue(ACCOUNTS.USERNAME))).execute();
}
public static void removeAccount(String account) {
Registry.wavetactDB.delete(ACCOUNTS).where(ACCOUNTS.USERNAME.eq(account)).execute();
}
public static void addBan(String network, String channel, String hostmask, long init, long time, boolean isMute, String property) {
Registry.wavetactDB.insertInto(BANS).values(hostmask, network, channel, init, time, isMute, property).execute();
}
public static void removeBan(String network, String channel, String hostmask, boolean isMute) {
Registry.wavetactDB.delete(BANS).where(BANS.HOSTMASK.eq(hostmask).and(BANS.NETWORK.eq(network)).and(BANS.ISMUTE.eq(isMute).and(BANS.CHANNEL.eq(channel)))).execute();
}
public static Record getBan(String network, String channel, String hostmask, boolean isMute) {
Result<Record> banRecord = Registry.wavetactDB.select().from(BANS).where(BANS.HOSTMASK.eq(hostmask)).and(BANS.NETWORK.eq(network)).and(BANS.ISMUTE.eq(isMute).and(BANS.CHANNEL.eq(channel))).fetch();
return getRecord(banRecord);
}
public static void updateBan(Record ban) {
Registry.wavetactDB.update(BANS).set(ban).where(BANS.HOSTMASK.eq(ban.getValue(BANS.HOSTMASK))).and(BANS.NETWORK.eq(ban.getValue(BANS.NETWORK))).and(BANS.ISMUTE.eq(ban.getValue(BANS.ISMUTE)).and(BANS.CHANNEL.eq(ban.getValue(BANS.CHANNEL)))).execute();
}
public static Result<Record> getBans() {
return Registry.wavetactDB.select().from(BANS).orderBy(BANS.TIME.asc()).fetch();
}
public static Record getConfig(String config) {
Result<Record> configRecord = Registry.wavetactDB.select().from(CONFIG).where(CONFIG.PROPERTY.eq(config)).fetch();
return getRecord(configRecord);
}
public static void removeConfig(String config) {
Registry.wavetactDB.delete(CONFIG).where(CONFIG.PROPERTY.eq(config)).execute();
}
public static void addConfig(String config, String value) {
Registry.wavetactDB.insertInto(CONFIG).values(config, value).execute();
}
public static void updateConfig(Record config) {
Registry.wavetactDB.update(CONFIG).set(config).where(CONFIG.PROPERTY.eq(config.getValue(CONFIG.PROPERTY))).execute();
}
public static Record getRelay(String relay) {
Result<Record> relayRecord = Registry.wavetactDB.select().from(RELAYS).where(RELAYS.PROPERTY.eq(relay)).fetch();
return getRecord(relayRecord);
}
public static void removeRelay(String relay) {
Registry.wavetactDB.delete(RELAYS).where(RELAYS.PROPERTY.eq(relay)).execute();
}
public static void addRelay(String relay, String value) {
Registry.wavetactDB.insertInto(RELAYS).values(relay, value).execute();
}
public static void updateRelay(Record relay) {
Registry.wavetactDB.update(RELAYS).set(relay).where(RELAYS.PROPERTY.eq(relay.getValue(RELAYS.PROPERTY))).execute();
}
public static Record getRecord(Result<Record> record) {
if (record.size() > 0) {
return record.get(0);
} else {
return null;
}
}
public static Record getCustomCommand(String network, String channel, String command) {
Result<Record> commandRecord = Registry.wavetactDB.select().from(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.eq(network)).and(CUSTOMCOMMANDS.CHANNEL.eq(channel)).fetch();
if (getRecord(commandRecord) == null) {
commandRecord = Registry.wavetactDB.select().from(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.isNull()).and(CUSTOMCOMMANDS.CHANNEL.isNull()).fetch();
}
return getRecord(commandRecord);
}
public static Record getChannelCustomCommand(String network, String channel, String command) {
Result<Record> commandRecord;
if (channel == null && network == null) {
commandRecord = Registry.wavetactDB.select().from(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.isNull()).and(CUSTOMCOMMANDS.CHANNEL.isNull()).fetch();
} else {
commandRecord = Registry.wavetactDB.select().from(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.eq(network)).and(CUSTOMCOMMANDS.CHANNEL.eq(channel)).fetch();
}
return getRecord(commandRecord);
}
public static void updateCustomCommand(Record command) {
if (command.getValue(CUSTOMCOMMANDS.NETWORK) == null && command.getValue(CUSTOMCOMMANDS.CHANNEL) == null)
Registry.wavetactDB.update(CUSTOMCOMMANDS).set(command).where(CUSTOMCOMMANDS.COMMAND.eq(command.getValue(CUSTOMCOMMANDS.COMMAND))).and(CUSTOMCOMMANDS.NETWORK.isNull()).and(CUSTOMCOMMANDS.CHANNEL.isNull()).execute();
else
Registry.wavetactDB.update(CUSTOMCOMMANDS).set(command).where(CUSTOMCOMMANDS.COMMAND.eq(command.getValue(CUSTOMCOMMANDS.COMMAND))).and(CUSTOMCOMMANDS.NETWORK.eq(command.getValue(CUSTOMCOMMANDS.NETWORK))).and(CUSTOMCOMMANDS.CHANNEL.eq(command.getValue(CUSTOMCOMMANDS.CHANNEL))).execute();
}
public static Result<Record> getCustomCommands(String network, String channel) {
return Registry.wavetactDB.select().from(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.NETWORK.eq(network)).and(CUSTOMCOMMANDS.CHANNEL.eq(channel)).fetch();
}
public static void addCustomCommand(String network, String channel, String command, int permlevel, String value, boolean isLocked, boolean isAction) {
Registry.wavetactDB.insertInto(CUSTOMCOMMANDS).values(permlevel, channel, command, value, network, isLocked, isAction).execute();
}
public static void removeCustomCommand(String network, String channel, String command) {
if (network == null) {
Registry.wavetactDB.delete(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.isNull()).and(CUSTOMCOMMANDS.CHANNEL.isNull()).execute();
} else {
Registry.wavetactDB.delete(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).and(CUSTOMCOMMANDS.NETWORK.eq(network)).and(CUSTOMCOMMANDS.CHANNEL.eq(channel)).execute();
}
}
public static void removeCustomCommand(String command) {
Registry.wavetactDB.delete(CUSTOMCOMMANDS).where(CUSTOMCOMMANDS.COMMAND.eq(command)).execute();
}
public static Result<Record> getBlacklists(String type) {
return Registry.wavetactDB.select().from(BLACKLISTS).where(BLACKLISTS.TYPE.eq(type)).fetch();
}
public static Record getBlacklist(String type, String blacklist) {
Result<Record> blacklists = Registry.wavetactDB.select().from(BLACKLISTS).where(BLACKLISTS.TYPE.eq(type)).and(BLACKLISTS.URL.eq(blacklist)).fetch();
return getRecord(blacklists);
}
public static void removeBlacklist(String type, String blacklist) {
Registry.wavetactDB.delete(BLACKLISTS).where(BLACKLISTS.TYPE.eq(type)).and(BLACKLISTS.URL.eq(blacklist)).execute();
}
public static void addBlacklist(String blacklist, String type) {
Registry.wavetactDB.insertInto(BLACKLISTS).values(type, blacklist).execute();
}
public static Record getChannelProperty(String network, String channel, String property) {
Result<Record> commandRecord = Registry.wavetactDB.select().from(CHANNELPROPERTY).where(CHANNELPROPERTY.PROPERTY.eq(property)).and(CHANNELPROPERTY.NETWORK.eq(network)).and(CHANNELPROPERTY.CHANNEL.eq(channel)).fetch();
return getRecord(commandRecord);
}
public static void updateChannelProperty(Record channelproperty) {
Registry.wavetactDB.update(CHANNELPROPERTY).set(channelproperty).where(CHANNELPROPERTY.PROPERTY.eq(channelproperty.getValue(CHANNELPROPERTY.PROPERTY))).and(CHANNELPROPERTY.NETWORK.eq(channelproperty.getValue(CHANNELPROPERTY.NETWORK))).and(CHANNELPROPERTY.CHANNEL.eq(channelproperty.getValue(CHANNELPROPERTY.CHANNEL))).execute();
}
public static void addChannelProperty(String network, String channel, String property, String value) {
Registry.wavetactDB.insertInto(CHANNELPROPERTY).values(network, channel, property, value).execute();
}
public static void removeChannelProperty(String network, String channel, String property) {
Registry.wavetactDB.delete(CHANNELPROPERTY).where(CHANNELPROPERTY.PROPERTY.eq(property)).and(CHANNELPROPERTY.NETWORK.eq(network)).and(CHANNELPROPERTY.CHANNEL.eq(channel)).execute();
}
public static Record getNetworkProperty(String network, String property) {
Result<Record> commandRecord = Registry.wavetactDB.select().from(NETWORKPROPERTY).where(NETWORKPROPERTY.PROPERTY.eq(property)).and(NETWORKPROPERTY.NETWORK.eq(network)).fetch();
return getRecord(commandRecord);
}
public static void updateNetworkProperty(Record networkproperty) {
Registry.wavetactDB.update(NETWORKPROPERTY).set(networkproperty).where(NETWORKPROPERTY.PROPERTY.eq(networkproperty.getValue(NETWORKPROPERTY.PROPERTY))).and(NETWORKPROPERTY.NETWORK.eq(networkproperty.getValue(NETWORKPROPERTY.NETWORK))).execute();
}
public static void addNetworkProperty(String network, String property, String value) {
Registry.wavetactDB.insertInto(NETWORKPROPERTY).values(network, property, value).execute();
}
public static void removeNetworkProperty(String network, String property) {
Registry.wavetactDB.delete(NETWORKPROPERTY).where(NETWORKPROPERTY.PROPERTY.eq(property)).and(NETWORKPROPERTY.NETWORK.eq(network)).execute();
}
public static Record getChannelUserProperty(String network, String channel, String user, String property) {
Result<Record> channelUserPropertyRecord = Registry.wavetactDB.select().from(CHANNELUSERPROPERTY).where(CHANNELUSERPROPERTY.PROPERTY.eq(property)).and(CHANNELUSERPROPERTY.USER.eq(user)).and(CHANNELUSERPROPERTY.NETWORK.eq(network)).and(CHANNELUSERPROPERTY.CHANNEL.eq(channel)).fetch();
return getRecord(channelUserPropertyRecord);
}
public static Result<Record> getChannelUserProperty(String network, String channel, String property) {
return Registry.wavetactDB.select().from(CHANNELUSERPROPERTY).where(CHANNELUSERPROPERTY.PROPERTY.eq(property)).and(CHANNELUSERPROPERTY.NETWORK.eq(network)).and(CHANNELUSERPROPERTY.CHANNEL.eq(channel)).fetch();
}
public static void updateChannelUserProperty(Record channeluserproperty) {
Registry.wavetactDB.update(CHANNELUSERPROPERTY).set(channeluserproperty).where(CHANNELUSERPROPERTY.PROPERTY.eq(channeluserproperty.getValue(CHANNELUSERPROPERTY.PROPERTY))).and(CHANNELUSERPROPERTY.USER.eq(channeluserproperty.getValue(CHANNELUSERPROPERTY.USER))).and(CHANNELUSERPROPERTY.NETWORK.eq(channeluserproperty.getValue(CHANNELUSERPROPERTY.NETWORK))).and(CHANNELUSERPROPERTY.CHANNEL.eq(channeluserproperty.getValue(CHANNELUSERPROPERTY.CHANNEL))).execute();
}
public static void addChannelUserProperty(String network, String channel, String user, String property, String value) {
Registry.wavetactDB.insertInto(CHANNELUSERPROPERTY).values(network, channel, user, property, value).execute();
}
public static void removeChannelUserProperty(String network, String channel, String user, String property) {
Registry.wavetactDB.delete(CHANNELUSERPROPERTY).where(CHANNELUSERPROPERTY.PROPERTY.eq(property)).and(CHANNELUSERPROPERTY.USER.eq(user)).and(CHANNELUSERPROPERTY.NETWORK.eq(network)).and(CHANNELUSERPROPERTY.CHANNEL.eq(channel)).execute();
}
public static void removeChannelUserPropertyByNetwork(String network) {
Registry.wavetactDB.delete(CHANNELUSERPROPERTY).where(CHANNELUSERPROPERTY.NETWORK.eq(network)).execute();
}
public static void removeChannelUserPropertyByUser(String network, String user) {
Registry.wavetactDB.delete(CHANNELUSERPROPERTY).where(CHANNELUSERPROPERTY.NETWORK.eq(network)).and(CHANNELUSERPROPERTY.USER.eq(user)).execute();
}
public static Result<Record> getNetworks() {
return Registry.wavetactDB.select().from(NETWORKS).fetch();
}
public static Result<Record> getRelays() {
return Registry.wavetactDB.select().from(RELAYS).fetch();
}
public static Record getNetwork(String name) {
Result<Record> serverRecord = Registry.wavetactDB.select().from(NETWORKS).where(NETWORKS.NAME.eq(name)).fetch();
return getRecord(serverRecord);
}
public static void updateNetwork(Record server) {
Registry.wavetactDB.update(NETWORKS).set(server).where(NETWORKS.NAME.eq(server.getValue(NETWORKS.NAME))).execute();
}
public static void removeNetwork(String name) {
Registry.wavetactDB.delete(NETWORKS).where(NETWORKS.NAME.eq(name)).execute();
}
public static void addNetwork(String name, int port, String server, String nick, String channels, String bindhost, boolean netadminaccess, String networkadmins, String authtype, String nickservcommand, String serverpass, String nickservnick, boolean SSL) {
Registry.wavetactDB.insertInto(NETWORKS).values(name, port, server, nick, channels, bindhost, netadminaccess, authtype, networkadmins, nickservcommand, serverpass, nickservnick, SSL).execute();
}
public static void addTellMessage(String network, String sender, String receiver, String message) {
Registry.wavetactDB.insertInto(TELLMESSAGES).values(network, sender, receiver, message).execute();
}
public static void removeTellMessage(String network, String receiver) {
Registry.wavetactDB.delete(TELLMESSAGES).where(TELLMESSAGES.NETWORK.eq(network).and(TELLMESSAGES.RECEIVER.eq(receiver))).execute();
}
public static Result<Record> getTellMessage(String network, String receiver) {
return Registry.wavetactDB.select().from(TELLMESSAGES).where(TELLMESSAGES.NETWORK.eq(network).and(TELLMESSAGES.RECEIVER.eq(receiver))).fetch();
}
public static Record getNetworkUserProperty(String network, String user, String property) {
Result<Record> networkUserPropertyRecord = Registry.wavetactDB.select().from(NETWORKUSERPROPERTY).where(NETWORKUSERPROPERTY.PROPERTY.eq(property)).and(NETWORKUSERPROPERTY.USER.eq(user)).and(NETWORKUSERPROPERTY.NETWORK.eq(network)).fetch();
return getRecord(networkUserPropertyRecord);
}
public static void updateNetworkUserProperty(Record networkuserproperty) {
Registry.wavetactDB.update(NETWORKUSERPROPERTY).set(networkuserproperty).where(NETWORKUSERPROPERTY.PROPERTY.eq(networkuserproperty.getValue(NETWORKUSERPROPERTY.PROPERTY))).and(NETWORKUSERPROPERTY.USER.eq(networkuserproperty.getValue(NETWORKUSERPROPERTY.USER))).and(NETWORKUSERPROPERTY.NETWORK.eq(networkuserproperty.getValue(NETWORKUSERPROPERTY.NETWORK))).execute();
}
public static void addNetworkUserProperty(String network, String user, String property, String value) {
Registry.wavetactDB.insertInto(NETWORKUSERPROPERTY).values(network, user, property, value).execute();
}
public static void removeNetworkUserProperty(String network, String user, String property) {
Registry.wavetactDB.delete(NETWORKUSERPROPERTY).where(NETWORKUSERPROPERTY.PROPERTY.eq(property)).and(NETWORKUSERPROPERTY.USER.eq(user)).and(NETWORKUSERPROPERTY.NETWORK.eq(network)).execute();
}
public static void removeNetworkUserPropertyByNetwork(String network) {
Registry.wavetactDB.delete(NETWORKUSERPROPERTY).where(NETWORKUSERPROPERTY.NETWORK.eq(network)).execute();
}
public static void removeNetworkUserPropertyByUser(String network, String user) {
Registry.wavetactDB.delete(NETWORKUSERPROPERTY).where(NETWORKUSERPROPERTY.NETWORK.eq(network)).and(NETWORKUSERPROPERTY.USER.eq(user)).execute();
}
public static void addVoice(String network, String channel, String nick,long time) {
Registry.wavetactDB.insertInto(VOICES).values(nick, network, channel, time).execute();
}
public static void updateVoiceTime(Record voice) {
Registry.wavetactDB.update(VOICES).set(voice).where(VOICES.CHANNEL.eq(voice.getValue(VOICES.CHANNEL))).and(VOICES.NETWORK.eq(voice.getValue(VOICES.NETWORK))).and(VOICES.NICK.eq(voice.getValue(VOICES.NICK))).execute();
}
public static void updateVoiceNick(Record voice) {
Registry.wavetactDB.update(VOICES).set(voice).where(VOICES.CHANNEL.eq(voice.getValue(VOICES.CHANNEL))).and(VOICES.NETWORK.eq(voice.getValue(VOICES.NETWORK))).and(VOICES.TIME.eq(voice.getValue(VOICES.TIME))).execute();
}
public static void removeVoice(String network, String channel, String nick) {
Registry.wavetactDB.delete(VOICES).where(VOICES.CHANNEL.eq(channel)).and(VOICES.NETWORK.eq(network)).and(VOICES.NICK.eq(nick)).execute();
}
public static void removeVoice(String network, String nick) {
Registry.wavetactDB.delete(VOICES).where(VOICES.NETWORK.eq(network)).and(VOICES.NICK.eq(nick)).execute();
}
public static Record getVoice(String network, String channel, String nick) {
Result<Record> voiceRecord = Registry.wavetactDB.select().from(VOICES).where(VOICES.CHANNEL.eq(channel)).and(VOICES.NETWORK.eq(network)).and(VOICES.NICK.eq(nick)).fetch();
return getRecord(voiceRecord);
}
public static Result<Record> getVoicedNicks(String network, String nick) {
return Registry.wavetactDB.select().from(VOICES).where(VOICES.NICK.eq(nick)).and(VOICES.NETWORK.eq(network)).fetch();
}
public static Result<Record> getVoices(String network, String channel) {
return Registry.wavetactDB.select().from(VOICES).where(VOICES.CHANNEL.eq(channel)).and(VOICES.NETWORK.eq(network)).orderBy(VOICES.TIME.asc()).fetch();
}
public static Result<Record> getVoices() {
return Registry.wavetactDB.select().from(VOICES).orderBy(VOICES.TIME.asc()).fetch();
}
}