61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
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")
|