X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/53b27422d140022594fc241cca91c3183be57bca..48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff:/iOS/WolneLektury/Utils/DatabaseManager.swift diff --git a/iOS/WolneLektury/Utils/DatabaseManager.swift b/iOS/WolneLektury/Utils/DatabaseManager.swift new file mode 100644 index 0000000..d157dd0 --- /dev/null +++ b/iOS/WolneLektury/Utils/DatabaseManager.swift @@ -0,0 +1,146 @@ +// +// DatabaseManager.swift +// WolneLektury +// +// Created by Pawel Dabrowski on 11/09/2018. +// Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved. +// + +import UIKit +import RealmSwift + +class DatabaseManager: NSObject { + static let shared = DatabaseManager() + + override init() { + super.init() + realmConfiguration() + } + + var rlmApplication:RLMApplication? + + func realmConfiguration() + { + Realm.Configuration.defaultConfiguration = Realm.Configuration( + schemaVersion: 1, + migrationBlock: { migration, oldSchemaVersion in + /* + if (oldSchemaVersion < 1) { + + } */ + }) + + let realm = try! Realm() + self.rlmApplication = realm.objects(RLMApplication.self).last + + print(realm.configuration.fileURL) + + if self.rlmApplication == nil + { + self.rlmApplication = RLMApplication() + try! realm.write { + realm.add(self.rlmApplication!) + } + } + } + + /// removing database + func purgeData(){ + let realm = try! Realm() + self.rlmApplication = nil + try! realm.write { + realm.deleteAll() + } + + self.rlmApplication = RLMApplication() + try! realm.write { + realm.add(self.rlmApplication!) + } + } + + func isUserPremium()-> Bool{ + if let premium = rlmApplication?.user?.premium, premium == true{ + return true + } + return false + } + + func updateUser(usernameModel: UsernameModel?){ + self.rlmApplication?.updateUser(usernameModel: usernameModel) + } + + func addBookToDownloaded(bookDetailsModel: BookDetailsModel) { + rlmApplication?.addBookToDownloaded(bookDetailsModel: bookDetailsModel) + } + + func removeAllBooksFromDownloaded() { + guard let application = rlmApplication else { return } + for book in application.downloadedBooks { + DownloadManager.sharedInstance.deleteEbook(bookSlug: book.slug) + DownloadManager.sharedInstance.deleteAudiobook(bookSlug: book.slug) + } + + application.removeAllBooksFromDownloaded() + } + + func removeBookFromDownloaded(bookSlug: String) -> Bool{ + guard let application = rlmApplication else { + return false + } + + DownloadManager.sharedInstance.deleteEbook(bookSlug: bookSlug) + DownloadManager.sharedInstance.deleteAudiobook(bookSlug: bookSlug) + return application.removeBookFromDownloaded(bookSlug: bookSlug) + } + + func getBookFromDownloaded(bookSlug: String) -> BookDetailsModel? { + return rlmApplication?.getBookFromDownloaded(bookSlug: bookSlug) + } + + func updateCurrentChapters(bookDetailsModel: BookDetailsModel, currentChapter: Int?, totalChapters: Int?, currentAudioChapter: Int?, totalAudioChapters: Int?) + { + let realm = try! Realm() + realm.beginWrite() + + if let currentChapter = currentChapter{ + bookDetailsModel.currentChapter = currentChapter + } + + if let totalChapters = totalChapters{ + bookDetailsModel.totalChapters = totalChapters + } + + if let currentAudioChapter = currentAudioChapter{ + bookDetailsModel.currentAudioChapter = currentAudioChapter + } + + if let totalAudioChapters = totalAudioChapters{ + bookDetailsModel.totalAudioChapters = totalAudioChapters + } + + try! realm.commitWrite() + } + + func removeBookFromDownloadedIfNoFiles(bookSlug: String) { + + if FileManager.default.fileExists(atPath: FileType.ebook.destinationPathWithSlug(bookSlug: bookSlug)) { + return + } + + let fileNames = try! FileManager.default.contentsOfDirectory(atPath: FileType.audiobook.destinationPathWithSlug(bookSlug: bookSlug)) + + if fileNames.count > 0 { + return + } + + let _ = rlmApplication?.removeBookFromDownloaded(bookSlug: bookSlug) + } + + func refresh(){ + rlmApplication?.realm?.refresh() + } + + func setUserPremium() { + rlmApplication?.setUserPermium() + } +}