from db import get_engine, get_session_factory, init_db from models.category import Category, CategoryWord SEED_DATA = { "animals": [ "TIGER", "DOLPHIN", "EAGLE", "WOLF", "BEAR", "LION", "HAWK", "DEER", "FROG", "SHARK", "SNAKE", "WHALE", "ZEBRA", "PANDA", "OTTER", "FALCON", "BISON", "CRANE", "MOOSE", "RAVEN", "JAGUAR", "PARROT", "TURTLE", "SALMON", "FERRET", "COYOTE", "OSPREY", "LIZARD", "BADGER", "PELICAN", "MONKEY", "RABBIT", "IGUANA", "CONDOR", "JACKAL", ], "colors": [ "CRIMSON", "VIOLET", "AMBER", "SCARLET", "INDIGO", "MAROON", "CORAL", "IVORY", "SILVER", "GOLDEN", "BRONZE", "TEAL", "OLIVE", "PLUM", "RUST", "SAGE", "NAVY", "JADE", "CYAN", "MAUVE", "COBALT", "COPPER", "EBONY", "PEACH", "CREAM", "LEMON", "ORCHID", "SALMON", "SIENNA", "KHAKI", "LILAC", "PEARL", "CHARCOAL", "MAGENTA", "EMERALD", ], "food": [ "PIZZA", "SUSHI", "MANGO", "PASTA", "TACO", "BREAD", "STEAK", "GRAPE", "MELON", "PEACH", "OLIVE", "LEMON", "BACON", "WAFFLE", "CREPE", "DONUT", "SALAD", "CURRY", "BAGEL", "FUDGE", "SHRIMP", "CHEESE", "BUTTER", "CHERRY", "PEPPER", "GINGER", "PRETZEL", "BRISKET", "NOODLE", "OYSTER", "TURNIP", "RADISH", "CELERY", "COOKIE", "BISQUE", ], "sports": [ "SOCCER", "TENNIS", "BOXING", "RUGBY", "GOLF", "DIVING", "ROWING", "HOCKEY", "FENCING", "ARCHER", "SPRINT", "DISCUS", "SQUASH", "KARATE", "JUDO", "RELAY", "SLALOM", "CRAWL", "VAULT", "SERVE", "VOLLEY", "TACKLE", "PADDLE", "JAVELIN", "HURDLE", ], "space": [ "PLANET", "GALAXY", "NEBULA", "COMET", "ORBIT", "QUASAR", "PULSAR", "LUNAR", "SOLAR", "METEOR", "AURORA", "ECLIPSE", "ZENITH", "CRATER", "COSMOS", "PHOTON", "PLASMA", "ROCKET", "SATURN", "VENUS", "MARS", "PLUTO", "TITAN", "VORTEX", "FLARE", ], "nature": [ "RIVER", "OCEAN", "CANYON", "FOREST", "DESERT", "ISLAND", "GLACIER", "MEADOW", "VALLEY", "SUMMIT", "LAGOON", "TUNDRA", "MARSH", "CLIFF", "DELTA", "FJORD", "GROVE", "RIDGE", "CORAL", "BROOK", "DUNE", "GEYSER", "CAVERN", "RAPIDS", "SAVANNA", ], "music": [ "GUITAR", "PIANO", "DRUMS", "VIOLIN", "FLUTE", "CELLO", "BANJO", "ORGAN", "HARP", "TRUMPET", "RHYTHM", "MELODY", "CHORD", "TEMPO", "FORTE", "TREBLE", "OCTAVE", "SONATA", "BALLAD", "OPERA", "HYMN", "LYRIC", "CHORUS", "BRIDGE", "DUET", ], } def seed(): engine = get_engine() init_db(engine) Session = get_session_factory(engine) session = Session() for cat_name, words in SEED_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()