1
0
Quellcode durchsuchen

ClozureCL struct fuckups, minor fixes

Innokenty Enikeev vor 10 Jahren
Ursprung
Commit
0f8c04ce93
3 geänderte Dateien mit 35 neuen und 35 gelöschten Zeilen
  1. 2 2
      chatikbot.lisp
  2. 32 32
      db.lisp
  3. 1 1
      rss.lisp

+ 2 - 2
chatikbot.lisp

@@ -207,7 +207,7 @@
              (avg (or (some #'(lambda (a)
                                 (when (find (princ-to-string a) args :test #'equal)
                                   (* a 60)))
-                            '(240 60 30 15 10 5 1))
+                            '(240 60 30 15 10 6 5 4 3 2 1))
                       60))
              (rates (multiple-value-list (db-get-last-finance))))
         (if (or usd eur gbp brent)
@@ -413,7 +413,7 @@
         (if (null args)
             (%send-feeds chat-id feeds)
             (let* ((idx (1- (parse-integer (car args))))
-                   (limit (if (> (length args) 1) (parse-integer (second args)) 10))
+                   (limit (min 20 (if (> (length args) 1) (parse-integer (second args)) 5)))
                    (items (db-rss-last-feed-items (nth idx feeds) limit)))
               (telegram-send-message chat-id
                                      (format nil "~{~A~^~%~%~}"

+ 32 - 32
db.lisp

@@ -109,22 +109,20 @@
     (%make-feed (car (sqlite:execute-to-list db "select id, url, title, next_fetch, period from rss_feeds where url = ?" url)))))
 
 (defun db-rss-add-feed (feed)
-  (with-db (db)
-    (sqlite:execute-non-query db "insert into rss_feeds (url, title, next_fetch, period) values (?, ?, ?, ?)"
-                              (feed-url feed)
-                              (feed-title feed)
-                              (feed-next-fetch-unix feed)
-                              (feed-period feed))
-    (setf (feed-id feed) (sqlite:last-insert-rowid db))
-    feed))
+  (with-slots (url title period) feed
+    (let ((next-fetch (feed-next-fetch-unix feed)))
+      (with-db (db)
+        (sqlite:execute-non-query db "insert into rss_feeds (url, title, next_fetch, period) values (?, ?, ?, ?)"
+                                  url title next-fetch period)
+        (setf (feed-id feed) (sqlite:last-insert-rowid db))
+        feed))))
 
 (defun db-rss-update-feed (feed)
-  (with-db (db)
-    (sqlite:execute-non-query db "update rss_feeds set title = ?, next_fetch = ?, period = ? where id = ?"
-                              (feed-title feed)
-                              (feed-next-fetch-unix feed)
-                              (feed-period feed)
-                              (feed-id feed))))
+  (with-slots (id title period) feed
+    (let ((next-fetch (feed-next-fetch-unix feed)))
+      (with-db (db)
+        (sqlite:execute-non-query db "update rss_feeds set title = ?, next_fetch = ?, period = ? where id = ?"
+                                  title next-fetch period id)))))
 
 (defun db-rss-get-active-feeds ()
   (with-db (db)
@@ -137,31 +135,32 @@
             (sqlite:execute-to-list db "select id, url, title, next_fetch, period from rss_feeds where id in (select feed_id from rss_chat_feeds where chat_id  = ?)" chat-id))))
 
 (defun db-rss-get-feed-chats (feed)
-  (flatten (with-db (db)
-             (sqlite:execute-to-list db "select chat_id from rss_chat_feeds where feed_id = ?"
-                                     (feed-id feed)))))
+  (with-slots (id) feed
+    (flatten (with-db (db)
+               (sqlite:execute-to-list db "select chat_id from rss_chat_feeds where feed_id = ?" id)))))
 
 (defun db-rss-set-chat-feeds (chat-id feeds)
   (with-db (db)
     (sqlite:with-transaction db
       (sqlite:execute-non-query db "delete from rss_chat_feeds where chat_id = ?" chat-id)
       (dolist (feed feeds)
-        (sqlite:execute-non-query db "insert into rss_chat_feeds (chat_id, feed_id) values (?, ?)" chat-id (feed-id feed))))))
+        (with-slots (id) feed
+          (sqlite:execute-non-query db "insert into rss_chat_feeds (chat_id, feed_id) values (?, ?)" chat-id id))))))
 
 (defun db-rss-item-exists (item)
-  (with-db (db)
-    (sqlite:execute-single db "select id from rss_items where feed_id = ? and guid = ? limit 1"
-                           (feed-id (feed-item-feed item))
-                           (feed-item-guid item))))
+  (let ((feed-id (feed-id (feed-item-feed item)))
+        (guid (feed-item-guid item)))
+    (with-db (db)
+      (sqlite:execute-single db "select id from rss_items where feed_id = ? and guid = ? limit 1"
+                             feed-id guid))))
 
 (defun db-rss-add-item (item)
-  (with-db (db)
-    (sqlite:execute-non-query db "insert into rss_items (feed_id, guid, link, title, published) values (?, ?, ?, ?, ?)"
-                              (feed-id (feed-item-feed item))
-                              (feed-item-guid item)
-                              (feed-item-link item)
-                              (feed-item-title item)
-                              (feed-item-published-unix item))))
+  (let ((feed-id (feed-id (feed-item-feed item)))
+        (published (feed-item-published-unix item)))
+    (with-slots (guid link title) item
+      (with-db (db)
+        (sqlite:execute-non-query db "insert into rss_items (feed_id, guid, link, title, published) values (?, ?, ?, ?, ?)"
+                                  feed-id guid link title published)))))
 
 (defun %make-feed-item (feed row)
   (when row
@@ -172,6 +171,7 @@
                     :published (when (nth 3 row) (local-time:unix-to-timestamp (nth 3 row))))))
 
 (defun db-rss-last-feed-items (feed &optional (limit 10))
-  (with-db (db)
-    (mapcar #'(lambda (row) (%make-feed-item feed row))
-            (sqlite:execute-to-list db "select guid, link, title, published from rss_items where feed_id = ? order by published desc, id desc limit ?" (feed-id feed) limit))))
+  (with-slots (id) feed
+    (with-db (db)
+      (mapcar #'(lambda (row) (%make-feed-item feed row))
+              (sqlite:execute-to-list db "select guid, link, title, published from rss_items where feed_id = ? order by published desc, id desc limit ?" id limit)))))

+ 1 - 1
rss.lisp

@@ -1,6 +1,6 @@
 (in-package #:chatikbot)
 
-(defstruct feed id url title seen-guids next-fetch (period 300))
+(defstruct feed id url title next-fetch (period 300))
 (defstruct feed-item feed guid link title description published)
 
 (defparameter *rss-min-period* 60 "Min rss refresh period in seconds")