"""Seed the database with word categories from data/words.json.""" import json import os from db import get_engine, get_session_factory, init_db from models.category import Category, CategoryWord DATA_PATH = os.path.join(os.path.dirname(__file__), "data", "words.json") def load_words(): with open(DATA_PATH) as f: return json.load(f) def seed(): engine = get_engine() init_db(engine) Session = get_session_factory(engine) session = Session() word_data = load_words() for cat_name, words in word_data.items(): existing = session.query(Category).filter_by(name=cat_name).first() if existing: cat = existing else: cat = Category(name=cat_name) session.add(cat) session.flush() added = 0 for w in words: exists = ( session.query(CategoryWord) .filter_by(category_id=cat.id, word=w) .first() ) if not exists: session.add(CategoryWord(category_id=cat.id, word=w)) added += 1 print(f"Category '{cat_name}': added {added} new words.") session.commit() session.close() print("Done.") if __name__ == "__main__": seed()