From 42c221fd129fdee4dd75e94c1b42173a68e29129 Mon Sep 17 00:00:00 2001 From: saturn Date: Sat, 1 Apr 2023 23:33:45 -0500 Subject: [PATCH] Add support for debates. --- lw2.lisp | 4 ++++ src/backend-modules.lisp | 5 +++++ src/backend.lisp | 15 ++++++++++++++- src/data-viewers/post.lisp | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lw2.lisp b/lw2.lisp index a5683383..a9d941d4 100644 --- a/lw2.lisp +++ b/lw2.lisp @@ -1370,6 +1370,8 @@ signaled condition to *HTML-OUTPUT*." (let* ((real-comments (get-post-comments post-id)) (answers (when (cdr (assoc :question post)) (get-post-answers post-id))) + (debate-responses (when (cdr (assoc :debate post)) + (get-post-debate-responses post-id))) (posted-at (and (typep *current-backend* 'backend-lw2) (cdr (assoc :posted-at post)))) (posted-timestamp (and posted-at (local-time:parse-timestring posted-at))) @@ -1395,6 +1397,8 @@ signaled condition to *HTML-OUTPUT*." (list "nomination" nominations nominations-open)) ((or reviews reviews-open) (list "review" reviews reviews-open)) + ((cdr (assoc :debate post)) + (list "debate-responses" debate-responses nil)) ((cdr (assoc :question post)) (list "answer" answers t)) (t diff --git a/src/backend-modules.lisp b/src/backend-modules.lisp index 236f8adf..d3a15009 100644 --- a/src/backend-modules.lisp +++ b/src/backend-modules.lisp @@ -15,6 +15,7 @@ #:oauth2.0-login-uri #:oauth2.0-client-id #:oauth2.0-client-secret #:backend-feed-crossposts #:backend-q-and-a #:backend-related-questions + #:backend-debates #:backend-alignment-forum #:backend-events #:backend-shortform @@ -86,6 +87,9 @@ (defclass backend-related-questions (backend-graphql) () (:metaclass backend-class)) +(defclass backend-debates (backend-graphql) () + (:metaclass backend-class)) + (defclass backend-backlinks (backend-lmdb-cache) () (:metaclass backend-class)) @@ -134,6 +138,7 @@ backend-algolia-search backend-q-and-a backend-related-questions + backend-debates backend-alignment-forum backend-events backend-feed-crossposts diff --git a/src/backend.lisp b/src/backend.lisp index 6ccf2753..08236111 100644 --- a/src/backend.lisp +++ b/src/backend.lisp @@ -21,7 +21,7 @@ #:get-tag-posts #:get-post-tag-votes #:get-tag-post-votes #:get-slug-tagid - #:get-posts-index #:get-posts-json #:get-post-body #:get-post-vote #:get-post-comments #:get-post-answers + #:get-posts-index #:get-posts-json #:get-post-body #:get-post-vote #:get-post-comments #:get-post-answers #:get-post-debate-responses #:get-post-comments-votes #:get-tag-comments-votes #:get-recent-comments #:get-recent-comments-json @@ -843,6 +843,19 @@ (get-post-answer-replies post-id answers))))))) (lw2-graphql-query-timeout-cached fn "post-answers-json" post-id :revalidate revalidate :force-revalidate force-revalidate))) +(define-cache-database 'backend-debates + "post-debate-responses-json" "post-debate-responses-json-meta") + +(define-backend-function get-post-debate-responses (post-id &key (revalidate *revalidate-default*) (force-revalidate *force-revalidate-default*)) + (backend-base + (declare (ignore post-id revalidate force-revalidate)) + nil) + (backend-debates + (let ((fn (lambda () + (comments-list-to-graphql-json + (get-post-comments-list post-id "debateResponses"))))) + (lw2-graphql-query-timeout-cached fn "post-debate-responses-json" post-id :revalidate revalidate :force-revalidate force-revalidate)))) + (define-backend-function get-collection (collection-id) (backend-graphql (lw2-graphql-query diff --git a/src/data-viewers/post.lisp b/src/data-viewers/post.lisp index 80fccb35..37e3f03f 100644 --- a/src/data-viewers/post.lisp +++ b/src/data-viewers/post.lisp @@ -29,6 +29,7 @@ (af boolean :backend-type backend-alignment-forum) (draft boolean) (question boolean :backend-type backend-q-and-a) + (debate boolean :backend-type backend-debates) ;; todo: allow recursive schema types and clean this up (target-post-relations list :context :body -- 2.11.4.GIT