refactor to data-source

This commit is contained in:
2026-01-04 00:49:26 -05:00
parent e15628b20a
commit 712361da86
5 changed files with 55 additions and 58 deletions

View File

@@ -1,5 +1,7 @@
(in-package :lispostory)
(define-data-source spawn)
(defparameter *chronostory-spawns-url-format* "https://docs.google.com/spreadsheets/d/e/2PACX-1vSIUj-72ADgwMqShxt4Dn7OP7dBN54l0wda1IPwlIVTZUN_ZtTlRx5DDidr43VXv2HYQ5RNqccLbbGS/pub?gid=~a&output=csv&single=true")
(defparameter *chronostory-spawn-gids*
@@ -16,8 +18,6 @@
:el-nath 1897049096
:ludibrium 1290087592))
(defvar *chronostory-spawns* nil)
(defun chronostory-spawn-url (gid)
(format nil *chronostory-spawns-url-format* gid))
@@ -87,7 +87,7 @@ separate csvs."
(joined (string-join (concatenate 'list first-half second-half) #\Newline)))
(csv-to-hash-tables (cl-csv:read-csv joined))))
(defun refresh-spawn-data ()
(defmethod refresh ((ds spawn-data-source))
(let ((spawn-data (pairhash
(mapcar #'car *chronostory-spawn-gids*)
(mapcar (lambda (pair)
@@ -96,20 +96,10 @@ separate csvs."
(uiop:println (concat "Requesting data for " (symbol-name (car pair))))
(parse-sheet data)))
*chronostory-spawn-gids*))))
(setf *chronostory-spawns* spawn-data)
(setf (cache ds) spawn-data)
(write-string-into-file
(shasht:write-json spawn-data nil)
"spawns.json"
(file-path ds)
:if-exists :overwrite
:if-does-not-exist :create)
spawn-data))
(defun reload-spawn-data ()
(let ((spawn-data (shasht:read-json (uiop:read-file-string "spawns.json" :if-does-not-exist nil))))
(setf *chronostory-spawns* spawn-data)
spawn-data))
(defun load-spawn-data ()
(if-not *chronostory-spawns*
(reload-spawn-data)
*chronostory-spawns*))