mirror of
https://github.com/status-im/realm-js.git
synced 2025-01-11 14:54:33 +00:00
rpc implementation for results
This commit is contained in:
parent
0c4d8c06df
commit
a0f098bff3
@ -90,6 +90,47 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
s_objects.erase(oid);
|
s_objects.erase(oid);
|
||||||
return "";
|
return "";
|
||||||
};
|
};
|
||||||
|
s_requests["/get_objects"] = [=](NSDictionary *dict) {
|
||||||
|
RPCObjectID newOid = s_id_counter++;
|
||||||
|
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
||||||
|
|
||||||
|
JSValueRef arguments[2];
|
||||||
|
long argumentCount = 1;
|
||||||
|
arguments[0] = RJSValueForString(s_context, [dict[@"type"] UTF8String]);
|
||||||
|
|
||||||
|
NSString *query = dict[@"predicate"];
|
||||||
|
if (query) {
|
||||||
|
arguments[1] = RJSValueForString(s_context, query.UTF8String);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSValueRef exception = NULL;
|
||||||
|
JSValueRef results = RealmObjects(s_context, NULL, s_objects[realmId], argumentCount, arguments, &exception);
|
||||||
|
JSValueProtect(s_context, results);
|
||||||
|
s_objects[newOid] = (JSObjectRef)results;
|
||||||
|
return "{\"resultsId\":" + std::to_string(realmId) + "}";
|
||||||
|
};
|
||||||
|
s_requests["/get_results_size"] = [=](NSDictionary *dict) {
|
||||||
|
RPCObjectID resultsId = [dict[@"resultsId"] longValue];
|
||||||
|
|
||||||
|
JSValueRef exception = NULL;
|
||||||
|
static JSStringRef lengthPropertyName = JSStringCreateWithUTF8CString("length");
|
||||||
|
JSValueRef lengthValue = ResultsGetProperty(s_context, s_objects[resultsId], lengthPropertyName, &exception);
|
||||||
|
return "{\"result\":" + std::to_string(JSValueToNumber(s_context, lengthValue, &exception)) + "}";
|
||||||
|
};
|
||||||
|
s_requests["/get_results_item"] = [=](NSDictionary *dict) {
|
||||||
|
RPCObjectID resultsId = [dict[@"resultsId"] longValue];
|
||||||
|
long index = [dict[@"index"] longValue];
|
||||||
|
|
||||||
|
JSValueRef exception = NULL;
|
||||||
|
JSStringRef indexPropertyName = JSStringCreateWithUTF8CString(std::to_string(index).c_str());
|
||||||
|
JSValueRef objectValue = ResultsGetProperty(s_context, s_objects[resultsId], indexPropertyName, &exception);
|
||||||
|
JSStringRelease(indexPropertyName);
|
||||||
|
|
||||||
|
RPCObjectID newOid = s_id_counter++;
|
||||||
|
JSValueProtect(s_context, objectValue);
|
||||||
|
s_objects[newOid] = (JSObjectRef)objectValue;
|
||||||
|
return "{\"result\":" + std::to_string(newOid) + "}";
|
||||||
|
};
|
||||||
|
|
||||||
// Add a handler to respond to GET requests on any URL
|
// Add a handler to respond to GET requests on any URL
|
||||||
[webServer addDefaultHandlerForMethod:@"POST"
|
[webServer addDefaultHandlerForMethod:@"POST"
|
||||||
|
@ -26,4 +26,5 @@ std::string RJSDefaultPath();
|
|||||||
void RJSSetDefaultPath(std::string path);
|
void RJSSetDefaultPath(std::string path);
|
||||||
|
|
||||||
JSObjectRef RealmConstructor(JSContextRef ctx, JSObjectRef constructor, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
JSObjectRef RealmConstructor(JSContextRef ctx, JSObjectRef constructor, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
||||||
JSValueRef RealmCreateObject(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
JSValueRef RealmCreateObject(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
||||||
|
JSValueRef RealmObjects(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
@ -27,4 +27,5 @@ JSClassRef RJSResultsClass();
|
|||||||
JSObjectRef RJSResultsCreate(JSContextRef ctx, realm::SharedRealm realm, std::string className);
|
JSObjectRef RJSResultsCreate(JSContextRef ctx, realm::SharedRealm realm, std::string className);
|
||||||
JSObjectRef RJSResultsCreate(JSContextRef ctx, realm::SharedRealm realm, std::string className, std::string query);
|
JSObjectRef RJSResultsCreate(JSContextRef ctx, realm::SharedRealm realm, std::string className, std::string query);
|
||||||
|
|
||||||
JSObjectRef RealmConstructor(JSContextRef ctx, JSObjectRef constructor, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException);
|
JSValueRef ResultsGetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* jsException);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user