54 lines
1.9 KiB
Python
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")
|