Files
conquest/src/server/db/dbLoot.nim

76 lines
2.4 KiB
Nim

import system, terminal, tiny_sqlite
import ../core/logger
import ../../common/types
proc dbStoreLoot*(cq: Conquest, loot: LootItem): bool =
try:
let conquestDb = openDatabase(cq.dbPath, mode=dbReadWrite)
conquestDb.exec("""
INSERT INTO loot (lootId, itemType, agentId, host, path, timestamp, size)
VALUES (?, ?, ?, ?, ?, ?, ?);
""", loot.lootId, int(loot.itemType), loot.agentId, loot.host, loot.path, loot.timestamp, loot.size)
conquestDb.close()
except:
cq.error(getCurrentExceptionMsg())
return false
return true
proc dbGetLoot*(cq: Conquest): seq[LootItem] =
var loot: seq[LootItem] = @[]
try:
let conquestDb = openDatabase(cq.dbPath, mode=dbReadWrite)
for row in conquestDb.iterate("SELECT lootId, itemType, agentId, host, path, timestamp, size FROM loot;"):
let (lootId, itemType, agentId, host, path, timestamp, size) = row.unpack((string, int, string, string, string, int64, int))
let l = LootItem(
lootId: lootId,
itemType: cast[LootItemType](itemType),
agentId: agentId,
host: host,
path: path,
timestamp: timestamp,
size: size
)
loot.add(l)
conquestDb.close()
except:
cq.error(getCurrentExceptionMsg())
return loot
proc dbGetLootById*(cq: Conquest, lootId: string): LootItem =
try:
let conquestDb = openDatabase(cq.dbPath, mode=dbReadWrite)
for row in conquestDb.iterate("SELECT lootId, itemType, agentId, host, path, timestamp, size FROM loot WHERE lootId = ?;", lootId):
let (id, itemType, agentId, host, path, timestamp, size) = row.unpack((string, int, string, string, string, int64, int))
result = LootItem(
lootId: id,
itemType: cast[LootItemType](itemType),
agentId: agentId,
host: host,
path: path,
timestamp: timestamp,
size: size
)
conquestDb.close()
except:
cq.error(getCurrentExceptionMsg())
proc dbDeleteLootById*(cq: Conquest, lootId: string): bool =
try:
let conquestDb = openDatabase(cq.dbPath, mode=dbReadWrite)
conquestDb.exec("DELETE FROM loot WHERE lootId = ?", lootId)
conquestDb.close()
except:
return false
return true