diff --git a/db/database.py b/db/database.py deleted file mode 100644 index 4593ec4..0000000 --- a/db/database.py +++ /dev/null @@ -1,34 +0,0 @@ -# To connect to PostgreSQL database -import psycopg2 - -from psycopg2.extras import RealDictCursor -from typing import Optional - -class Database: - def __init__(self, db_name: str, user: str, password: str, host: str = 'localhost', port: int = 5432): - self.connection = psycopg2.connect( - dbname=db_name, - user=user, - password=password, - host=host, - port=port - ) - self.connection.autocommit = True - - def execute_query(self, query: str, params: Optional[tuple] = None): - with self.connection.cursor(cursor_factory=RealDictCursor) as cursor: - cursor.execute(query, params) - if cursor.description: - return cursor.fetchall() - return [] - - def execute_many(self, query: str, params_list: list[tuple]): - with self.connection.cursor(cursor_factory=RealDictCursor) as cursor: - cursor.executemany(query, params_list) - - def close(self): - self.connection.close() - print("Database connection closed.") - - def __exit__(self, exc_type, exc_val, exc_tb): - self.close() \ No newline at end of file diff --git a/db/sql/01_schema.sql b/db/sql/01_schema.sql deleted file mode 100644 index 92f6ecb..0000000 --- a/db/sql/01_schema.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS ethnograph; - -CREATE TABLE IF NOT EXISTS ethnograph.users ( - id SERIAL PRIMARY KEY, - username VARCHAR(255) UNIQUE NOT NULL, - created_utc TIMESTAMP NOT NULL, - karma INTEGER -); - -CREATE TABLE IF NOT EXISTS ethnograph.posts ( - id SERIAL PRIMARY KEY, - title TEXT NOT NULL, - content TEXT NOT NULL, - author_username VARCHAR(255), - created_utc TIMESTAMP NOT NULL -); \ No newline at end of file diff --git a/server/app.py b/server/app.py index 917df87..5452fcd 100644 --- a/server/app.py +++ b/server/app.py @@ -1,52 +1,15 @@ from flask import Flask -from db.database import Database from connectors.reddit_connector import RedditConnector from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer app = Flask(__name__) -db = Database(db_name='ethnograph', user='ethnograph_user', password='ethnograph_pass') reddit_connector = RedditConnector() @app.route('/fetch_subreddit//', methods=['GET']) def fetch_subreddit(subreddit, limit = 10): posts = reddit_connector.get_top_subreddit_posts(subreddit, limit=limit, timeframe='all') - - db.execute_many( - """INSERT INTO ethnograph.posts (title, content, author_username, created_utc) - VALUES (%s, %s, %s, to_timestamp(%s));""", - [(post.title, post.content, post.author, post.timestamp) for post in posts] - ) - - return {"status": "success", "inserted_posts": len(posts)} - -@app.route('/sentiment', methods=['GET']) -def sentiment_analysis(): - posts = db.execute_query( - "SELECT id, title, content FROM ethnograph.posts;" - ) - - analyzer = SentimentIntensityAnalyzer() - - total_sentiment = 0.0 - count = 0 - - for post in posts: - content = post.get("title") - if not content: - continue - - score = analyzer.polarity_scores(content)["compound"] - total_sentiment += score - count += 1 - - average_sentiment = total_sentiment / count if count else 0.0 - - return { - "status": "success", - "average_sentiment": average_sentiment, - "posts_analyzed": count - } + return {"status": "success", "posts": [post.__dict__ for post in posts]} if __name__ == "__main__": app.run(debug=True) \ No newline at end of file