@@ -105,3 +105,16 @@ macro genUpdatePrefs*(): untyped =
result.add quote do:
cache(prefs)
+macro genPrefsType*(): untyped =
+ let name = nnkPostfix.newTree(ident("*"), ident("Prefs"))
+ result = quote do:
+ type `name` = object
+ id* {.pk, ro.}: int
+
+ for pref in allPrefs():
+ result[0][2][2].add nnkIdentDefs.newTree(
+ nnkPostfix.newTree(ident("*"), ident(pref.name)),
+ (case pref.kind
+ of checkbox: ident("bool")
+ of input, select: ident("string")),
+ newEmptyNode())
@@ -1,6 +1,8 @@
import times, sequtils, options
import norm/sqlite
+import prefs_impl
export sqlite, options
type
@@ -50,19 +52,7 @@ dbTypes:
formatIt: dbValue($it)
.}: VideoType
- Prefs* = object
- hlsPlayback*: bool
- mp4Playback*: bool
- proxyVideos*: bool
- muteVideos*: bool
- autoplayGifs*: bool
- hideTweetStats*: bool
- hideBanner*: bool
- stickyProfile*: bool
- replaceYouTube*: string
- replaceTwitter*: string
-
+genPrefsType()
dbFromTypes("cache.db", "", "", "", [Profile, Video])