Fred808 commited on
Commit
92e7857
·
verified ·
1 Parent(s): e178301

Upload 12 files

Browse files
app/api/v1/endpoints/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from . import auth, menu, orders, payments, reports
app/api/v1/endpoints/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (189 Bytes). View file
 
app/api/v1/endpoints/__pycache__/auth.cpython-312.pyc ADDED
Binary file (1.15 kB). View file
 
app/api/v1/endpoints/__pycache__/menu.cpython-312.pyc ADDED
Binary file (1.52 kB). View file
 
app/api/v1/endpoints/__pycache__/orders.cpython-312.pyc ADDED
Binary file (2.44 kB). View file
 
app/api/v1/endpoints/__pycache__/payments.cpython-312.pyc ADDED
Binary file (1.71 kB). View file
 
app/api/v1/endpoints/__pycache__/reports.cpython-312.pyc ADDED
Binary file (1.38 kB). View file
 
app/api/v1/endpoints/auth.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, Depends, HTTPException
2
+ from app.services.auth_service import authenticate_user, create_access_token, get_current_user
3
+ from app.models.auth import LoginRequest, LoginResponse
4
+ from app.db.database import get_db, AsyncSession
5
+
6
+ router = APIRouter()
7
+
8
+ @router.post("/login", response_model=LoginResponse)
9
+ async def login(
10
+ user_data: LoginRequest,
11
+ db: AsyncSession = Depends(get_db)
12
+ ):
13
+ user = await authenticate_user(user_data.email, user_data.password, db)
14
+ if not user:
15
+ raise HTTPException(status_code=401, detail="Invalid credentials")
16
+ access_token = create_access_token(data={"sub": user.email})
17
+ return LoginResponse(access_token=access_token, token_type="bearer", user=user)
18
+
19
+ @router.post("/logout")
20
+ async def logout(current_user: dict = Depends(get_current_user)):
21
+ return {"message": "Successfully logged out"}
app/api/v1/endpoints/menu.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, Depends, HTTPException, status
2
+ from app.services.menu_service import MenuService
3
+ from app.models.menu import MenuItem, Category
4
+ from typing import List
5
+
6
+ router = APIRouter(prefix="/v1")
7
+
8
+ @router.get("/items", response_model=List[MenuItem])
9
+ async def get_menu_items(
10
+ menu_service: MenuService = Depends(MenuService)
11
+ ):
12
+ return await menu_service.get_menu_items()
13
+
14
+ @router.post("/items", response_model=MenuItem, status_code=status.HTTP_201_CREATED)
15
+ async def create_menu_item(
16
+ item: MenuItem,
17
+ menu_service: MenuService = Depends(MenuService)
18
+ ):
19
+ return await menu_service.create_menu_item(item)
20
+
21
+ @router.get("/categories", response_model=List[Category])
22
+ async def get_categories(
23
+ menu_service: MenuService = Depends(MenuService)
24
+ ):
25
+ return await menu_service.get_categories()
app/api/v1/endpoints/orders.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException, status, Depends
2
+ from app.services.order_service import OrderService
3
+ from app.models.orders import Order, OrderStatus
4
+ from typing import List
5
+
6
+ router = APIRouter()
7
+
8
+ @router.post("/", response_model=Order, status_code=status.HTTP_201_CREATED)
9
+ async def create_order(order: Order, service: OrderService = Depends(OrderService)):
10
+ return await service.create_order(order)
11
+
12
+ @router.get("/{order_id}", response_model=Order)
13
+ async def get_order(order_id: int, service: OrderService = Depends(OrderService)):
14
+ return await service.get_order(order_id)
15
+
16
+ @router.put("/{order_id}/status", response_model=Order)
17
+ async def update_order_status(
18
+ order_id: int,
19
+ status: OrderStatus,
20
+ service: OrderService = Depends(OrderService)
21
+ ):
22
+ return await service.update_status(order_id, status)
23
+
24
+ @router.get("/status/{status}", response_model=List[Order])
25
+ async def get_orders_by_status(
26
+ status: OrderStatus,
27
+ service: OrderService = Depends(OrderService)
28
+ ):
29
+ return await service.get_orders_by_status(status)
30
+
31
+ @router.get("/daily/{date}", response_model=List[Order])
32
+ async def get_daily_orders(
33
+ date: str,
34
+ service: OrderService = Depends(OrderService)
35
+ ):
36
+ return await service.get_daily_orders(date)
app/api/v1/endpoints/payments.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException, status, Depends
2
+ from app.services.payment_service import PaymentService
3
+ from app.models.payment import Payment, PaymentStatus
4
+
5
+ router = APIRouter()
6
+
7
+ @router.post("/", response_model=Payment, status_code=status.HTTP_201_CREATED)
8
+ async def process_payment(
9
+ payment: Payment,
10
+ service: PaymentService = Depends(PaymentService)
11
+ ):
12
+ return await service.process_payment(payment)
13
+
14
+ @router.get("/{payment_id}", response_model=Payment)
15
+ async def get_payment(
16
+ payment_id: int,
17
+ service: PaymentService = Depends(PaymentService)
18
+ ):
19
+ return await service.get_payment(payment_id)
20
+
21
+ @router.put("/{payment_id}/status", response_model=Payment)
22
+ async def update_payment_status(
23
+ payment_id: int,
24
+ status: PaymentStatus,
25
+ service: PaymentService = Depends(PaymentService)
26
+ ):
27
+ return await service.update_status(payment_id, status)
app/api/v1/endpoints/reports.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, Depends
2
+ from app.services.report_service import ReportService
3
+ from app.models.reports import DailyReport, WeeklyReport
4
+ from datetime import date
5
+ from fastapi.responses import JSONResponse
6
+ from fastapi import HTTPException, status
7
+
8
+ router = APIRouter()
9
+
10
+ @router.get("/daily/{date}", response_model=DailyReport)
11
+ async def get_daily_report(
12
+ date: date,
13
+ service: ReportService = Depends(ReportService)
14
+ ):
15
+ try:
16
+ return await service.generate_daily_report(date.isoformat())
17
+ except Exception as e:
18
+ raise HTTPException(
19
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
20
+ detail=f"Failed to generate daily report: {str(e)}"
21
+ )
22
+
23
+ @router.get("/weekly", response_model=WeeklyReport)
24
+ async def get_weekly_report(
25
+ end_date: date = None,
26
+ service: ReportService = Depends(ReportService)
27
+ ):
28
+ try:
29
+ return await service.generate_weekly_report(
30
+ end_date.isoformat() if end_date else None
31
+ )
32
+ except Exception as e:
33
+ raise HTTPException(
34
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
35
+ detail=f"Failed to generate weekly report: {str(e)}"
36
+ )