Explorar el Código

change metadata DB

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana hace 1 año
padre
commit
872dadec9d

+ 33 - 0
iOSClient/Data/NCManageDatabase+Metadata.swift

@@ -106,6 +106,7 @@ class tableMetadata: Object, NCUserBaseUrl {
     @objc dynamic var width: Int = 0
     @objc dynamic var errorCode: Int = 0
     @objc dynamic var errorCodeCounter: Int = 0
+    @objc dynamic var errorCodeDate: Date?
 
     override static func primaryKey() -> String {
         return "ocId"
@@ -662,6 +663,7 @@ extension NCManageDatabase {
                             result.errorCodeCounter = 0
                         } else {
                             result.errorCodeCounter += 1
+                            result.errorCodeDate = Date()
                         }
                     }
                 }
@@ -1217,4 +1219,35 @@ extension NCManageDatabase {
 
         return metadatas
     }
+
+    func getMetadatasInError(account: String) -> Results<tableMetadata>? {
+
+        do {
+            let realm = try Realm()
+            let results = realm.objects(tableMetadata.self).filter("account == %@ AND errorCodeCounter > 1", account)
+            return results
+        } catch let error as NSError {
+            NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
+        }
+
+        return nil
+    }
+
+    func clearErrorCodeMetadatas(metadatas: Results<tableMetadata>?) {
+
+        guard let metadatas else { return }
+
+        do {
+            let realm = try Realm()
+            try realm.write {
+                for metadata in metadatas {
+                    metadata.errorCode = 0
+                    metadata.errorCodeCounter = 0
+                    metadata.errorCodeDate = nil
+                }
+            }
+        } catch let error as NSError {
+            NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
+        }
+    }
 }

+ 6 - 4
iOSClient/Networking/NCService.swift

@@ -318,15 +318,17 @@ class NCService: NSObject {
 
     func sendClientDiagnosticsRemoteOperation(account: String) {
 
-        /*
-        if let problems = NCManageDatabase.shared.getProblems(account: account), !problems.isEmpty {
+        if let metadatas = NCManageDatabase.shared.getMetadatasInError(account: account), !metadatas.isEmpty {
             let problems = "{\"problems\":{\"conflict\":{\"count\":3,\"oldest\":1695592800},\"failed-upload\":{\"count\":1,\"oldest\":1695592900}}}"
+
+            
+
+
             NextcloudKit.shared.sendClientDiagnosticsRemoteOperation(problems: problems) { _, error in
                 if error == .success {
-                    NCManageDatabase.shared.deleteProblems(account: account)
+                    NCManageDatabase.shared.clearErrorCodeMetadatas(metadatas: metadatas)
                 }
             }
         }
-        */
     }
 }