Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
BookingMyHrManagement
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chanachai
BookingMyHrManagement
Commits
98040cff
Commit
98040cff
authored
Mar 15, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
api
parent
e7d7b98c
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
124 additions
and
120 deletions
+124
-120
borrow_controller.cpython-312.pyc
...controllers/__pycache__/borrow_controller.cpython-312.pyc
+0
-0
borrow_controller.py
API-Fast/src/controllers/borrow_controller.py
+39
-31
project_controller.py
API-Fast/src/controllers/project_controller.py
+6
-6
project_equipment_controller.py
API-Fast/src/controllers/project_equipment_controller.py
+13
-13
project_member_controller.py
API-Fast/src/controllers/project_member_controller.py
+13
-13
equipments.cpython-312.pyc
API-Fast/src/models/__pycache__/equipments.cpython-312.pyc
+0
-0
borrow_transaction.py
API-Fast/src/models/borrow_transaction.py
+3
-3
project.py
API-Fast/src/models/project.py
+1
-1
project_equipment.py
API-Fast/src/models/project_equipment.py
+3
-3
project_member.py
API-Fast/src/models/project_member.py
+3
-3
borrow_routes.py
API-Fast/src/routes/borrow_routes.py
+9
-9
project_equipment_routes.py
API-Fast/src/routes/project_equipment_routes.py
+9
-9
project_member_routes.py
API-Fast/src/routes/project_member_routes.py
+9
-9
borrow_schema.cpython-312.pyc
...ast/src/schemas/__pycache__/borrow_schema.cpython-312.pyc
+0
-0
borrow_schema.py
API-Fast/src/schemas/borrow_schema.py
+5
-9
project_equipment_schema.py
API-Fast/src/schemas/project_equipment_schema.py
+5
-5
project_member_schema.py
API-Fast/src/schemas/project_member_schema.py
+5
-5
project_schema.py
API-Fast/src/schemas/project_schema.py
+1
-1
No files found.
API-Fast/src/controllers/__pycache__/borrow_controller.cpython-312.pyc
View file @
98040cff
No preview for this file type
API-Fast/src/controllers/borrow_controller.py
View file @
98040cff
...
...
@@ -5,33 +5,43 @@ from datetime import datetime
from
fastapi
import
HTTPException
from
sqlalchemy.ext.asyncio
import
AsyncSession
from
sqlalchemy
import
select
from
..models.project_equipment
import
ProjectEquipment
from
..models.project_member
import
ProjectMember
from
..models.borrow_transaction
import
BorrowTransaction
from
..models.project_equipment
import
ProjectEquipment
from
..models.equipment
import
Equipment
from
..models.equipment
s
import
Equipment
from
..models.member
import
Member
# ถ้าต้องเช็คว่ามี member นี้จริงไหม
from
..schemas.borrow_schema
import
BorrowCreate
,
BorrowUpdate
# CREATE
# - ตรวจสอบ member
_i
d มีจริงไหม (ถ้าต้องการ)
# - ตรวจสอบ project_equipment (pe
_i
d) มีจริง + พอไหม
# - ตรวจสอบ member
I
d มีจริงไหม (ถ้าต้องการ)
# - ตรวจสอบ project_equipment (pe
I
d) มีจริง + พอไหม
# - ลดจำนวนใน project_equipment
# - สร้าง record borrow_transaction
async
def
create_borrow_transaction
(
db
:
AsyncSession
,
borrow_in
:
BorrowCreate
):
# (ถ้าต้องการตรวจสอบว่ามี member_id นี้ไหม)
# result_member = await db.execute(select(Member).where(Member.memberId == borrow_in.member_id))
# member_db = result_member.scalar_one_or_none()
# if not member_db:
# raise HTTPException(status_code=404, detail="Member not found")
# 1) หา project_equipments จาก pe_id
# 1) หา projectEquipment จาก peId
result_pe
=
await
db
.
execute
(
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
_id
==
borrow_in
.
pe_i
d
)
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
Id
==
borrow_in
.
peI
d
)
)
projectEquipment
=
result_pe
.
scalar_one_or_none
()
if
not
projectEquipment
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
)
# 1.1) ตรวจสอบว่า memberId อยู่ใน projectId นี้หรือไม่
# (projectEquipment.projectId) + (borrow_in.memberId)
check_pm
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
memberId
==
borrow_in
.
memberId
,
ProjectMember
.
projectId
==
projectEquipment
.
projectId
)
)
pm_record
=
check_pm
.
scalar_one_or_none
()
if
not
pm_record
:
raise
HTTPException
(
status_code
=
403
,
detail
=
"Member is not in this project, cannot borrow."
)
# 2) ตรวจสอบจำนวน
if
projectEquipment
.
quantity_in_project
<
borrow_in
.
quantity_borrowed
:
raise
HTTPException
(
status_code
=
400
,
detail
=
"Not enough equipment in project"
)
...
...
@@ -42,8 +52,8 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowCreate):
# 4) สร้าง BorrowTransaction
new_borrow
=
BorrowTransaction
(
member
_id
=
borrow_in
.
member_i
d
,
pe
_id
=
borrow_in
.
pe_i
d
,
member
Id
=
borrow_in
.
memberI
d
,
pe
Id
=
borrow_in
.
peI
d
,
quantity_borrowed
=
borrow_in
.
quantity_borrowed
,
status
=
borrow_in
.
status
or
"borrowed"
)
...
...
@@ -53,46 +63,44 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowCreate):
await
db
.
refresh
(
new_borrow
)
return
new_borrow
# UPDATE
# - ถ้าเปลี่ยน status เป็น "returned" => เช็ค equipment.is_returnable => บวกจำนวนคืน
async
def
update_borrow_transaction
(
db
:
AsyncSession
,
borrow_id
:
UUID
,
borrow_up
:
BorrowUpdate
):
# 1) หา borrowTransaction เดิม
# UPDATE (คืนอุปกรณ์, เปลี่ยนสถานะ)
async
def
update_borrow_transaction
(
db
:
AsyncSession
,
borrowId
:
UUID
,
borrow_up
:
BorrowUpdate
):
# 1) หา borrow เดิม
result_bt
=
await
db
.
execute
(
select
(
BorrowTransaction
)
.
where
(
BorrowTransaction
.
borrow
_id
==
borrow_i
d
)
select
(
BorrowTransaction
)
.
where
(
BorrowTransaction
.
borrow
Id
==
borrowI
d
)
)
borrowTx
=
result_bt
.
scalar_one_or_none
()
if
not
borrowTx
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"BorrowTransaction not found"
)
# ถ้า user ส่ง status มา
if
borrow_up
.
status
:
# 2) ถ้าเปลี่ยนเป็น 'returned'
if
borrow_up
.
status
==
"returned"
:
#
หา p
rojectEquipment
#
2.1) หา P
rojectEquipment
result_pe
=
await
db
.
execute
(
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
_id
==
borrowTx
.
pe_i
d
)
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
Id
==
borrowTx
.
peI
d
)
)
projectEquipment
=
result_pe
.
scalar_one_or_none
()
if
not
projectEquipment
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
)
#
หา e
quipment
#
2.2) หา E
quipment
result_eq
=
await
db
.
execute
(
select
(
Equipment
)
.
where
(
Equipment
.
equipment
_id
==
projectEquipment
.
equipment_i
d
)
select
(
Equipment
)
.
where
(
Equipment
.
equipment
Id
==
projectEquipment
.
equipmentI
d
)
)
equipment
=
result_eq
.
scalar_one_or_none
()
if
not
equipment
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"Equipment not found"
)
# ถ้า
is_returnable => บวกจำนว
น
# ถ้า
เป็นอุปกรณ์ต้องคืน => บวกจำนวนคื
น
if
equipment
.
is_returnable
:
projectEquipment
.
quantity_in_project
+=
borrowTx
.
quantity_borrowed
db
.
add
(
projectEquipment
)
borrowTx
.
status
=
"returned"
borrowTx
.
returned_date
=
datetime
.
utcnow
()
else
:
#
เปลี่ยน
เป็นสถานะอื่น
#
อัปเดต
เป็นสถานะอื่น
borrowTx
.
status
=
borrow_up
.
status
db
.
add
(
borrowTx
)
...
...
@@ -106,15 +114,15 @@ async def get_all_borrow_transactions(db: AsyncSession):
return
result
.
scalars
()
.
all
()
# GET BY ID
async
def
get_borrow_transaction_by_id
(
db
:
AsyncSession
,
borrow
_i
d
:
UUID
):
async
def
get_borrow_transaction_by_id
(
db
:
AsyncSession
,
borrow
I
d
:
UUID
):
result
=
await
db
.
execute
(
select
(
BorrowTransaction
)
.
where
(
BorrowTransaction
.
borrow
_id
==
borrow_i
d
)
select
(
BorrowTransaction
)
.
where
(
BorrowTransaction
.
borrow
Id
==
borrowI
d
)
)
return
result
.
scalar_one_or_none
()
# DELETE
async
def
delete_borrow_transaction
(
db
:
AsyncSession
,
borrow
_i
d
:
UUID
):
borrowTx
=
await
db
.
get
(
BorrowTransaction
,
borrow
_i
d
)
async
def
delete_borrow_transaction
(
db
:
AsyncSession
,
borrow
I
d
:
UUID
):
borrowTx
=
await
db
.
get
(
BorrowTransaction
,
borrow
I
d
)
if
not
borrowTx
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"BorrowTransaction not found"
)
...
...
API-Fast/src/controllers/project_controller.py
View file @
98040cff
...
...
@@ -35,21 +35,21 @@ async def get_all_projects(db: AsyncSession):
# READ ONE
async
def
get_project_by_id
(
db
:
AsyncSession
,
project
_i
d
:
UUID
project
I
d
:
UUID
):
result
=
await
db
.
execute
(
select
(
Project
)
.
where
(
Project
.
project
_id
==
project_i
d
)
select
(
Project
)
.
where
(
Project
.
project
Id
==
projectI
d
)
)
return
result
.
scalar_one_or_none
()
# UPDATE
async
def
update_project
(
db
:
AsyncSession
,
project
_i
d
:
UUID
,
project
I
d
:
UUID
,
project_in
:
ProjectUpdate
):
result
=
await
db
.
execute
(
select
(
Project
)
.
where
(
Project
.
project
_id
==
project_i
d
)
select
(
Project
)
.
where
(
Project
.
project
Id
==
projectI
d
)
)
project_db
=
result
.
scalar_one_or_none
()
...
...
@@ -72,8 +72,8 @@ async def update_project(
return
project_db
# DELETE
async
def
delete_project
(
db
:
AsyncSession
,
project
_i
d
:
UUID
):
project_db
=
await
db
.
get
(
Project
,
project
_i
d
)
async
def
delete_project
(
db
:
AsyncSession
,
project
I
d
:
UUID
):
project_db
=
await
db
.
get
(
Project
,
project
I
d
)
if
not
project_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"Project not found"
...
...
API-Fast/src/controllers/project_equipment_controller.py
View file @
98040cff
...
...
@@ -17,8 +17,8 @@ async def create_project_equipment(
pe_in
:
ProjectEquipmentCreate
):
new_pe
=
ProjectEquipment
(
project
_id
=
pe_in
.
project_i
d
,
equipment
_id
=
pe_in
.
equipment_i
d
,
project
Id
=
pe_in
.
projectI
d
,
equipment
Id
=
pe_in
.
equipmentI
d
,
quantity_in_project
=
pe_in
.
quantity_in_project
)
db
.
add
(
new_pe
)
...
...
@@ -34,22 +34,22 @@ async def get_all_project_equipments(db: AsyncSession):
# READ ONE
async
def
get_project_equipment_by_id
(
db
:
AsyncSession
,
pe
_i
d
:
UUID
pe
I
d
:
UUID
):
result
=
await
db
.
execute
(
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
_id
==
pe_i
d
)
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
Id
==
peI
d
)
)
return
result
.
scalar_one_or_none
()
# UPDATE
async
def
update_project_equipment
(
db
:
AsyncSession
,
pe
_i
d
:
UUID
,
pe
I
d
:
UUID
,
pe_in
:
ProjectEquipmentUpdate
):
# หา record ตาม pe
_i
d
# หา record ตาม pe
I
d
result
=
await
db
.
execute
(
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
_id
==
pe_i
d
)
select
(
ProjectEquipment
)
.
where
(
ProjectEquipment
.
pe
Id
==
peI
d
)
)
pe_db
=
result
.
scalar_one_or_none
()
if
not
pe_db
:
...
...
@@ -58,10 +58,10 @@ async def update_project_equipment(
)
# อัปเดตฟิลด์
if
pe_in
.
project
_i
d
is
not
None
:
pe_db
.
project
_id
=
pe_in
.
project_i
d
if
pe_in
.
equipment
_i
d
is
not
None
:
pe_db
.
equipment
_id
=
pe_in
.
equipment_i
d
if
pe_in
.
project
I
d
is
not
None
:
pe_db
.
project
Id
=
pe_in
.
projectI
d
if
pe_in
.
equipment
I
d
is
not
None
:
pe_db
.
equipment
Id
=
pe_in
.
equipmentI
d
if
pe_in
.
quantity_in_project
is
not
None
:
pe_db
.
quantity_in_project
=
pe_in
.
quantity_in_project
...
...
@@ -72,9 +72,9 @@ async def update_project_equipment(
# DELETE
async
def
delete_project_equipment
(
db
:
AsyncSession
,
pe
_i
d
:
UUID
pe
I
d
:
UUID
):
pe_db
=
await
db
.
get
(
ProjectEquipment
,
pe
_i
d
)
pe_db
=
await
db
.
get
(
ProjectEquipment
,
pe
I
d
)
if
not
pe_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
...
...
API-Fast/src/controllers/project_member_controller.py
View file @
98040cff
...
...
@@ -17,8 +17,8 @@ async def create_project_member(
pm_in
:
ProjectMemberCreate
):
new_pm
=
ProjectMember
(
user_id
=
pm_in
.
user_i
d
,
project
_id
=
pm_in
.
project_i
d
,
memberId
=
pm_in
.
memberI
d
,
project
Id
=
pm_in
.
projectI
d
,
role_in_project
=
pm_in
.
role_in_project
)
db
.
add
(
new_pm
)
...
...
@@ -32,28 +32,28 @@ async def get_all_project_members(db: AsyncSession):
return
result
.
scalars
()
.
all
()
# READ ONE
async
def
get_project_member_by_id
(
db
:
AsyncSession
,
pm
_i
d
:
UUID
):
result
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
pm
_id
==
pm_i
d
))
async
def
get_project_member_by_id
(
db
:
AsyncSession
,
pm
I
d
:
UUID
):
result
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
pm
Id
==
pmI
d
))
return
result
.
scalar_one_or_none
()
# UPDATE
async
def
update_project_member
(
db
:
AsyncSession
,
pm
_i
d
:
UUID
,
pm
I
d
:
UUID
,
pm_in
:
ProjectMemberUpdate
):
# ค้นหาจาก pm
_i
d
result
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
pm
_id
==
pm_i
d
))
# ค้นหาจาก pm
I
d
result
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
pm
Id
==
pmI
d
))
pm_db
=
result
.
scalar_one_or_none
()
if
not
pm_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectMember not found"
)
# อัปเดตฟิลด์
if
pm_in
.
user_i
d
is
not
None
:
pm_db
.
user_id
=
pm_in
.
user_i
d
if
pm_in
.
project
_i
d
is
not
None
:
pm_db
.
project
_id
=
pm_in
.
project_i
d
if
pm_in
.
memberI
d
is
not
None
:
pm_db
.
memberId
=
pm_in
.
memberI
d
if
pm_in
.
project
I
d
is
not
None
:
pm_db
.
project
Id
=
pm_in
.
projectI
d
if
pm_in
.
role_in_project
is
not
None
:
pm_db
.
role_in_project
=
pm_in
.
role_in_project
...
...
@@ -62,8 +62,8 @@ async def update_project_member(
return
pm_db
# DELETE
async
def
delete_project_member
(
db
:
AsyncSession
,
pm
_i
d
:
UUID
):
pm_db
=
await
db
.
get
(
ProjectMember
,
pm
_i
d
)
async
def
delete_project_member
(
db
:
AsyncSession
,
pm
I
d
:
UUID
):
pm_db
=
await
db
.
get
(
ProjectMember
,
pm
I
d
)
if
not
pm_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectMember not found"
)
...
...
API-Fast/src/models/__pycache__/equipments.cpython-312.pyc
View file @
98040cff
No preview for this file type
API-Fast/src/models/borrow_transaction.py
View file @
98040cff
...
...
@@ -9,13 +9,13 @@ from ..config.database import Base
class
BorrowTransaction
(
Base
):
__tablename__
=
"borrow_transactions"
borrow
_i
d
=
Column
(
borrow
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
primary_key
=
True
,
default
=
uuid
.
uuid4
)
pe
_id
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
# FK -> project_equipments.pe_i
d
member
_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
# FK -> member.memberId (ตาม Model Member)
pe
Id
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
# FK -> project_equipments.peI
d
member
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
# FK -> member.memberId (ตาม Model Member)
quantity_borrowed
=
Column
(
Integer
,
nullable
=
False
,
default
=
1
)
status
=
Column
(
String
(
50
),
nullable
=
False
,
default
=
"borrowed"
)
returned_date
=
Column
(
DateTime
,
nullable
=
True
)
...
...
API-Fast/src/models/project.py
View file @
98040cff
...
...
@@ -8,7 +8,7 @@ from ..config.database import Base
class
Project
(
Base
):
__tablename__
=
'projects'
# ชื่อตารางใน DB
project
_i
d
=
Column
(
project
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
primary_key
=
True
,
default
=
uuid
.
uuid4
...
...
API-Fast/src/models/project_equipment.py
View file @
98040cff
...
...
@@ -7,11 +7,11 @@ from ..config.database import Base
class
ProjectEquipment
(
Base
):
__tablename__
=
"project_equipments"
pe
_i
d
=
Column
(
pe
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
primary_key
=
True
,
default
=
uuid
.
uuid4
)
project
_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
equipment
_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
project
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
equipment
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
quantity_in_project
=
Column
(
Integer
,
nullable
=
False
,
default
=
0
)
API-Fast/src/models/project_member.py
View file @
98040cff
...
...
@@ -8,7 +8,7 @@ from ..config.database import Base
class
ProjectMember
(
Base
):
__tablename__
=
'project_members'
pm
_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
primary_key
=
True
,
default
=
uuid
.
uuid4
)
user_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
project
_i
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
pm
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
primary_key
=
True
,
default
=
uuid
.
uuid4
)
memberI
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
project
I
d
=
Column
(
UUID
(
as_uuid
=
True
),
nullable
=
False
)
role_in_project
=
Column
(
String
(
100
),
nullable
=
True
)
API-Fast/src/routes/borrow_routes.py
View file @
98040cff
...
...
@@ -31,13 +31,13 @@ async def create_borrow_endpoint(
return
new_borrow
# UPDATE (เช่น คืนอุปกรณ์)
@router.put
(
"/{borrow
_i
d}"
,
response_model
=
BorrowResponse
)
@router.put
(
"/{borrow
I
d}"
,
response_model
=
BorrowResponse
)
async
def
update_borrow_endpoint
(
borrow
_i
d
:
UUID
,
borrow
I
d
:
UUID
,
borrow_up
:
BorrowUpdate
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
updated_borrow
=
await
update_borrow_transaction
(
db
,
borrow
_i
d
,
borrow_up
)
updated_borrow
=
await
update_borrow_transaction
(
db
,
borrow
I
d
,
borrow_up
)
return
updated_borrow
# GET ALL
...
...
@@ -46,20 +46,20 @@ async def get_all_borrows_endpoint(db: AsyncSession = Depends(get_db)):
return
await
get_all_borrow_transactions
(
db
)
# GET BY ID
@router.get
(
"/{borrow
_i
d}"
,
response_model
=
BorrowResponse
)
@router.get
(
"/{borrow
I
d}"
,
response_model
=
BorrowResponse
)
async
def
get_borrow_by_id_endpoint
(
borrow
_i
d
:
UUID
,
borrow
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
tx
=
await
get_borrow_transaction_by_id
(
db
,
borrow
_i
d
)
tx
=
await
get_borrow_transaction_by_id
(
db
,
borrow
I
d
)
if
not
tx
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"BorrowTransaction not found"
)
return
tx
# DELETE
@router.delete
(
"/{borrow
_i
d}"
)
@router.delete
(
"/{borrow
I
d}"
)
async
def
delete_borrow_endpoint
(
borrow
_i
d
:
UUID
,
borrow
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
return
await
delete_borrow_transaction
(
db
,
borrow
_i
d
)
return
await
delete_borrow_transaction
(
db
,
borrow
I
d
)
API-Fast/src/routes/project_equipment_routes.py
View file @
98040cff
...
...
@@ -37,30 +37,30 @@ async def read_all_pe_endpoint(db: AsyncSession = Depends(get_db)):
return
pes
# READ ONE
@router.get
(
"/{pe
_i
d}"
,
response_model
=
ProjectEquipmentResponse
)
@router.get
(
"/{pe
I
d}"
,
response_model
=
ProjectEquipmentResponse
)
async
def
read_pe_by_id_endpoint
(
pe
_i
d
:
UUID
,
pe
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
pe_db
=
await
get_project_equipment_by_id
(
db
,
pe
_i
d
)
pe_db
=
await
get_project_equipment_by_id
(
db
,
pe
I
d
)
if
not
pe_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
)
return
pe_db
# UPDATE
@router.put
(
"/{pe
_i
d}"
,
response_model
=
ProjectEquipmentResponse
)
@router.put
(
"/{pe
I
d}"
,
response_model
=
ProjectEquipmentResponse
)
async
def
update_pe_endpoint
(
pe
_i
d
:
UUID
,
pe
I
d
:
UUID
,
pe_in
:
ProjectEquipmentUpdate
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
updated_pe
=
await
update_project_equipment
(
db
,
pe
_i
d
,
pe_in
)
updated_pe
=
await
update_project_equipment
(
db
,
pe
I
d
,
pe_in
)
return
updated_pe
# DELETE
@router.delete
(
"/{pe
_i
d}"
)
@router.delete
(
"/{pe
I
d}"
)
async
def
delete_pe_endpoint
(
pe
_i
d
:
UUID
,
pe
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
return
await
delete_project_equipment
(
db
,
pe
_i
d
)
return
await
delete_project_equipment
(
db
,
pe
I
d
)
API-Fast/src/routes/project_member_routes.py
View file @
98040cff
...
...
@@ -37,30 +37,30 @@ async def read_all_pms(db: AsyncSession = Depends(get_db)):
return
pms
# READ ONE
@router.get
(
"/{pm
_i
d}"
,
response_model
=
ProjectMemberResponse
)
@router.get
(
"/{pm
I
d}"
,
response_model
=
ProjectMemberResponse
)
async
def
read_pm_by_id
(
pm
_i
d
:
UUID
,
pm
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
pm_db
=
await
get_project_member_by_id
(
db
,
pm
_i
d
)
pm_db
=
await
get_project_member_by_id
(
db
,
pm
I
d
)
if
not
pm_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectMember not found"
)
return
pm_db
# UPDATE
@router.put
(
"/{pm
_i
d}"
,
response_model
=
ProjectMemberResponse
)
@router.put
(
"/{pm
I
d}"
,
response_model
=
ProjectMemberResponse
)
async
def
update_pm_endpoint
(
pm
_i
d
:
UUID
,
pm
I
d
:
UUID
,
pm_in
:
ProjectMemberUpdate
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
updated_pm
=
await
update_project_member
(
db
,
pm
_i
d
,
pm_in
)
updated_pm
=
await
update_project_member
(
db
,
pm
I
d
,
pm_in
)
return
updated_pm
# DELETE
@router.delete
(
"/{pm
_i
d}"
)
@router.delete
(
"/{pm
I
d}"
)
async
def
delete_pm_endpoint
(
pm
_i
d
:
UUID
,
pm
I
d
:
UUID
,
db
:
AsyncSession
=
Depends
(
get_db
)
):
return
await
delete_project_member
(
db
,
pm
_i
d
)
return
await
delete_project_member
(
db
,
pm
I
d
)
API-Fast/src/schemas/__pycache__/borrow_schema.cpython-312.pyc
View file @
98040cff
No preview for this file type
API-Fast/src/schemas/borrow_schema.py
View file @
98040cff
# myproject/schemas/borrow_schema.py
from
pydantic
import
BaseModel
from
uuid
import
UUID
from
typing
import
Optional
from
datetime
import
datetime
# CREATE Borrow (ตอน user กดยืม)
class
BorrowCreate
(
BaseModel
):
member
_i
d
:
UUID
pe
_i
d
:
UUID
member
I
d
:
UUID
pe
I
d
:
UUID
quantity_borrowed
:
int
status
:
Optional
[
str
]
=
"borrowed"
# UPDATE Borrow (เปลี่ยนสถานะเป็น returned, canceled ฯลฯ)
class
BorrowUpdate
(
BaseModel
):
status
:
Optional
[
str
]
=
None
# RESPONSE
class
BorrowResponse
(
BaseModel
):
borrow
_i
d
:
UUID
pe
_i
d
:
UUID
member
_i
d
:
UUID
borrow
I
d
:
UUID
pe
I
d
:
UUID
member
I
d
:
UUID
quantity_borrowed
:
int
status
:
str
returned_date
:
Optional
[
datetime
]
=
None
...
...
API-Fast/src/schemas/project_equipment_schema.py
View file @
98040cff
...
...
@@ -4,20 +4,20 @@ from typing import Optional
from
uuid
import
UUID
class
ProjectEquipmentBase
(
BaseModel
):
project
_i
d
:
UUID
equipment
_i
d
:
UUID
project
I
d
:
UUID
equipment
I
d
:
UUID
quantity_in_project
:
int
=
0
class
ProjectEquipmentCreate
(
ProjectEquipmentBase
):
pass
class
ProjectEquipmentUpdate
(
BaseModel
):
project
_i
d
:
Optional
[
UUID
]
=
None
equipment
_i
d
:
Optional
[
UUID
]
=
None
project
I
d
:
Optional
[
UUID
]
=
None
equipment
I
d
:
Optional
[
UUID
]
=
None
quantity_in_project
:
Optional
[
int
]
=
None
class
ProjectEquipmentResponse
(
ProjectEquipmentBase
):
pe
_i
d
:
UUID
pe
I
d
:
UUID
class
Config
:
orm_mode
=
True
API-Fast/src/schemas/project_member_schema.py
View file @
98040cff
...
...
@@ -5,20 +5,20 @@ from typing import Optional
from
uuid
import
UUID
class
ProjectMemberBase
(
BaseModel
):
user_i
d
:
UUID
project
_i
d
:
UUID
memberI
d
:
UUID
project
I
d
:
UUID
role_in_project
:
Optional
[
str
]
=
None
class
ProjectMemberCreate
(
ProjectMemberBase
):
pass
class
ProjectMemberUpdate
(
BaseModel
):
user_i
d
:
Optional
[
UUID
]
=
None
project
_i
d
:
Optional
[
UUID
]
=
None
memberI
d
:
Optional
[
UUID
]
=
None
project
I
d
:
Optional
[
UUID
]
=
None
role_in_project
:
Optional
[
str
]
=
None
class
ProjectMemberResponse
(
ProjectMemberBase
):
pm
_i
d
:
UUID
pm
I
d
:
UUID
class
Config
:
orm_mode
=
True
API-Fast/src/schemas/project_schema.py
View file @
98040cff
...
...
@@ -21,7 +21,7 @@ class ProjectUpdate(BaseModel):
end_date
:
Optional
[
date
]
=
None
class
ProjectResponse
(
ProjectBase
):
project
_i
d
:
UUID
project
I
d
:
UUID
class
Config
:
orm_mode
=
True
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment