#!/usr/bin/env python3 import uvicorn from fastapi import Depends, FastAPI from peewee import Database from .config import PRODUCTION_MODE from .db import ORMBaseModel from .routers import auth, install, user api = FastAPI( title="kiwi-vpn API", description="This API enables the `kiwi-vpn` service.", contact={ "name": "Jörn-Michael Miehe", "email": "40151420+ldericher@users.noreply.github.com", }, license_info={ "name": "MIT License", "url": "https://opensource.org/licenses/mit-license.php", }, docs_url="/docs" if not PRODUCTION_MODE else None, redoc_url="/redoc" if not PRODUCTION_MODE else None, ) api.include_router(install.router) api.include_router(auth.router) api.include_router(user.router) @api.on_event("startup") async def api_startup( db: Database = Depends(install.connect_db) ): ORMBaseModel._meta.database.initialize(db) app = FastAPI() app.mount("/api", api) def main(): uvicorn.run( "kiwi_vpn_api.main:app", host="0.0.0.0", port=8000, reload=True, ) if __name__ == "__main__": main()