mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-18 17:47:32 +00:00
Enable building without sync
This is needed because the linux node binding needs to work without sync
This commit is contained in:
parent
d5cd3d7266
commit
ba48933561
21
binding.gyp
21
binding.gyp
@ -32,7 +32,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"target_name": "object-store",
|
"target_name": "object-store",
|
||||||
"dependencies": [ "realm-core", "realm-sync" ],
|
"dependencies": [ "realm-core" ],
|
||||||
"type": "static_library",
|
"type": "static_library",
|
||||||
"include_dirs": [
|
"include_dirs": [
|
||||||
"src/object-store/src",
|
"src/object-store/src",
|
||||||
@ -63,12 +63,6 @@
|
|||||||
"src/object-store/src/parser/query_builder.cpp",
|
"src/object-store/src/parser/query_builder.cpp",
|
||||||
"src/object-store/src/util/format.cpp",
|
"src/object-store/src/util/format.cpp",
|
||||||
"src/object-store/src/util/thread_id.cpp",
|
"src/object-store/src/util/thread_id.cpp",
|
||||||
"src/object-store/src/sync/sync_manager.cpp",
|
|
||||||
"src/object-store/src/sync/sync_user.cpp",
|
|
||||||
"src/object-store/src/sync/sync_session.cpp",
|
|
||||||
"src/object-store/src/sync/impl/sync_file.cpp",
|
|
||||||
"src/object-store/src/sync/impl/sync_metadata.cpp",
|
|
||||||
"src/object-store/src/impl/apple/keychain_helper.cpp"
|
|
||||||
],
|
],
|
||||||
"conditions": [
|
"conditions": [
|
||||||
["OS=='linux'", {
|
["OS=='linux'", {
|
||||||
@ -80,10 +74,21 @@
|
|||||||
"sources": [
|
"sources": [
|
||||||
"src/object-store/src/impl/apple/external_commit_helper.cpp"
|
"src/object-store/src/impl/apple/external_commit_helper.cpp"
|
||||||
]
|
]
|
||||||
|
}],
|
||||||
|
["realm_enable_sync", {
|
||||||
|
"dependencies": [ "realm-sync" ],
|
||||||
|
"sources": [
|
||||||
|
"src/object-store/src/sync/sync_manager.cpp",
|
||||||
|
"src/object-store/src/sync/sync_user.cpp",
|
||||||
|
"src/object-store/src/sync/sync_session.cpp",
|
||||||
|
"src/object-store/src/sync/impl/sync_file.cpp",
|
||||||
|
"src/object-store/src/sync/impl/sync_metadata.cpp",
|
||||||
|
"src/object-store/src/impl/apple/keychain_helper.cpp"
|
||||||
|
],
|
||||||
}]
|
}]
|
||||||
],
|
],
|
||||||
"all_dependent_settings": {
|
"all_dependent_settings": {
|
||||||
"include_dirs": [
|
"include_dirs": [
|
||||||
"src/object-store/src",
|
"src/object-store/src",
|
||||||
"src/object-store/src/impl",
|
"src/object-store/src/impl",
|
||||||
"src/object-store/src/impl/apple",
|
"src/object-store/src/impl/apple",
|
||||||
|
@ -178,17 +178,17 @@ public:
|
|||||||
static void set_default_path(ContextType, ObjectType, ValueType value);
|
static void set_default_path(ContextType, ObjectType, ValueType value);
|
||||||
|
|
||||||
std::string const name = "Realm";
|
std::string const name = "Realm";
|
||||||
|
|
||||||
MethodMap<T> const static_methods = {
|
MethodMap<T> const static_methods = {
|
||||||
{"schemaVersion", wrap<schema_version>},
|
{"schemaVersion", wrap<schema_version>},
|
||||||
{"clearTestState", wrap<clear_test_state>},
|
{"clearTestState", wrap<clear_test_state>},
|
||||||
{"copyBundledRealmFiles", wrap<copy_bundled_realm_files>},
|
{"copyBundledRealmFiles", wrap<copy_bundled_realm_files>},
|
||||||
};
|
};
|
||||||
|
|
||||||
PropertyMap<T> const static_properties = {
|
PropertyMap<T> const static_properties = {
|
||||||
{"defaultPath", {wrap<get_default_path>, wrap<set_default_path>}},
|
{"defaultPath", {wrap<get_default_path>, wrap<set_default_path>}},
|
||||||
};
|
};
|
||||||
|
|
||||||
MethodMap<T> const methods = {
|
MethodMap<T> const methods = {
|
||||||
{"objects", wrap<objects>},
|
{"objects", wrap<objects>},
|
||||||
{"objectForPrimaryKey", wrap<object_for_primary_key>},
|
{"objectForPrimaryKey", wrap<object_for_primary_key>},
|
||||||
@ -201,14 +201,14 @@ public:
|
|||||||
{"removeAllListeners", wrap<remove_all_listeners>},
|
{"removeAllListeners", wrap<remove_all_listeners>},
|
||||||
{"close", wrap<close>},
|
{"close", wrap<close>},
|
||||||
};
|
};
|
||||||
|
|
||||||
PropertyMap<T> const properties = {
|
PropertyMap<T> const properties = {
|
||||||
{"path", {wrap<get_path>, nullptr}},
|
{"path", {wrap<get_path>, nullptr}},
|
||||||
{"schemaVersion", {wrap<get_schema_version>, nullptr}},
|
{"schemaVersion", {wrap<get_schema_version>, nullptr}},
|
||||||
{"schema", {wrap<get_schema>, nullptr}},
|
{"schema", {wrap<get_schema>, nullptr}},
|
||||||
{"readOnly", {wrap<get_read_only>, nullptr}},
|
{"readOnly", {wrap<get_read_only>, nullptr}},
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::string validated_notification_name(ContextType ctx, const ValueType &value) {
|
static std::string validated_notification_name(ContextType ctx, const ValueType &value) {
|
||||||
std::string name = Value::validated_to_string(ctx, value, "notification name");
|
std::string name = Value::validated_to_string(ctx, value, "notification name");
|
||||||
@ -217,13 +217,13 @@ public:
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const ObjectSchema& validated_object_schema_for_value(ContextType ctx, const SharedRealm &realm, const ValueType &value) {
|
static const ObjectSchema& validated_object_schema_for_value(ContextType ctx, const SharedRealm &realm, const ValueType &value) {
|
||||||
std::string object_type;
|
std::string object_type;
|
||||||
|
|
||||||
if (Value::is_constructor(ctx, value)) {
|
if (Value::is_constructor(ctx, value)) {
|
||||||
FunctionType constructor = Value::to_constructor(ctx, value);
|
FunctionType constructor = Value::to_constructor(ctx, value);
|
||||||
|
|
||||||
auto delegate = get_delegate<T>(realm.get());
|
auto delegate = get_delegate<T>(realm.get());
|
||||||
for (auto &pair : delegate->m_constructors) {
|
for (auto &pair : delegate->m_constructors) {
|
||||||
if (FunctionType(pair.second) == constructor) {
|
if (FunctionType(pair.second) == constructor) {
|
||||||
@ -248,7 +248,7 @@ public:
|
|||||||
}
|
}
|
||||||
return *object_schema;
|
return *object_schema;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string normalize_path(std::string path) {
|
static std::string normalize_path(std::string path) {
|
||||||
if (path.size() && path[0] != '/' && path[0] != '.') {
|
if (path.size() && path[0] != '/' && path[0] != '.') {
|
||||||
return default_realm_file_directory() + "/" + path;
|
return default_realm_file_directory() + "/" + path;
|
||||||
@ -282,7 +282,7 @@ inline typename T::Function RealmClass<T>::create_constructor(ContextType ctx) {
|
|||||||
s_constructor = Protected<FunctionType>(ctx, realm_constructor);
|
s_constructor = Protected<FunctionType>(ctx, realm_constructor);
|
||||||
return realm_constructor;
|
return realm_constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void convert_outdated_datetime_columns(const SharedRealm &realm) {
|
static inline void convert_outdated_datetime_columns(const SharedRealm &realm) {
|
||||||
realm::util::Optional<int> old_file_format_version = realm->file_format_upgraded_from_version();
|
realm::util::Optional<int> old_file_format_version = realm->file_format_upgraded_from_version();
|
||||||
if (old_file_format_version && old_file_format_version < 5) {
|
if (old_file_format_version && old_file_format_version < 5) {
|
||||||
@ -294,7 +294,7 @@ static inline void convert_outdated_datetime_columns(const SharedRealm &realm) {
|
|||||||
if (!realm->is_in_transaction()) {
|
if (!realm->is_in_transaction()) {
|
||||||
realm->begin_transaction();
|
realm->begin_transaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t row_index = 0; row_index < table->size(); row_index++) {
|
for (size_t row_index = 0; row_index < table->size(); row_index++) {
|
||||||
if (table->is_null(property.table_column, row_index)) {
|
if (table->is_null(property.table_column, row_index)) {
|
||||||
continue;
|
continue;
|
||||||
@ -337,7 +337,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
else {
|
else {
|
||||||
config.path = js::default_path();
|
config.path = js::default_path();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const String read_only_string = "readOnly";
|
static const String read_only_string = "readOnly";
|
||||||
ValueType read_only_value = Object::get_property(ctx, object, read_only_string);
|
ValueType read_only_value = Object::get_property(ctx, object, read_only_string);
|
||||||
if (!Value::is_undefined(ctx, read_only_value) && Value::validated_to_boolean(ctx, read_only_value, "readOnly")) {
|
if (!Value::is_undefined(ctx, read_only_value) && Value::validated_to_boolean(ctx, read_only_value, "readOnly")) {
|
||||||
@ -372,7 +372,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
create_object<T, RealmClass<T>>(ctx, old_realm_ptr),
|
create_object<T, RealmClass<T>>(ctx, old_realm_ptr),
|
||||||
create_object<T, RealmClass<T>>(ctx, realm_ptr)
|
create_object<T, RealmClass<T>>(ctx, realm_ptr)
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Function<T>::call(ctx, migration_function, 2, arguments);
|
Function<T>::call(ctx, migration_function, 2, arguments);
|
||||||
}
|
}
|
||||||
@ -382,7 +382,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
realm_ptr->reset();
|
realm_ptr->reset();
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_realm->close();
|
old_realm->close();
|
||||||
old_realm_ptr->reset();
|
old_realm_ptr->reset();
|
||||||
realm_ptr->reset();
|
realm_ptr->reset();
|
||||||
@ -403,7 +403,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
else {
|
else {
|
||||||
throw std::runtime_error("Invalid arguments when constructing 'Realm'");
|
throw std::runtime_error("Invalid arguments when constructing 'Realm'");
|
||||||
}
|
}
|
||||||
|
|
||||||
config.path = normalize_path(config.path);
|
config.path = normalize_path(config.path);
|
||||||
ensure_directory_exists_for_file(config.path);
|
ensure_directory_exists_for_file(config.path);
|
||||||
|
|
||||||
@ -425,7 +425,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
js_binding_context->m_defaults = std::move(defaults);
|
js_binding_context->m_defaults = std::move(defaults);
|
||||||
js_binding_context->m_constructors = std::move(constructors);
|
js_binding_context->m_constructors = std::move(constructors);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix for datetime -> timestamp conversion
|
// Fix for datetime -> timestamp conversion
|
||||||
convert_outdated_datetime_columns(realm);
|
convert_outdated_datetime_columns(realm);
|
||||||
|
|
||||||
@ -435,7 +435,7 @@ void RealmClass<T>::constructor(ContextType ctx, ObjectType this_object, size_t
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
void RealmClass<T>::schema_version(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) {
|
void RealmClass<T>::schema_version(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) {
|
||||||
validate_argument_count(argc, 1, 2);
|
validate_argument_count(argc, 1, 2);
|
||||||
|
|
||||||
realm::Realm::Config config;
|
realm::Realm::Config config;
|
||||||
config.path = normalize_path(Value::validated_to_string(ctx, arguments[0]));
|
config.path = normalize_path(Value::validated_to_string(ctx, arguments[0]));
|
||||||
if (argc == 2) {
|
if (argc == 2) {
|
||||||
@ -443,7 +443,7 @@ void RealmClass<T>::schema_version(ContextType ctx, ObjectType this_object, size
|
|||||||
std::string encryptionKey = NativeAccessor::to_binary(ctx, encryptionKeyValue);
|
std::string encryptionKey = NativeAccessor::to_binary(ctx, encryptionKeyValue);
|
||||||
config.encryption_key = std::vector<char>(encryptionKey.begin(), encryptionKey.end());
|
config.encryption_key = std::vector<char>(encryptionKey.begin(), encryptionKey.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
auto version = realm::Realm::get_schema_version(config);
|
auto version = realm::Realm::get_schema_version(config);
|
||||||
if (version == ObjectStore::NotVersioned) {
|
if (version == ObjectStore::NotVersioned) {
|
||||||
return_value.set(-1);
|
return_value.set(-1);
|
||||||
@ -453,12 +453,15 @@ void RealmClass<T>::schema_version(ContextType ctx, ObjectType this_object, size
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void RealmClass<T>::clear_test_state(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) {
|
void RealmClass<T>::clear_test_state(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) {
|
||||||
validate_argument_count(argc, 0);
|
validate_argument_count(argc, 0);
|
||||||
|
#if REALM_ENABLE_SYNC
|
||||||
for(auto &user : SyncManager::shared().all_users()) {
|
for(auto &user : SyncManager::shared().all_users()) {
|
||||||
user->log_out();
|
user->log_out();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
delete_all_realms();
|
delete_all_realms();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"all_dependent_settings": {
|
"all_dependent_settings": {
|
||||||
"defines": [ "REALM_HAVE_CONFIG", "REALM_PLATFORM_NODE=1", "REALM_ENABLE_SYNC=1" ]
|
"defines": [ "REALM_HAVE_CONFIG", "REALM_PLATFORM_NODE=1", "REALM_ENABLE_SYNC=<(realm_enable_sync)" ]
|
||||||
},
|
},
|
||||||
"variables": {
|
"variables": {
|
||||||
"prefix": "<!(echo $REALM_CORE_PREFIX)"
|
"prefix": "<!(echo $REALM_CORE_PREFIX)"
|
||||||
@ -93,7 +93,7 @@
|
|||||||
]
|
]
|
||||||
}]
|
}]
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user