Files
NJUPT-Suan-API/src/njupt_suan_api/router/enhance/model.py
MangoFanFanw 247d9f089c v0.1.1 项目结构与构建流程更新
涉及的文件很多,但主要是 PyCharm 自动重构 + 手动微调。

1. 使用 src-layout 结构组织项目,旨在更加规范地管理各个子包,并方便组织代码。
2. 可以使用 uv build 构建项目至 wheel。
3. 可以在 /webui 目录下使用 pnpm run build 来构建 WebUI,构建产物会生成在
/src/njupt_suan_api/static 目录下。同时,uv build 时会一同包含此目录下的 WebUI
构建产物,避免在用户侧执行构建。
4. 使用 typer 实现了命令行入口,代码位于 manage.py;命令行实现了现 main.py 的全部功能。
2026-04-25 21:30:11 +08:00

30 lines
1011 B
Python

from typing import Optional
from sqlalchemy import JSON, Column
from sqlmodel import Field, SQLModel, create_engine
sqlite_file_name = "data/njupt-api.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"
engine = create_engine(sqlite_url, connect_args={"check_same_thread": False})
class Course(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
teacher: Optional[str] = Field(default=None, nullable=True)
classroom: Optional[str] = Field(default=None, nullable=True)
weeks: list[int] = Field(default=[], sa_column=Column(JSON))
day: int
classes: list[int] = Field(default=[], sa_column=Column(JSON))
class Alias(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
originalName: Optional[str] = Field(default=None, nullable=True) # noqa: N815
aliasName: Optional[str] = Field(default=None, nullable=True) # noqa: N815
def create_db_and_tables() -> None:
SQLModel.metadata.create_all(engine)