You've already forked KemoFureApi
							
							added get_posts endpoint
This commit is contained in:
		| @@ -1,6 +1,8 @@ | ||||
| import json | ||||
|  | ||||
| from .databaseController import DatabaseController | ||||
| from .endpoints.query import Archive_Query | ||||
| from .endpoints.get_posts import Archive_GetPosts | ||||
|  | ||||
| class Database: | ||||
|     db : DatabaseController = None | ||||
| @@ -15,6 +17,35 @@ class Database: | ||||
|         app.databases["Archive"] = self | ||||
|  | ||||
|         api.add_resource(Archive_Query, "/Archive/Query") | ||||
|         api.add_resource(Archive_GetPosts, "/Archive/GetPosts") | ||||
|    | ||||
|     def get_posts(self, num_posts, actions_taken = [0, 1, 2], last_id = -1): | ||||
|         num_posts = max(1, min(num_posts, 30)) | ||||
|  | ||||
|         where_query = "WHERE x_post_details.id NOT NULL AND x_posts.error_id = 0" | ||||
|         if last_id != -1: | ||||
|             where_query += f" AND x_posts.id < {last_id}" | ||||
|         if actions_taken != [0, 1, 2]: | ||||
|             where_query += " AND (" + " OR ".join([f"x_posts.action_taken = {action}" for action in actions_taken]) + ")" | ||||
|  | ||||
|         query = f''' | ||||
|         SELECT x_posts.id, x_post_details.files, accounts.x_handle FROM x_posts  | ||||
|         LEFT JOIN x_post_details | ||||
|             ON x_posts.id = x_post_details.id | ||||
|         LEFT JOIN accounts | ||||
|             ON x_posts.account_id = accounts.id | ||||
|         {where_query} | ||||
|         ORDER BY x_posts.id DESC | ||||
|         LIMIT {num_posts}''' | ||||
|  | ||||
|         print(query) | ||||
|  | ||||
|         result = self.db.run_query(query) | ||||
|         posts = [] | ||||
|         if result is not None: | ||||
|             for result in self.db.run_query(query): | ||||
|                 posts.append({"id": result[0], "files": result[1].split(','), "handle": result[2]}) | ||||
|         return posts | ||||
|  | ||||
|     def reload_data(self): | ||||
|         self.db = DatabaseController("/home/pi/python/Katbots/JapariArchive/database.db") | ||||
| @@ -14,7 +14,8 @@ class DatabaseController: | ||||
|             self.cursor.execute(query) | ||||
|             results = self.cursor.fetchall() | ||||
|             return results | ||||
|         except: | ||||
|         except Exception as e: | ||||
|             print(e) | ||||
|             return None | ||||
|  | ||||
|     def close(self): | ||||
|   | ||||
							
								
								
									
										43
									
								
								modules/Archive/endpoints/get_posts.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								modules/Archive/endpoints/get_posts.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| from __future__ import annotations | ||||
| import json | ||||
| from flask_restful import Resource | ||||
| from flask import current_app as app, jsonify, request | ||||
| from typing import TYPE_CHECKING | ||||
|  | ||||
| if TYPE_CHECKING: | ||||
|     from modules.Archive.database import Database | ||||
|  | ||||
| class Archive_GetPosts(Resource): | ||||
|     def get(self): | ||||
|         db : Database = app.databases["Archive"] | ||||
|         try: | ||||
|             count = int(request.args["count"]) if "count" in request.args else 10 | ||||
|             last_id = int(request.args["last_id"]) if "last_id" in request.args else -1 | ||||
|         except: | ||||
|             response = app.response_class(status=400) | ||||
|             response.headers.add("Access-Control-Allow-Origin", "*") | ||||
|             return response    | ||||
|  | ||||
|         param = [] | ||||
|         if "undecided" in request.args: | ||||
|             param.append(0) | ||||
|         if "approved" in request.args: | ||||
|             param.append(1) | ||||
|         if "denied" in request.args: | ||||
|             param.append(2) | ||||
|         if param == []: | ||||
|             param = [0,1,2] | ||||
|  | ||||
|         result = db.get_posts(count, param, last_id) | ||||
|  | ||||
|         if result is None: | ||||
|             response = app.response_class(status=400) | ||||
|         else: | ||||
|             response = app.response_class( | ||||
|                 response=json.dumps(result, ensure_ascii=False, indent=1), | ||||
|                 status=200, | ||||
|                 mimetype='application/json' | ||||
|             ) | ||||
|  | ||||
|         response.headers.add("Access-Control-Allow-Origin", "*") | ||||
|         return response    | ||||
		Reference in New Issue
	
	Block a user