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,10 +1,10 @@
(in-package :lispostory)
(define-data-source drop)
(defparameter *chronostory-drops-sheet-url* "https://docs.google.com/spreadsheets/d/e/2PACX-1vRpKuZGJQIFFxSi6kzYx4ALI0MQborpLEkh3J1qIGSd0Bw7U4NYg5CK-3ESzyK580z4D8NO59SUeC3k/pub?gid=1888753114&single=true&output=csv")
(defparameter *chronostory-drops* nil)
(defun refresh-drops ()
(defmethod refresh ((ds drop-data-source))
(let* ((data (drakma:http-request *chronostory-drops-sheet-url*))
(csv (cl-csv:read-csv data))
(header (car csv))
@@ -14,19 +14,13 @@
(lambda (row)
(pairhash keys (subseq row 0 num-fields-to-keep)))
(cdr csv))))
(setf *chronostory-drops* drops)
(setf (cache ds) drops)
(write-string-into-file
(shasht:write-json drops nil)
"drops.json"
(file-path ds)
:if-exists :overwrite
:if-does-not-exist :create)))
(defun reload-drops ()
(let ((drops (shasht:read-json (uiop:read-file-string "drops.json"))))
(setf *chronostory-drops* drops)
drops))
(defun load-drops ()
(if *chronostory-drops*
*chronostory-drops*
(reload-drops)))
(comment
(defvar drops (make-drop-data-source))
(reload drops))