init
This commit is contained in:
commit
0500266b92
21 changed files with 1766 additions and 0 deletions
133
play_outside/cli/api.py
Normal file
133
play_outside/cli/api.py
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
from pathlib import Path
|
||||
|
||||
import typer
|
||||
import uvicorn
|
||||
from rich.console import Console
|
||||
from play_outside.config import get_config
|
||||
|
||||
api_app = typer.Typer()
|
||||
|
||||
|
||||
@api_app.callback()
|
||||
def api():
|
||||
"model cli"
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def config(
|
||||
env: str = typer.Option(
|
||||
help="the environment to use",
|
||||
),
|
||||
):
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def upgrade(
|
||||
env: str = typer.Option(
|
||||
help="the environment to use",
|
||||
),
|
||||
alembic_revision: str = typer.Option(
|
||||
"head",
|
||||
help="the alembic revision to use",
|
||||
),
|
||||
):
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
alembic_cfg = Config("alembic.ini")
|
||||
alembic_cfg.set_main_option("sqlalchemy.url", play_outside_config.database_url)
|
||||
alembic.command.upgrade(config=alembic_cfg, revision=alembic_revision)
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def revision(
|
||||
env: str = typer.Option(
|
||||
help="the environment to use",
|
||||
),
|
||||
alembic_revision: str = typer.Option(
|
||||
"head",
|
||||
help="the alembic revision to upgrade to before creating a new revision",
|
||||
),
|
||||
message: str = typer.Option(
|
||||
None,
|
||||
"--message",
|
||||
"-m",
|
||||
help="the message to use for the new revision",
|
||||
),
|
||||
):
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
alembic_cfg = Config("alembic.ini")
|
||||
alembic_cfg.set_main_option("sqlalchemy.url", play_outside_config.database_url)
|
||||
alembic.command.upgrade(config=alembic_cfg, revision=alembic_revision)
|
||||
alembic.command.revision(
|
||||
config=alembic_cfg,
|
||||
message=message,
|
||||
autogenerate=True,
|
||||
)
|
||||
alembic.command.upgrade(config=alembic_cfg, revision="head")
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def datasette(
|
||||
env: str = typer.Option(
|
||||
help="the environment to use",
|
||||
),
|
||||
alembic_revision: str = typer.Option(
|
||||
"head",
|
||||
help="the alembic revision to use",
|
||||
),
|
||||
):
|
||||
from datasette.app import Datasette
|
||||
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
alembic_cfg = Config("alembic.ini")
|
||||
alembic_cfg.set_main_option("sqlalchemy.url", play_outside_config.database_url)
|
||||
alembic.command.upgrade(config=alembic_cfg, revision=alembic_revision)
|
||||
|
||||
ds = Datasette(
|
||||
files=[Path(play_outside_config.database_url.replace("sqlite:///", ""))],
|
||||
)
|
||||
uvicorn.run(
|
||||
ds.app(), **play_outside_config.datasette_server.dict(exclude={"app", "reload"})
|
||||
)
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def run(
|
||||
env: str = typer.Option(
|
||||
help="the environment to use",
|
||||
),
|
||||
alembic_revision: str = typer.Option(
|
||||
"head",
|
||||
help="the alembic revision to use",
|
||||
),
|
||||
):
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
# alembic_cfg = Config("alembic.ini")
|
||||
# alembic_cfg.set_main_option("sqlalchemy.url", play_outside_config.database_url)
|
||||
# alembic.command.upgrade(config=alembic_cfg, revision=alembic_revision)
|
||||
uvicorn.run(**play_outside_config.api_server.dict())
|
||||
|
||||
|
||||
@api_app.command()
|
||||
def justrun(
|
||||
env: str = typer.Option(
|
||||
"local",
|
||||
help="the environment to use",
|
||||
),
|
||||
alembic_revision: str = typer.Option(
|
||||
"head",
|
||||
help="the alembic revision to use",
|
||||
),
|
||||
):
|
||||
play_outside_config = get_config(env)
|
||||
Console().print(play_outside_config)
|
||||
uvicorn.run(**play_outside_config.api_server.dict())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
api_app()
|
||||
Loading…
Add table
Add a link
Reference in a new issue