76 lines
2.4 KiB
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 |