forked from Limework/skript-db
finish experimental (disabled) on complete of sql query event
This commit is contained in:
@@ -6,7 +6,6 @@ import org.bukkit.event.HandlerList;
|
||||
public class SQLQueryCompleteEvent extends Event {
|
||||
private final static HandlerList HANDLERS = new HandlerList();
|
||||
private String argument;
|
||||
private Object variables;
|
||||
|
||||
public SQLQueryCompleteEvent(String argument) {
|
||||
super(true);
|
||||
@@ -26,7 +25,7 @@ public class SQLQueryCompleteEvent extends Event {
|
||||
return HANDLERS;
|
||||
}
|
||||
|
||||
public String getArgument() {
|
||||
public String getQuery() {
|
||||
return argument;
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class EffExecuteStatement extends Effect {
|
||||
static {
|
||||
Skript.registerEffect(EffExecuteStatement.class,
|
||||
"execute %string% (in|on) %datasource% " +
|
||||
"[and store [[the] (output|result)[s]] (to|in) [the] [var[iable]] %-objects%]", "synchronously execute %string% (in|on) %datasource% " +
|
||||
"[and store [[the] (output|result)[s]] (to|in) [the] [var[iable]] %-objects%]", "quickly execute %string% (in|on) %datasource% " +
|
||||
"[and store [[the] (output|result)[s]] (to|in) [the] [var[iable]] %-objects%]");
|
||||
}
|
||||
|
||||
@@ -78,11 +78,13 @@ public class EffExecuteStatement extends Effect {
|
||||
DataSource ds = dataSource.getSingle(e);
|
||||
Pair<String, List<Object>> query = parseQuery(e);
|
||||
String baseVariable = var != null ? var.toString(e).toLowerCase(Locale.ENGLISH) : null;
|
||||
|
||||
//if data source isn't set
|
||||
if (ds == null) return;
|
||||
|
||||
boolean sync = false;
|
||||
|
||||
//if current thread is not main thread, then make this query to not have delays
|
||||
|
||||
if (!Bukkit.isPrimaryThread()) {
|
||||
sync = true;
|
||||
}
|
||||
@@ -113,9 +115,12 @@ public class EffExecuteStatement extends Effect {
|
||||
|
||||
//also set variables in the sql query complete event
|
||||
|
||||
SQLQueryCompleteEvent event = new SQLQueryCompleteEvent("something");
|
||||
((Map<String, Object>) res).forEach((name, value) -> setVariable(event, name, value));
|
||||
SkriptDB.getPlugin(SkriptDB.class).getServer().getPluginManager().callEvent(event);
|
||||
//TEMPORARILY DISABLED, AS THIS WOULD WORSEN PERFORMANCE OF THE QUERIES AND NOT BE USED BY MOST PEOPLE.
|
||||
//I may add config option to enable this later?
|
||||
|
||||
//SQLQueryCompleteEvent event = new SQLQueryCompleteEvent(this.query.getSingle(e));
|
||||
//((Map<String, Object>) res).forEach((name, value) -> setVariable(event, name, value));
|
||||
//SkriptDB.getPlugin(SkriptDB.class).getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
if (isSync || finalSync) {
|
||||
|
||||
|
||||
60
src/main/java/com/btk5h/skriptdb/skript/ExprSQLQuery.java
Normal file
60
src/main/java/com/btk5h/skriptdb/skript/ExprSQLQuery.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package com.btk5h.skriptdb.skript;
|
||||
|
||||
import ch.njol.skript.ScriptLoader;
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.lang.Expression;
|
||||
import ch.njol.skript.lang.ExpressionType;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import ch.njol.skript.lang.util.SimpleExpression;
|
||||
import ch.njol.skript.log.ErrorQuality;
|
||||
import ch.njol.util.Kleenean;
|
||||
import com.btk5h.skriptdb.events.SQLQueryCompleteEvent;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
/**
|
||||
* Stores the error from the last executed statement, if there was one.
|
||||
*
|
||||
* @name Last Data Source Error
|
||||
* @pattern [the] [last] (sql|db|data(base|[ ]source)) error
|
||||
* @return text
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public class ExprSQLQuery extends SimpleExpression<String> {
|
||||
static {
|
||||
Skript.registerExpression(ExprSQLQuery.class, String.class,
|
||||
ExpressionType.SIMPLE, "sql query");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected String[] get(Event e) {
|
||||
if (e instanceof SQLQueryCompleteEvent){
|
||||
return new String[]{((SQLQueryCompleteEvent) e).getQuery()};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSingle() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends String> getReturnType() {
|
||||
return String.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Event e, boolean debug) {
|
||||
return "sql query";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init(final Expression<?>[] expressions, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parseResult) {
|
||||
if (!ScriptLoader.isCurrentEvent(SQLQueryCompleteEvent.class)) {
|
||||
Skript.error("Cannot use 'sql query' outside of a complete of sql query event", ErrorQuality.SEMANTIC_ERROR);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user