63 lines
2.9 KiB
Python
Raw Normal View History

import dataset
import logging
from datetime import datetime
from devplacepy.config import DATABASE_URL
logger = logging.getLogger(__name__)
db = dataset.connect(DATABASE_URL)
def init_db():
tables = db.tables
if "users" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_users_username ON users (username)")
db.query("CREATE INDEX IF NOT EXISTS idx_users_email ON users (email)")
if "posts" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_posts_user_uid ON posts (user_uid)")
db.query("CREATE INDEX IF NOT EXISTS idx_posts_created_at ON posts (created_at)")
db.query("CREATE INDEX IF NOT EXISTS idx_posts_topic ON posts (topic)")
if "comments" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_comments_post_uid ON comments (post_uid)")
db.query("CREATE INDEX IF NOT EXISTS idx_comments_user_uid ON comments (user_uid)")
if "votes" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_votes_target ON votes (target_uid, target_type)")
if "messages" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_messages_sender ON messages (sender_uid)")
db.query("CREATE INDEX IF NOT EXISTS idx_messages_receiver ON messages (receiver_uid)")
if "notifications" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_notifications_user ON notifications (user_uid)")
if "sessions" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_sessions_token ON sessions (session_token)")
if "projects" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_projects_user ON projects (user_uid)")
if "badges" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_badges_user ON badges (user_uid)")
if "follows" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_follows_follower ON follows (follower_uid)")
db.query("CREATE INDEX IF NOT EXISTS idx_follows_following ON follows (following_uid)")
if "daily_topics" in tables:
existing = db["daily_topics"].find_one()
if not existing:
db["daily_topics"].insert({
"uid": "default",
"title": "Anthropic details how it improved Claude's safety...",
"summary": "New techniques in AI safety research show promising results for alignment of large language models with human values.",
"updated_at": datetime.utcnow().isoformat(),
})
if "password_resets" in tables:
db.query("CREATE INDEX IF NOT EXISTS idx_password_resets_token ON password_resets (token)")
logger.info("Database initialized")
def get_table(name):
return db[name]
def get_daily_topic():
topics = db["daily_topics"]
topic = topics.find_one()
if topic:
return topic
return {"title": "Anthropic details how it improved Claude's safety...", "summary": "New techniques in AI safety research show promising results."}