mirror of
https://github.com/Lyxminxx/jast.git
synced 2026-10-11 12:51:51 +02:00
redesign, added user system, added api endpoints
This commit is contained in:
1 parent
2c76e1df78
commit
72b8e569aa
17 files changed
+782
-99
No files matched your search
+44
@@ -0,0 +1,44 @@
|
||||
from ninja import NinjaAPI, Schema
|
||||
from typing import List
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
from core.models import Transaction, Category
|
||||
|
||||
api = NinjaAPI()
|
||||
|
||||
# --- Schemas (Data validation for Flutter) ---
|
||||
class CategorySchema(Schema):
|
||||
id: int
|
||||
name: str
|
||||
|
||||
class TransactionOut(Schema):
|
||||
id: int
|
||||
title: str
|
||||
amount: Decimal
|
||||
date: date
|
||||
category: CategorySchema | None = None
|
||||
|
||||
class TransactionIn(Schema):
|
||||
title: str
|
||||
amount: Decimal
|
||||
date: date
|
||||
category_id: int | None = None
|
||||
|
||||
# --- Endpoints ---
|
||||
@api.get("/transactions", response=List[TransactionOut])
|
||||
def list_transactions(request):
|
||||
return Transaction.objects.select_related('category').all().order_by('-date')
|
||||
|
||||
@api.post("/transactions", response=TransactionOut)
|
||||
def create_transaction(request, payload: TransactionIn):
|
||||
transaction = Transaction.objects.create(
|
||||
title=payload.title,
|
||||
amount=payload.amount,
|
||||
date=payload.date,
|
||||
category_id=payload.category_id
|
||||
)
|
||||
return transaction
|
||||
|
||||
@api.get("/categories", response=List[CategorySchema])
|
||||
def list_categories(request):
|
||||
return Category.objects.all()
|
||||
Reference in new issue
Block a user