Browse Source

migrate DB 37

Marino Faggiana 6 years ago
parent
commit
a12eadfc63

+ 2 - 2
iOSClient/AppDelegate.m

@@ -1511,8 +1511,8 @@
     // VERSION == 2.22.8
     if ([actualVersion isEqualToString:@"2.22.8"]) {
         
-        // Build < 19
-        if (([actualBuild compare:@"19" options:NSNumericSearch] == NSOrderedAscending) || actualBuild == nil) {
+        // Build < 37
+        if (([actualBuild compare:@"37" options:NSNumericSearch] == NSOrderedAscending) || actualBuild == nil) {
             
             NSArray *directories = [[NCManageDatabase sharedInstance] getTablesDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl != ''"] sorted:@"account" ascending:NO];
 

+ 4 - 2
iOSClient/Database/NCDatabase.swift

@@ -210,6 +210,7 @@ class tableMetadata: Object {
     @objc dynamic var fileNameView = ""
     @objc dynamic var hasPreview: Int = -1
     @objc dynamic var iconName = ""
+    @objc dynamic var metadataID = ""
     @objc dynamic var permissions = ""
     @objc dynamic var serverUrl = ""
     @objc dynamic var session = ""
@@ -222,7 +223,7 @@ class tableMetadata: Object {
     @objc dynamic var url = ""
 
     override static func primaryKey() -> String {
-        return "fileID"
+        return "metadataID"
     }
 }
 
@@ -240,6 +241,7 @@ class tablePhotos: Object {
     @objc dynamic var fileNameView = ""
     @objc dynamic var hasPreview: Int = -1
     @objc dynamic var iconName = ""
+    @objc dynamic var metadataID = ""
     @objc dynamic var permissions = ""
     @objc dynamic var serverUrl = ""
     @objc dynamic var session = ""
@@ -252,7 +254,7 @@ class tablePhotos: Object {
     @objc dynamic var url = ""
 
     override static func primaryKey() -> String {
-        return "fileID"
+        return "metadataID"
     }
 }
 

+ 19 - 5
iOSClient/Database/NCManageDatabase.swift

@@ -57,7 +57,7 @@ class NCManageDatabase: NSObject {
         let config = Realm.Configuration(
         
             fileURL: dirGroup?.appendingPathComponent("\(k_appDatabaseNextcloud)/\(k_databaseDefault)"),
-            schemaVersion: 35,
+            schemaVersion: 37,
             
             // 10 : Version 2.18.0
             // 11 : Version 2.18.2
@@ -85,13 +85,25 @@ class NCManageDatabase: NSObject {
             // 33 : Version 2.22.7.1
             // 34 : Version 2.22.8.14
             // 35 : Version 2.22.8.14
+            // 36 : Version 2.22.8.14
+            // 37 : Version 2.22.8.14
 
             migrationBlock: { migration, oldSchemaVersion in
                 // We haven’t migrated anything yet, so oldSchemaVersion == 0
-                if (oldSchemaVersion < 6) {
-                    // Nothing to do!
-                    // Realm will automatically detect new properties and removed properties
-                    // And will update the schema on disk automatically
+                if (oldSchemaVersion < 37) {
+                    migration.enumerateObjects(ofType: tableMetadata.className()) { oldObject, newObject in
+                        let account = oldObject!["account"] as! String
+                        let serverUrl = oldObject!["serverUrl"] as! String
+                        let fileName = oldObject!["fileName"] as! String
+                        newObject!["metadataID"] = CCUtility.createMetadataID(fromAccount: account, serverUrl: serverUrl, fileName: fileName)
+                    }
+                    
+                    migration.enumerateObjects(ofType: tablePhotos.className()) { oldObject, newObject in
+                        let account = oldObject!["account"] as! String
+                        let serverUrl = oldObject!["serverUrl"] as! String
+                        let fileName = oldObject!["fileName"] as! String
+                        newObject!["metadataID"] = CCUtility.createMetadataID(fromAccount: account, serverUrl: serverUrl, fileName: fileName)
+                    }
                 }
         })
 
@@ -1475,6 +1487,7 @@ class NCManageDatabase: NSObject {
         
         let serverUrl = metadata.serverUrl
         let account = metadata.account
+        metadata.metadataID = CCUtility.createMetadataID(fromAccount: metadata.account, serverUrl: metadata.serverUrl, fileName: metadata.fileName)
         
         let realm = try! Realm()
 
@@ -1505,6 +1518,7 @@ class NCManageDatabase: NSObject {
         do {
             try realm.write {
                 for metadata in metadatas {
+                    metadata.metadataID = CCUtility.createMetadataID(fromAccount: metadata.account, serverUrl: metadata.serverUrl, fileName: metadata.fileName)
                     directoryToClearDate[metadata.serverUrl] = metadata.account
                     realm.add(metadata, update: true)
                 }

+ 1 - 1
iOSClient/Utility/CCUtility.h

@@ -208,7 +208,7 @@
 + (void)writeData:(NSData *)data fileNamePath:(NSString *)fileNamePath;
 
 + (NSString *)createDirectoyIDFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl;
-+ (NSString *)createFileIDUploadFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl fileName:(NSString *)fileName;
++ (NSString *)createMetadataIDFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl fileName:(NSString *)fileName;
 
 // ===== E2E Encrypted =====
 

+ 2 - 2
iOSClient/Utility/CCUtility.m

@@ -1105,7 +1105,7 @@
 
 + (NSString *)createDirectoyIDFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl
 {
-    NSArray *arrayForbiddenCharacters = [NSArray arrayWithObjects:@"\\",@"<",@">",@":",@"\"",@"|",@"?",@"*",@"/",@" ", @".", @"-", @"@", @"_", nil];
+    NSArray *arrayForbiddenCharacters = [NSArray arrayWithObjects:@"\\",@"<",@">",@":",@"\"",@"|",@"?",@"*",@"/", nil];
     
     for (NSString *currentCharacter in arrayForbiddenCharacters) {
         account = [account stringByReplacingOccurrencesOfString:currentCharacter withString:@""];
@@ -1118,7 +1118,7 @@
     return [[account stringByAppendingString:serverUrl] lowercaseString];
 }
 
-+ (NSString *)createFileIDUploadFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl fileName:(NSString *)fileName
++ (NSString *)createMetadataIDFromAccount:(NSString *)account serverUrl:(NSString *)serverUrl fileName:(NSString *)fileName
 {
     NSString *directoryID = [self createDirectoyIDFromAccount:account serverUrl:serverUrl];