import uvicorn from fastapi import FastAPI from starlette.middleware.sessions import SessionMiddleware from .core.config import settings from .db.base import reg # noqa: F401 from .routers import ( customer, customer_discount, db_settings, device, guest_book, header_footer, login, menu_category, modifier, modifier_category, printer, product, regime, role, sale_category, section, section_printer, settle_option, table, tax, temporal_product, update_product_prices, user, ) from .routers.reports import ( beer_sale_report, bill_settlement_report, cashier_report, discount_report, menu_engineering_report, product_sale_report, product_updates_report, sale_report, tax_report, ) from .routers.voucher import ( cancel, change, merge_move, receive_payment, save, show, split, update, ) app = FastAPI() app.add_middleware(SessionMiddleware, secret_key=settings.MIDDLEWARE_SECRET_KEY) app.include_router(login.router, tags=["login"]) app.include_router(role.router, prefix="/api/roles", tags=["users"]) app.include_router(user.router, prefix="/api/users", tags=["users"]) app.include_router(modifier.router, prefix="/api/modifiers", tags=["modifiers"]) app.include_router(modifier_category.router, prefix="/api/modifier-categories", tags=["modifiers"]) app.include_router(printer.router, prefix="/api/printers", tags=["printers"]) app.include_router(menu_category.router, prefix="/api/menu-categories", tags=["products"]) app.include_router(product.router, prefix="/api/products", tags=["products"]) app.include_router(temporal_product.router, prefix="/api/temporal-products", tags=["products"]) app.include_router(device.router, prefix="/api/devices", tags=["devices"]) app.include_router(sale_category.router, prefix="/api/sale-categories", tags=["products"]) app.include_router(header_footer.router, prefix="/api/header-footer", tags=["products"]) app.include_router(product_updates_report.router, prefix="/api/product-updates-report", tags=["products"]) app.include_router(update_product_prices.router, prefix="/api/update-product-prices", tags=["products"]) app.include_router(section.router, prefix="/api/sections", tags=["sections"]) app.include_router(section_printer.router, prefix="/api/section-printers", tags=["section-printers"]) app.include_router(settle_option.router, prefix="/api/settle-options", tags=["settle-options"]) app.include_router(db_settings.router, prefix="/api/settings", tags=["settings"]) app.include_router(tax.router, prefix="/api/taxes", tags=["taxes"]) app.include_router(regime.router, prefix="/api/regimes", tags=["regimes"]) app.include_router(table.router, prefix="/api/tables", tags=["sections"]) app.include_router( beer_sale_report.router, prefix="/api/beer-sale-report", tags=["reports"], ) app.include_router( bill_settlement_report.router, prefix="/api/bill-settlement-report", tags=["reports"], ) app.include_router(cashier_report.router, prefix="/api/cashier-report", tags=["reports"]) app.include_router(discount_report.router, prefix="/api/discount-report", tags=["reports"]) app.include_router(product_sale_report.router, prefix="/api/product-sale-report", tags=["reports"]) app.include_router(sale_report.router, prefix="/api/sale-report", tags=["reports"]) app.include_router(tax_report.router, prefix="/api/tax-report", tags=["reports"]) app.include_router(menu_engineering_report.router, prefix="/api/menu-engineering-report", tags=["reports"]) app.include_router(guest_book.router, prefix="/api/guest-book", tags=["guest-book"]) app.include_router(customer.router, prefix="/api/customers", tags=["guest-book"]) app.include_router(customer_discount.router, prefix="/api/customer-discounts", tags=["guest-book"]) app.include_router(show.router, prefix="/api/voucher", tags=["voucher"]) app.include_router(save.router, prefix="/api/voucher", tags=["voucher"]) app.include_router(update.router, prefix="/api/voucher", tags=["voucher"]) app.include_router(receive_payment.router, prefix="/api/voucher", tags=["voucher"]) app.include_router(cancel.router, prefix="/api/voucher", tags=["voucher"]) app.include_router(merge_move.router, prefix="/api", tags=["voucher"]) app.include_router(split.router, prefix="/api", tags=["voucher"]) app.include_router(change.router, prefix="/api/voucher", tags=["voucher"]) def init(): uvicorn.run(app, host=settings.HOST, port=settings.PORT)