from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Text, Boolean # Connect to local SQLite DB engine = create_engine("sqlite:///./dev.db") metadata = MetaData() # Define tables to initialize users = Table( "users", metadata, Column("id", Integer, primary_key=True), Column("ip", String, unique=True, nullable=False), Column("xp", Integer, default=0), Column("soft_banned", Boolean, default=False), Column("first_visit", String), # could be DateTime if stored that way Column("ban_status", String, default="ok"), # or Integer if enum-based ) runs = Table( "runs", metadata, Column("id", Integer, primary_key=True), Column("user_id", Integer, nullable=False), Column("created_at", String), Column("completed_at", String), ) repos = Table( "repos", metadata, Column("id", Integer, primary_key=True), Column("url", Text, nullable=False), Column("owner", String), Column("name", String), Column("license", String), Column("language", String), Column("stars", Integer), Column("forks", Integer), Column("description", Text), ) packages = Table( "packages", metadata, Column("id", Integer, primary_key=True), Column("repo_id", Integer, nullable=False), Column("name", String, nullable=False), Column("version", String), ) output = Table( "output", metadata, Column("id", Integer, primary_key=True), Column("run_id", Integer, nullable=False), Column("summary", Text), Column("score", Integer), Column("raw", Text), ) # Create all tables metadata.create_all(engine) print("Database initialized with tables: users, runs, repos, packages, output")