Skip to content

Commit 2f8f886

Browse files
committed
add payment paid endpoint
1 parent 99801f2 commit 2f8f886

3 files changed

Lines changed: 46 additions & 21 deletions

File tree

app/dependencies.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import requests
2+
13
from peewee import *
24
from environs import Env
35
from redis import Redis
@@ -11,6 +13,9 @@
1113

1214
REDIS_URL = environment('REDIS_URL')
1315

16+
STOCK_URL = 'https://www.w3schools.com/python/demopage.php'
17+
18+
1419
def get_db():
1520
db = PostgresqlDatabase(
1621
database=DATABASE_NAME,
@@ -24,4 +29,4 @@ def get_queue():
2429
redis = Redis.from_url(url=REDIS_URL)
2530
queue = Queue(connection=redis)
2631

27-
return queue
32+
return queue

app/main.py

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44

55
from dependencies import get_db, get_queue
66
from schemas import ItemRequestSchema, ItemResponseSchema, ItemUpdateSchema
7-
from schemas import PaymentResponseSchema, PaymentRequestSchema
7+
from schemas import PaymentResponseSchema, PaymentRequestSchema, PaymentIssuedRequestSchema
88
from models import Item, Payment
99
from tasks import fill_file_with_hw, check_payment
1010

11-
1211
app = FastAPI(dependencies=[Depends(get_db)])
1312

1413

@@ -37,13 +36,11 @@ def get_items_list():
3736

3837
@app.post("/items", response_model=ItemResponseSchema)
3938
def create_items(item_body: ItemRequestSchema) -> dict:
40-
item = Item.create(
41-
title=item_body.title,
42-
price=item_body.price,
43-
category=item_body.category,
44-
image_url=item_body.image_url,
45-
description=item_body.description
46-
)
39+
item = Item.create(title=item_body.title,
40+
price=item_body.price,
41+
category=item_body.category,
42+
image_url=item_body.image_url,
43+
description=item_body.description)
4744

4845
response = ItemResponseSchema.from_orm(item)
4946

@@ -54,7 +51,7 @@ def create_items(item_body: ItemRequestSchema) -> dict:
5451
def delete_item(item_id: int):
5552
item_to_delete = Item.get_by_id(item_id)
5653
item_to_delete.delete_instance()
57-
54+
5855
return {'operation result': 'record deleted'}
5956

6057

@@ -68,25 +65,24 @@ def update_item(item_id: int, item_body: ItemUpdateSchema):
6865
item_to_update.image_url = item_body.image_url
6966
item_to_update.description = item_body.description
7067
item_to_update.save()
71-
68+
7269
return {'operation result': 'record updated'}
7370

7471

75-
@app.post("/payments", response_model=PaymentResponseSchema)
72+
@app.post("/payment", response_model=PaymentResponseSchema)
7673
def create_payment(payment_body: PaymentRequestSchema) -> dict:
77-
payment = Payment.create(
78-
item_id=payment_body.item_id,
79-
date=datetime.now(),
80-
status='new'
81-
)
74+
payment = Payment.create(item_id=payment_body.item_id,
75+
date=datetime.now(),
76+
status='new')
8277

8378
response = PaymentResponseSchema.from_orm(payment)
8479

8580
return response.dict()
8681

8782

88-
@app.post("/payments/{payment_id}", response_model=PaymentResponseSchema)
89-
def create_payment(payment_id: int, payment_body: PaymentRequestSchema) -> dict:
83+
@app.post("/payment/{payment_id}", response_model=PaymentResponseSchema)
84+
def update_payment(payment_id: int,
85+
payment_body: PaymentRequestSchema) -> dict:
9086
payment_to_update = Payment.get_by_id(payment_id)
9187
payment_to_update.status = payment_body.status
9288
payment_to_update.is_issued = payment_body.is_issued
@@ -96,6 +92,26 @@ def create_payment(payment_id: int, payment_body: PaymentRequestSchema) -> dict:
9692
return response.dict()
9793

9894

95+
@app.post("/payment-paid/{payment_id}")
96+
def make_payment_paid(payment_id: int):
97+
paid_payment = Payment.get_by_id(payment_id)
98+
paid_payment.status = 'paid'
99+
# send to stock payment_id
100+
101+
return {'operation result': 'payment processed'}
102+
103+
104+
@app.post("/payment-issued-status/{payment_id}")
105+
def set_payment_issued_status(payment_id: int,
106+
payment_issued_body: PaymentIssuedRequestSchema):
107+
paid_payment = Payment.get_by_id(payment_id)
108+
paid_payment.status = payment_issued_body.is_issued
109+
# if NOT is_issued:
110+
# start process to return money
111+
112+
return {}
113+
114+
99115
@app.get("/payments/{days}", response_model=List[PaymentResponseSchema])
100116
def get_payments_list(days: int):
101117
start_day = datetime.now() - timedelta(days=days)
@@ -113,9 +129,10 @@ def run_task():
113129

114130
return {}
115131

132+
116133
@app.post("/check-new-payment")
117134
def run_task():
118135
queue = get_queue()
119136
queue.enqueue(check_payment)
120137

121-
return {}
138+
return {}

app/schemas.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,6 @@ class PaymentResponseSchema(PaymentRequestSchema):
5050

5151
class Config:
5252
orm_mode = True
53+
54+
class PaymentIssuedRequestSchema(BaseModel):
55+
is_issued: bool

0 commit comments

Comments
 (0)