mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-23 11:48:17 +00:00
serialize Results like other types, use common method rpc call for objects()
This commit is contained in:
parent
ed3cf01432
commit
afa974ccc6
@ -112,24 +112,6 @@ static JSGlobalContextRef s_context;
|
|||||||
s_objects.erase(oid);
|
s_objects.erase(oid);
|
||||||
return @{};
|
return @{};
|
||||||
};
|
};
|
||||||
s_requests["/get_objects"] = [=](NSDictionary *dict) {
|
|
||||||
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);
|
|
||||||
RPCObjectID resultsId = [self storeObject:(JSObjectRef)results];
|
|
||||||
size_t size = RJSGetInternal<realm::Results *>((JSObjectRef)results)->size();
|
|
||||||
return @{@"result": @{@"resultsId": @(resultsId), @"size": @(size)}};
|
|
||||||
};
|
|
||||||
s_requests["/get_results_size"] = [=](NSDictionary *dict) {
|
s_requests["/get_results_size"] = [=](NSDictionary *dict) {
|
||||||
RPCObjectID resultsId = [dict[@"resultsId"] longValue];
|
RPCObjectID resultsId = [dict[@"resultsId"] longValue];
|
||||||
|
|
||||||
@ -273,6 +255,15 @@ static JSGlobalContextRef s_context;
|
|||||||
@"schema": [self objectSchemaToJSONObject:array->object_schema]
|
@"schema": [self objectSchemaToJSONObject:array->object_schema]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
else if (JSValueIsObjectOfClass(s_context, value, RJSResultsClass())) {
|
||||||
|
realm::Results *results = RJSGetInternal<realm::Results *>(jsObject);
|
||||||
|
return @{
|
||||||
|
@"type": @"PrivateTypesRESULTS",
|
||||||
|
@"resultsId": @(oid),
|
||||||
|
@"size": @(results->size()),
|
||||||
|
@"schema": [self objectSchemaToJSONObject:results->object_schema]
|
||||||
|
};
|
||||||
|
}
|
||||||
else if (RJSIsValueArray(s_context, value)) {
|
else if (RJSIsValueArray(s_context, value)) {
|
||||||
JSObjectRef jsObject = JSValueToObject(s_context, value, NULL);
|
JSObjectRef jsObject = JSValueToObject(s_context, value, NULL);
|
||||||
size_t length = RJSValidatedArrayLength(s_context, jsObject);
|
size_t length = RJSValidatedArrayLength(s_context, jsObject);
|
||||||
|
@ -13,6 +13,7 @@ let realmKey = util.realmKey;
|
|||||||
rpc.registerTypeConverter(types.DATE, (_, info) => new Date(info.value));
|
rpc.registerTypeConverter(types.DATE, (_, info) => new Date(info.value));
|
||||||
rpc.registerTypeConverter(types.LIST, lists.create);
|
rpc.registerTypeConverter(types.LIST, lists.create);
|
||||||
rpc.registerTypeConverter(types.OBJECT, objects.create);
|
rpc.registerTypeConverter(types.OBJECT, objects.create);
|
||||||
|
rpc.registerTypeConverter(types.RESULTS, results.create);
|
||||||
|
|
||||||
class Realm {
|
class Realm {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
@ -38,13 +39,6 @@ class Realm {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
objects(type, predicate) {
|
|
||||||
let realmId = this[realmKey];
|
|
||||||
let info = rpc.getObjects(realmId, type, predicate);
|
|
||||||
|
|
||||||
return results.create(realmId, info);
|
|
||||||
}
|
|
||||||
|
|
||||||
write(callback) {
|
write(callback) {
|
||||||
if (typeof callback != 'function')
|
if (typeof callback != 'function')
|
||||||
throw new TypeError('Realm.write() must be passed a function!');
|
throw new TypeError('Realm.write() must be passed a function!');
|
||||||
@ -66,6 +60,7 @@ class Realm {
|
|||||||
'create',
|
'create',
|
||||||
'delete',
|
'delete',
|
||||||
'deleteAll',
|
'deleteAll',
|
||||||
|
'objects',
|
||||||
].forEach(function(name) {
|
].forEach(function(name) {
|
||||||
Object.defineProperty(Realm.prototype, name, {
|
Object.defineProperty(Realm.prototype, name, {
|
||||||
value: function() {
|
value: function() {
|
||||||
|
@ -21,7 +21,6 @@ exports.registerTypeConverter = registerTypeConverter;
|
|||||||
|
|
||||||
exports.createRealm = createRealm;
|
exports.createRealm = createRealm;
|
||||||
exports.callRealmMethod = callRealmMethod;
|
exports.callRealmMethod = callRealmMethod;
|
||||||
exports.getObjects = getObjects;
|
|
||||||
|
|
||||||
exports.getObjectProperty = getObjectProperty;
|
exports.getObjectProperty = getObjectProperty;
|
||||||
exports.setObjectProperty = setObjectProperty;
|
exports.setObjectProperty = setObjectProperty;
|
||||||
@ -55,10 +54,6 @@ function callRealmMethod(realmId, name, args) {
|
|||||||
return deserialize(realmId, result);
|
return deserialize(realmId, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getObjects(realmId, type, predicate) {
|
|
||||||
return sendRequest('get_objects', {realmId, type, predicate});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getObjectProperty(realmId, objectId, name) {
|
function getObjectProperty(realmId, objectId, name) {
|
||||||
let result = sendRequest('get_property', {realmId, objectId, name});
|
let result = sendRequest('get_property', {realmId, objectId, name});
|
||||||
return deserialize(realmId, result);
|
return deserialize(realmId, result);
|
||||||
|
@ -16,4 +16,6 @@ let types = {};
|
|||||||
types[type] = 'PropTypes' + type;
|
types[type] = 'PropTypes' + type;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
types['RESULTS'] = 'PrivateTypesRESULTS';
|
||||||
|
|
||||||
module.exports = Object.freeze(types);
|
module.exports = Object.freeze(types);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user