Archived
SQLite implementation of substitution plan persistence added, working in simulator, untested on real devices
This commit is contained in:
@@ -6,13 +6,24 @@
|
||||
// Copyright © 2019 Deniz Duezgoeren. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import Alamofire
|
||||
import SwiftSoup
|
||||
import SQLite
|
||||
|
||||
class DataFetcher {
|
||||
|
||||
let path = Bundle.main.path(forResource: "db", ofType: "sqlite3")
|
||||
|
||||
let substitutions = Table("substitutions")
|
||||
let id = Expression<Int64>("id")
|
||||
let group = Expression<String>("group")
|
||||
let course = Expression<String>("course")
|
||||
let additional = Expression<String>("additional")
|
||||
let date = Expression<String>("date")
|
||||
let time = Expression<String>("time")
|
||||
let room = Expression<String>("room")
|
||||
|
||||
func doAsync(completionHandler: @escaping (_ substitutions: Array<SubstModel>) -> ()) {
|
||||
DispatchQueue(label: "work-queue").async {
|
||||
let url = "https://djd4rkn355.github.io/subst_test.html"
|
||||
@@ -31,13 +42,34 @@ class DataFetcher {
|
||||
let doc: Document = try SwiftSoup.parse(html)
|
||||
let rows: Elements = try doc.select("tr")
|
||||
|
||||
let db = try Connection(path!)
|
||||
|
||||
try db.run(substitutions.create { t in
|
||||
t.column(id, primaryKey: true)
|
||||
t.column(group)
|
||||
t.column(course)
|
||||
t.column(additional)
|
||||
t.column(date)
|
||||
t.column(time)
|
||||
t.column(room)
|
||||
})
|
||||
|
||||
for i in (0..<rows.size()) {
|
||||
let row = rows.get(i)
|
||||
let cols = try row.select("th")
|
||||
|
||||
subst.append(SubstModel(group: try cols.get(0).text(), course: try cols.get(3).text(), additional: try cols.get(5).text(),
|
||||
date: try cols.get(1).text(), time: try cols.get(2).text(), room: try cols.get(4).text()))
|
||||
let mGroup = try cols.get(0).text()
|
||||
let mCourse = try cols.get(3).text()
|
||||
let mAdditional = try cols.get(5).text()
|
||||
let mDate = try cols.get(1).text()
|
||||
let mTime = try cols.get(2).text()
|
||||
let mRoom = try cols.get(4).text()
|
||||
|
||||
subst.append(SubstModel(group: mGroup, course: mCourse, additional: mAdditional,
|
||||
date: mDate, time: mTime, room: mRoom))
|
||||
let insert = substitutions.insert(group <- mGroup, course <- mCourse, additional <- mAdditional,
|
||||
date <- mDate, time <- mTime, room <- mRoom)
|
||||
_ = try db.run(insert)
|
||||
}
|
||||
|
||||
} catch Exception.Error(let type, let message) {
|
||||
@@ -49,6 +81,17 @@ class DataFetcher {
|
||||
return subst
|
||||
}
|
||||
|
||||
func getFromDatabase() -> [SubstModel] {
|
||||
var substs = [SubstModel]()
|
||||
do {
|
||||
let db = try Connection(path!)
|
||||
for subst in try db.prepare(substitutions) {
|
||||
substs.append(SubstModel(group: subst[group], course: subst[course], additional: subst[additional], date: subst[date], time: subst[time], room: subst[room]))
|
||||
}
|
||||
} catch {}
|
||||
return substs
|
||||
}
|
||||
|
||||
func getImage(from icon: String) -> UIImage? {
|
||||
var imagePath = ""
|
||||
let i = icon.lowercased()
|
||||
|
||||
Reference in New Issue
Block a user