NCManageDatabase.swift 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. //
  2. // NCManageDatabase.swift
  3. // Nextcloud
  4. //
  5. // Created by Marino Faggiana on 06/05/17.
  6. // Copyright © 2017 TWS. All rights reserved.
  7. //
  8. import RealmSwift
  9. class NCManageDatabase: NSObject {
  10. static let sharedInstance: NCManageDatabase = {
  11. let instance = NCManageDatabase()
  12. return instance
  13. }()
  14. override init() {
  15. let dirGroup = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: k_capabilitiesGroups)
  16. var config = Realm.Configuration()
  17. config.fileURL = dirGroup?.appendingPathComponent("\(appDatabaseNextcloud)/\(k_databaseDefault)")
  18. Realm.Configuration.defaultConfiguration = config
  19. }
  20. func clearDB(_ table : Object.Type, account: String?) {
  21. let results : Results<Object>
  22. let realm = try! Realm()
  23. if (account != nil) {
  24. results = realm.objects(table).filter("account = \(account!)")
  25. } else {
  26. results = realm.objects(table)
  27. }
  28. try! realm.write {
  29. realm.delete(results)
  30. }
  31. }
  32. func addActivityServer(_ listOfActivity: [OCActivity], account: String) {
  33. let realm = try! Realm()
  34. try! realm.write {
  35. for activity in listOfActivity {
  36. // Verify
  37. let records = realm.objects(DBActivity.self).filter("idActivity = \(activity.idActivity)")
  38. if (records.count > 0) {
  39. continue
  40. }
  41. // Add new Activity
  42. let dbActivity = DBActivity()
  43. dbActivity.account = account
  44. dbActivity.date = activity.date
  45. dbActivity.idActivity = Double(activity.idActivity)
  46. dbActivity.link = activity.link
  47. dbActivity.note = activity.subject
  48. dbActivity.type = k_activityTypeInfo
  49. realm.add(dbActivity)
  50. }
  51. }
  52. }
  53. func addActivityClient(_ file: String, fileID: String, action: String, selector: String, note: String, type: String, verbose: Bool, account: String?, activeUrl: String?) {
  54. var noteReplacing : String = ""
  55. if (activeUrl != nil) {
  56. noteReplacing = note.replacingOccurrences(of: "\(activeUrl!)\(webDAV)", with: "")
  57. }
  58. noteReplacing = note.replacingOccurrences(of: "\(k_domain_session_queue).", with: "")
  59. let realm = try! Realm()
  60. try! realm.write {
  61. // Add new Activity
  62. let dbActivity = DBActivity()
  63. if (account != nil) {
  64. dbActivity.account = account!
  65. }
  66. dbActivity.action = action
  67. dbActivity.file = file
  68. dbActivity.fileID = fileID
  69. dbActivity.note = noteReplacing
  70. dbActivity.selector = selector
  71. dbActivity.type = type
  72. dbActivity.verbose = verbose
  73. realm.add(dbActivity)
  74. }
  75. }
  76. func getAllTableActivityWithPredicate(_ predicate : NSPredicate) -> [DBActivity] {
  77. let realm = try! Realm()
  78. let results = realm.objects(DBActivity.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)
  79. return Array(results)
  80. }
  81. }