use of com.bluenimble.platform.db.query.impls.JsonQuery in project serverless by bluenimble.
the class QueryEntitySpi method execute.
@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
String provider = (String) request.get(CommonSpec.Provider);
String sEntity = (String) request.get(CommonSpec.Entity);
String serializer = (String) request.get(CommonSpec.Serializer);
String[] levels = Lang.split(serializer, Lang.COMMA);
int allStopLevel = 2;
if (levels != null && levels.length > 0) {
try {
allStopLevel = Integer.valueOf(levels[0]);
} catch (Exception ex) {
}
}
int minStopLevel = 3;
if (levels != null && levels.length > 0) {
try {
minStopLevel = Integer.valueOf(levels[1]);
} catch (Exception ex) {
}
}
JsonObject payload = (JsonObject) request.get(ApiRequest.Payload);
payload.set(Database.Fields.Entity, sEntity);
ApiSpace space;
try {
space = MgmUtils.space(consumer, api);
} catch (ApiAccessDeniedException e) {
throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
}
List<DatabaseObject> records = null;
try {
Database db = space.feature(Database.class, provider, request);
records = db.find(null, new JsonQuery(payload), null);
} catch (DatabaseException e) {
throw new ApiServiceExecutionException(e.getMessage(), e);
}
JsonObject result = new JsonObject();
JsonArray aRecords = new JsonArray();
result.set(Output.Records, aRecords);
if (records == null || records.isEmpty()) {
return new JsonApiOutput(result);
}
for (int i = 0; i < records.size(); i++) {
aRecords.add(records.get(i).toJson(new DefaultDatabaseObjectSerializer(allStopLevel, minStopLevel)));
}
return new JsonApiOutput(result);
}
use of com.bluenimble.platform.db.query.impls.JsonQuery in project serverless by bluenimble.
the class ActivateServiceSpi method execute.
@Override
public ApiOutput execute(Api api, ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
JsonObject config = request.getService().getCustom();
Database db = api.space().feature(Database.class, Json.getString(config, Config.Database, ApiSpace.Features.Default), request);
DatabaseObject account = null;
try {
JsonObject query = Json.getObject(config, Config.Query);
if (query == null) {
query = new JsonObject();
JsonObject where = new JsonObject();
query.set(Query.Construct.where.name(), where);
where.set(Json.getString(config, Config.ActivationCodeProperty, Defaults.ActivationCode), request.get(Spec.ActivationCode));
}
account = db.findOne(Json.getString(config, Config.UsersEntity, Defaults.Users), new JsonQuery(query));
} catch (Exception ex) {
throw new ApiServiceExecutionException(ex.getMessage(), ex);
}
if (account == null) {
throw new ApiServiceExecutionException("account not found").status(ApiResponse.NOT_FOUND);
}
Date now = new Date();
// remove activationCode
account.remove(Json.getString(config, Config.ActivationCodeProperty, Defaults.ActivationCode));
// update lastLogin
try {
account.set(Json.getString(config, Config.LastLoginProperty, Fields.LastLogin), now);
account.save();
} catch (Exception ex) {
throw new ApiServiceExecutionException(ex.getMessage(), ex);
}
JsonObject oAccount = account.toJson(DefaultDatabaseObjectSerializer.Default);
// create token
String[] tokenAndExpiration = SecurityUtils.tokenAndExpiration(api, oAccount, now);
oAccount.remove(Json.getString(config, Config.PasswordProperty, Spec.Password));
oAccount.set(Defaults.Token, tokenAndExpiration[0]);
oAccount.set(Defaults.ExpiresOn, tokenAndExpiration[1]);
// call onFinish if any
JsonObject onFinish = Json.getObject(config, Config.onFinish.class.getSimpleName());
ApiOutput onFinishOutput = SecurityUtils.onFinish(api, consumer, request, onFinish, oAccount);
if (onFinishOutput != null) {
oAccount.set(Json.getString(onFinish, Config.onFinish.ResultProperty, Config.onFinish.class.getSimpleName()), onFinishOutput.data());
}
return new JsonApiOutput(oAccount);
}
use of com.bluenimble.platform.db.query.impls.JsonQuery in project serverless by bluenimble.
the class FindOne2One method main.
public static void main(String[] args) throws Exception {
String query = "{ }";
Database db = new DatabaseServer().get();
List<DatabaseObject> drivers = db.find("Drivers", new JsonQuery(new JsonObject(query)), null);
for (DatabaseObject driver : drivers) {
System.out.println(driver.toJson(new DefaultDatabaseObjectSerializer(2, 2)));
}
}
use of com.bluenimble.platform.db.query.impls.JsonQuery in project serverless by bluenimble.
the class Find method main.
public static void main(String[] args) throws DatabaseException {
Database db = new DatabaseServer().get();
final JsonArray records = new JsonArray();
JsonObject result = (JsonObject) new JsonObject().set("records", records);
db.find("Cities", new JsonQuery(new JsonObject()), new Database.Visitor() {
@Override
public boolean onRecord(DatabaseObject dbo) {
try {
dbo.set("org", "Labs");
dbo.save();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
records.add(dbo.toJson(null));
return false;
}
@Override
public boolean optimize() {
return true;
}
});
System.out.println(result);
}
use of com.bluenimble.platform.db.query.impls.JsonQuery in project serverless by bluenimble.
the class FindOne method main.
public static void main(String[] args) throws DatabaseException {
Database db = new DatabaseServer().get();
DatabaseObject city = db.findOne("Cities", new JsonQuery(new JsonObject()));
System.out.println(city.toJson(new DefaultDatabaseObjectSerializer(2, 2)));
}
Aggregations