update
This commit is contained in:
53
backend/database.py
Normal file
53
backend/database.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from pymongo import MongoClient
|
||||
from datetime import datetime
|
||||
from config import Config
|
||||
|
||||
# MongoDB setup
|
||||
client = MongoClient(Config.MONGODB_URI)
|
||||
db = client[Config.DB_NAME]
|
||||
|
||||
# Collections
|
||||
articles_collection = db['articles']
|
||||
subscribers_collection = db['subscribers']
|
||||
rss_feeds_collection = db['rss_feeds']
|
||||
|
||||
|
||||
def init_db():
|
||||
"""Initialize database with indexes"""
|
||||
# Create unique index on article links to prevent duplicates
|
||||
articles_collection.create_index('link', unique=True)
|
||||
# Create index on created_at for faster sorting
|
||||
articles_collection.create_index('created_at')
|
||||
# Create unique index on subscriber emails
|
||||
subscribers_collection.create_index('email', unique=True)
|
||||
# Create index on subscribed_at
|
||||
subscribers_collection.create_index('subscribed_at')
|
||||
# Create unique index on RSS feed URLs
|
||||
rss_feeds_collection.create_index('url', unique=True)
|
||||
|
||||
# Initialize default RSS feeds if collection is empty
|
||||
if rss_feeds_collection.count_documents({}) == 0:
|
||||
default_feeds = [
|
||||
{
|
||||
'name': 'Süddeutsche Zeitung München',
|
||||
'url': 'https://www.sueddeutsche.de/muenchen/rss',
|
||||
'active': True,
|
||||
'created_at': datetime.utcnow()
|
||||
},
|
||||
{
|
||||
'name': 'Münchner Merkur',
|
||||
'url': 'https://www.merkur.de/muenchen/rss',
|
||||
'active': True,
|
||||
'created_at': datetime.utcnow()
|
||||
},
|
||||
{
|
||||
'name': 'Abendzeitung München',
|
||||
'url': 'https://www.abendzeitung-muenchen.de/rss',
|
||||
'active': True,
|
||||
'created_at': datetime.utcnow()
|
||||
}
|
||||
]
|
||||
rss_feeds_collection.insert_many(default_feeds)
|
||||
print(f"Initialized {len(default_feeds)} default RSS feeds")
|
||||
|
||||
print("Database initialized with indexes")
|
||||
Reference in New Issue
Block a user