Explorar el Código

Generate preference type

Zed hace 7 años
padre
commit
8208676e6e
Se han modificado 2 ficheros con 16 adiciones y 13 borrados
  1. 13 0
      src/prefs_impl.nim
  2. 3 13
      src/types.nim

+ 13 - 0
src/prefs_impl.nim

@@ -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())

+ 3 - 13
src/types.nim

@@ -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])
 
 type