48 lines
1.0 KiB
Swift
48 lines
1.0 KiB
Swift
//
|
|
// 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 { }
|