This commit is contained in:
2025-11-11 14:09:21 +01:00
parent bcd0a10576
commit 1075a91eac
57 changed files with 5598 additions and 1366 deletions

View File

@@ -11,6 +11,11 @@ articles_collection = db['articles']
subscribers_collection = db['subscribers']
rss_feeds_collection = db['rss_feeds']
# Tracking Collections
newsletter_sends_collection = db['newsletter_sends']
link_clicks_collection = db['link_clicks']
subscriber_activity_collection = db['subscriber_activity']
def init_db():
"""Initialize database with indexes"""
@@ -25,6 +30,9 @@ def init_db():
# Create unique index on RSS feed URLs
rss_feeds_collection.create_index('url', unique=True)
# Initialize tracking collections indexes
init_tracking_collections()
# Initialize default RSS feeds if collection is empty
if rss_feeds_collection.count_documents({}) == 0:
default_feeds = [
@@ -51,3 +59,37 @@ def init_db():
print(f"Initialized {len(default_feeds)} default RSS feeds")
print("Database initialized with indexes")
def init_tracking_collections():
"""Initialize tracking collections with indexes for email tracking system"""
# Newsletter Sends Collection Indexes
# Unique index on tracking_id for fast pixel/click lookups
newsletter_sends_collection.create_index('tracking_id', unique=True)
# Index on newsletter_id for analytics queries
newsletter_sends_collection.create_index('newsletter_id')
# Index on subscriber_email for user activity queries
newsletter_sends_collection.create_index('subscriber_email')
# Index on sent_at for time-based queries
newsletter_sends_collection.create_index('sent_at')
# Link Clicks Collection Indexes
# Unique index on tracking_id for fast redirect lookups
link_clicks_collection.create_index('tracking_id', unique=True)
# Index on newsletter_id for analytics queries
link_clicks_collection.create_index('newsletter_id')
# Index on article_url for article performance queries
link_clicks_collection.create_index('article_url')
# Index on subscriber_email for user activity queries
link_clicks_collection.create_index('subscriber_email')
# Subscriber Activity Collection Indexes
# Unique index on email for fast lookups
subscriber_activity_collection.create_index('email', unique=True)
# Index on status for filtering by activity level
subscriber_activity_collection.create_index('status')
# Index on last_opened_at for time-based queries
subscriber_activity_collection.create_index('last_opened_at')
print("Tracking collections initialized with indexes")