package com.lxyer.bbs.base; import com.arangodb.ArangoCollection; import com.arangodb.ArangoDB; import com.arangodb.ArangoDatabase; import com.lxyer.bbs.base.entity.VisLog; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestService; import org.redkale.util.AnyValue; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.Function; /** * @author: liangxianyou at 2018/11/18 9:02. */ @RestService(automapping = true, comment = "Arango服务") public class ArangoService extends BaseService { protected static final boolean winos = System.getProperty("os.name").contains("Window"); protected Function chDev = (s) -> s + (isDev ? "_dev" : ""); @Resource(name = "property.arango.host") private String arangoHost = "127.0.0.1"; @Resource(name = "property.arango.port") private int port = 8529; @Resource(name = "property.arango.database") private String database = "redbbs"; @Resource(name = "property.arango.user") private String user = "root"; @Resource(name = "property.arango.password") private String password = "root"; //日志存放doc名称 private static final String VIS_LOG = "vis_log"; //Arango protected static ArangoDB arangoDb; protected static ArangoDatabase dbDev; protected static ArangoCollection colVisLog; @Override public void init(AnyValue config) { System.out.println("isDev :" + isDev); arangoDb = new ArangoDB.Builder().host(arangoHost, port).user(user).password(password).build(); dbDev = arangoDb.db(chDev.apply(database)); colVisLog = dbDev.collection(chDev.apply(VIS_LOG)); if (!dbDev.exists()) { dbDev.create(); } if (!colVisLog.exists()) { colVisLog.create(); } } @RestMapping(auth = false) public List hi() { System.out.println("colVisLog :" + colVisLog.exists()); String aql = String.format("for d in %s limit 10 return d", chDev.apply(VIS_LOG)); List visLogs = dbDev.query(aql, Map.class).asListRemaining(); return visLogs; } public static CompletableFuture save(T t) { return CompletableFuture.supplyAsync(() -> { if (t instanceof VisLog) { colVisLog.insertDocument(t); } return t; }); } public static long findInt(String aql) { return dbDev.query(aql, long.class).first(); } public static long findInt(String aql, Map para) { return dbDev.query(aql, long.class).first(); } public static List find(String aql, Class clazz) { return dbDev.query(aql, clazz).asListRemaining(); } public static List find(String aql, Map para, Class clazz) { return dbDev.query(aql, para, clazz).asListRemaining(); } }