Add objectSchema method to Realm Object (#1055)
* Add objectSchema property to Realm Object * fix
This commit is contained in:
parent
28fe678a1b
commit
37dba6bb36
|
@ -30,6 +30,7 @@ export default class RealmObject {
|
||||||
// Non-mutating methods:
|
// Non-mutating methods:
|
||||||
createMethods(RealmObject.prototype, objectTypes.OBJECT, [
|
createMethods(RealmObject.prototype, objectTypes.OBJECT, [
|
||||||
'isValid',
|
'isValid',
|
||||||
|
'objectSchema'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
export function clearRegisteredConstructors() {
|
export function clearRegisteredConstructors() {
|
||||||
|
|
|
@ -18,12 +18,13 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "object_accessor.hpp"
|
||||||
|
#include "object_store.hpp"
|
||||||
|
|
||||||
#include "js_class.hpp"
|
#include "js_class.hpp"
|
||||||
#include "js_types.hpp"
|
#include "js_types.hpp"
|
||||||
#include "js_util.hpp"
|
#include "js_util.hpp"
|
||||||
|
#include "js_schema.hpp"
|
||||||
#include "object_accessor.hpp"
|
|
||||||
#include "object_store.hpp"
|
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
namespace js {
|
namespace js {
|
||||||
|
@ -49,6 +50,7 @@ struct RealmObjectClass : ClassDefinition<T, realm::Object> {
|
||||||
static std::vector<String> get_property_names(ContextType, ObjectType);
|
static std::vector<String> get_property_names(ContextType, ObjectType);
|
||||||
|
|
||||||
static void is_valid(ContextType, FunctionType, ObjectType, size_t, const ValueType [], ReturnValue &);
|
static void is_valid(ContextType, FunctionType, ObjectType, size_t, const ValueType [], ReturnValue &);
|
||||||
|
static void get_object_schema(ContextType, FunctionType, ObjectType, size_t, const ValueType [], ReturnValue &);
|
||||||
|
|
||||||
const std::string name = "RealmObject";
|
const std::string name = "RealmObject";
|
||||||
|
|
||||||
|
@ -60,6 +62,7 @@ struct RealmObjectClass : ClassDefinition<T, realm::Object> {
|
||||||
|
|
||||||
MethodMap<T> const methods = {
|
MethodMap<T> const methods = {
|
||||||
{"isValid", wrap<is_valid>},
|
{"isValid", wrap<is_valid>},
|
||||||
|
{"objectSchema", wrap<get_object_schema>},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,6 +71,12 @@ void RealmObjectClass<T>::is_valid(ContextType ctx, FunctionType, ObjectType thi
|
||||||
return_value.set(get_internal<T, RealmObjectClass<T>>(this_object)->is_valid());
|
return_value.set(get_internal<T, RealmObjectClass<T>>(this_object)->is_valid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void RealmObjectClass<T>::get_object_schema(ContextType ctx, FunctionType, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) {
|
||||||
|
auto object = get_internal<T, RealmObjectClass<T>>(this_object);
|
||||||
|
return_value.set(Schema<T>::object_for_object_schema(ctx, object->get_object_schema()));
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
typename T::Object RealmObjectClass<T>::create_instance(ContextType ctx, realm::Object realm_object) {
|
typename T::Object RealmObjectClass<T>::create_instance(ContextType ctx, realm::Object realm_object) {
|
||||||
static String prototype_string = "prototype";
|
static String prototype_string = "prototype";
|
||||||
|
|
|
@ -471,6 +471,19 @@ module.exports = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
testObjectSchema: function() {
|
||||||
|
var realm = new Realm({schema: [schemas.TestObject]});
|
||||||
|
var obj;
|
||||||
|
realm.write(function() {
|
||||||
|
obj = realm.create('TestObject', {doubleCol: 1});
|
||||||
|
});
|
||||||
|
|
||||||
|
const schema = obj.objectSchema();
|
||||||
|
TestCase.assertEqual(schema.name, schemas.TestObject.name);
|
||||||
|
TestCase.assertArraysEqual(Object.keys(schema.properties), Object.keys(schemas.TestObject.properties));
|
||||||
|
TestCase.assertEqual(schema.properties.doubleCol.type, 'double');
|
||||||
|
},
|
||||||
|
|
||||||
testIgnoredProperties: function() {
|
testIgnoredProperties: function() {
|
||||||
var realm = new Realm({schema: [schemas.TestObject]});
|
var realm = new Realm({schema: [schemas.TestObject]});
|
||||||
var obj;
|
var obj;
|
||||||
|
|
Loading…
Reference in New Issue