realm-object-server icon indicating copy to clipboard operation
realm-object-server copied to clipboard

Documentation - Migration to Cloud Example

Open duncangroenewald opened this issue 4 years ago • 5 comments

Goals

Migrate local realm to cloud

Expected Results

Sample code should compile

Actual Results

It seems the sample code is using outdated API's

#import "AppDelegate.h"

@import Realm; @import Realm.Dynamic; @import Realm.Private;

@interface AppDelegate ()

@end

@implementation AppDelegate

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSString *sourceFilePath = [[NSBundle mainBundle] pathForResource:@"fieldFlow" ofType:@"realm"];

    RLMRealmConfiguration *configuration = [[RLMRealmConfiguration alloc] init]; configuration.fileURL = [NSURL URLWithString:sourceFilePath]; configuration.dynamic = true; configuration.readOnly = YES;

    RLMRealm *localRealm = [RLMRealm realmWithConfiguration:configuration error:nil];

    RLMSyncCredentials *creds = [RLMSyncCredentials credentialsWithUsername:@"[email protected]" password:@"password" register:NO]; [RLMSyncUser logInWithCredentials:creds authServerURL:[NSURL URLWithString:@"http://localhost:9080"] onCompletion:^(RLMSyncUser *syncUser, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ [self copyToSyncRealmWithRealm: localRealm user:syncUser]; }); }];

    return YES; }

  • (void)copyToSyncRealmWithRealm:(RLMRealm *)realm user:(RLMSyncUser *)user { RLMRealmConfiguration *syncConfig = [[RLMRealmConfiguration alloc] init]; syncConfig.syncConfiguration = [[RLMSyncConfiguration alloc] initWithUser:user realmURL:[NSURL URLWithString:@"realm://localhost:9080/~/fieldRow"]]; syncConfig.customSchema = [realm.schema copy];

    RLMRealm *syncRealm = [RLMRealm realmWithConfiguration:syncConfig error:nil]; syncRealm.schema = syncConfig.customSchema;

    [syncRealm transactionWithBlock:^{ NSArray *objectSchema = syncConfig.customSchema.objectSchema; for (RLMObjectSchema *schema in objectSchema) { RLMResults *allObjects = [realm allObjects:schema.className]; for (RLMObject *object in allObjects) { RLMCreateObjectInRealmWithValue(syncRealm, schema.className, object, true); } } }]; }

@end

Would someone mind updating the documentation to reflect the current APIs.

duncangroenewald avatar Jul 18 '19 22:07 duncangroenewald

I Cannot even access the realmserver documentation at https://docs.realm.io/server/ Now redirects to https://app.gitbook.com/@realm/s/server/ which says the following:

This space is private You are not a member of the Realm organization, or you don't have permissions to access this space.

Please assist as we want to migrate and start using Realm Cloud as soon as possible.

gta-kkalchev avatar Oct 23 '19 08:10 gta-kkalchev

@gta-kkalchev Where did you see the link to https://docs.realm.io/server/? The Server docs are only for self-hosting. You should be able to use Cloud without any information from there. Are you missing something specific?

bmunkholm avatar Oct 23 '19 13:10 bmunkholm

@bmunkholm Thanks for your response, I was looking for documentation on how to migrate from selfhosted server to cloud platform. I don't have any experience with realm server, and couldn't find detailed docs on how to achieve my task. Any pointers are appreciated

gta-kkalchev avatar Oct 25 '19 07:10 gta-kkalchev

@gta-kkalchev If you are self-hosted I would reach out to your account manager and ask for guidance.

cc @terakilobyte @cbush

bmunkholm avatar Nov 01 '19 11:11 bmunkholm

@gta-kkalchev - is there any reason you can't just do a local backup from a client connected to your self hosted server and then use the javascript migration code to load the backup database file to the cloud server ? I have used the script to migrate from a local database to a cloud based development instance and then used the above procedure to backup the development instance and migrate that to production during the initial go-live. Initially we were worried about references not being retained but the migration script seemed to work perfectly well. Just make sure you allow enough time for the migration script to run and for the local realm service to complete syncing with the cloud server because the script just creates a local database and realm handles the syncing to the server.

duncangroenewald avatar Nov 04 '19 00:11 duncangroenewald