telegram-auth-bot/Sources/TelegramModeratorBot/Database.swift
2025-02-01 12:32:06 +03:00

52 lines
1.3 KiB
Swift

import GRDB
struct User: Codable, FetchableRecord, PersistableRecord {
var userId: String
var publicKey: String
var isSpammer: Bool
}
final class Database: Sendable {
private let dbWriter: any DatabaseWriter
init(_ dbWriter: any GRDB.DatabaseWriter) throws {
self.dbWriter = dbWriter
try migrator.migrate(dbWriter)
}
// let dbQueue = try DatabaseQueue(path: "./db.sqlite")
//
// let db = try Connection("./db.sqlite")
private var migrator: DatabaseMigrator {
var migrator = DatabaseMigrator()
#if DEBUG
migrator.eraseDatabaseOnSchemaChange = true
#endif
migrator.registerMigration("v1") { db in
try db.create(table: "users") { t in
t.primaryKey("userId", .text).notNull()
t.column("publicKey", .text).notNull()
t.column("isSpammer", .boolean)
}
}
return migrator
}
}
extension Database {
static func makeConfiguration(_ base: Configuration = Configuration()) -> Configuration {
var config = base
return config
}
}
extension Database {
func saveUser(_ userId: String, _ publicKey: String, _ isSpammer: Bool) throws {
try dbWriter.write { db in
try User.init(userId: userId, publicKey: publicKey, isSpammer: isSpammer).insert(db)
}
}
}