Caps-iOS/CapCollector/Data/ServerDatabase.swift

48 lines
1.0 KiB
Swift
Raw Normal View History

2020-05-16 11:21:55 +02:00
//
// ServerDatabase.swift
// CapCollector
//
// Created by Christoph on 27.04.20.
// Copyright © 2020 CH. All rights reserved.
//
import Foundation
import SQLite
final class ServerDatabase {
let db: Connection
var table: Table {
Table("caps")
}
let rowId = Expression<Int>("id")
let rowName = Expression<String>("name")
let rowCount = Expression<Int>("count")
init?(downloadedTo url: URL) {
guard let db = try? Connection(url.path) else {
return nil
}
self.db = db
log("Server database loaded with \(capCount) caps")
}
/// The number of caps currently in the database
var capCount: Int {
(try? db.scalar(table.count)) ?? 0
}
var caps: [(id: Int, count: Int, name: String)] {
guard let rows = try? db.prepare(table) else {
return []
}
return rows.map { ($0[rowId], $0[rowCount], $0[rowName]) }
}
}
extension ServerDatabase: Logger { }