Files
Munich-news/backend/database.py
2025-11-10 19:13:33 +01:00

54 lines
1.9 KiB
Python

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")