nitter/src/prefs.nim

53 lines
1.2 KiB
Nim
Raw Normal View History

2019-09-08 10:22:52 +00:00
import strutils, sequtils, macros
import prefs_impl, types
2019-08-13 17:44:29 +00:00
2019-08-17 19:49:41 +00:00
export genUpdatePrefs
static:
var pFields: seq[string]
for id in getTypeImpl(Prefs)[2]:
if $id[0] == "id": continue
pFields.add $id[0]
let pDefs = toSeq(allPrefs()).mapIt(it.name)
let missing = pDefs.filterIt(it notin pFields)
if missing.len > 0:
raiseAssert("{$1} missing from the Prefs type" % missing.join(", "))
2019-09-08 10:22:52 +00:00
dbFromTypes("prefs.db", "", "", "", [Prefs])
withDb:
2019-08-13 17:44:29 +00:00
try:
createTables()
except DbError:
discard
proc getDefaultPrefs(hostname: string): Prefs =
result = genDefaultPrefs()
result.replaceTwitter = hostname
2019-08-13 17:44:29 +00:00
proc cache*(prefs: var Prefs) =
2019-09-08 10:22:52 +00:00
withDb:
2019-08-13 17:44:29 +00:00
try:
doAssert prefs.id != 0
discard Prefs.getOne("id = ?", prefs.id)
prefs.update()
except AssertionError, KeyError:
prefs.insert()
proc getPrefs*(id, hostname: string): Prefs =
if id.len == 0:
return getDefaultPrefs(hostname)
2019-08-13 17:44:29 +00:00
2019-09-08 10:22:52 +00:00
withDb:
2019-08-13 17:44:29 +00:00
try:
result.getOne("id = ?", id)
except KeyError:
result = getDefaultPrefs(hostname)
2019-08-13 17:44:29 +00:00
proc resetPrefs*(prefs: var Prefs; hostname: string) =
var defPrefs = getDefaultPrefs(hostname)
2019-08-15 17:13:54 +00:00
defPrefs.id = prefs.id
cache(defPrefs)
prefs = defPrefs