aboutsummaryrefslogtreecommitdiff
path: root/order-service/app/schemas
diff options
context:
space:
mode:
authoralex <[email protected]>2026-07-15 20:24:31 +0200
committeralex <[email protected]>2026-07-15 20:24:31 +0200
commit8e12cb9bb66adc7adaf6d276133d6f235d294d23 (patch)
tree31aa3f6a06407b39bb23d7cc724c70899795a788 /order-service/app/schemas
downloadorder-inventory-system-8e12cb9bb66adc7adaf6d276133d6f235d294d23.tar.xz
order-inventory-system-8e12cb9bb66adc7adaf6d276133d6f235d294d23.zip
init
Diffstat (limited to 'order-service/app/schemas')
-rw-r--r--order-service/app/schemas/order.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/order-service/app/schemas/order.py b/order-service/app/schemas/order.py
new file mode 100644
index 0000000..47aff2c
--- /dev/null
+++ b/order-service/app/schemas/order.py
@@ -0,0 +1,36 @@
+from datetime import datetime
+from decimal import Decimal
+from pydantic import BaseModel, Field, ConfigDict
+
+
+class OrderItemCreate(BaseModel):
+ product_id: int = Field(..., gt=0, description="Database ID of the product")
+ quantity: int = Field(..., gt=0, le=100, description="Must buy at least 1, max 100")
+ price: Decimal = Field(..., gt=0.00, description="The price per unit")
+
+
+class OrderItemOut(BaseModel):
+ id: int
+ product_id: int
+ quantity: int
+ price: Decimal
+
+ model_config = ConfigDict(from_attributes=True)
+
+
+class OrderCreate(BaseModel):
+ customer_id: int = Field(..., gt=0)
+ items: list[OrderItemCreate] = Field(
+ ..., min_length=1, description="Order must contain at least 1 item"
+ )
+
+
+class OrderOut(BaseModel):
+ id: int
+ customer_id: int
+ status: str
+ total_price: Decimal
+ created_at: datetime
+ items: list[OrderItemOut]
+
+ model_config = ConfigDict(from_attributes=True)