You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.7 KiB
46 lines
1.7 KiB
2 years ago
|
from flask_apispec import marshal_with, doc, use_kwargs
|
||
|
from flask_apispec.views import MethodResource
|
||
|
from flask_restful import Resource
|
||
|
from schemes import (UserSchema, UserResponseSchema)
|
||
|
from config import db
|
||
|
from models import User
|
||
|
|
||
|
#!______________ User ______________
|
||
|
class UserService(MethodResource, Resource):
|
||
|
@doc(description='Get User by User_id', tags=['User'])
|
||
|
@marshal_with(UserResponseSchema)
|
||
|
def get(self, user_id):
|
||
|
quser = db.session.query(User).get(user_id)
|
||
|
return UserSchema().dump(quser)
|
||
|
|
||
|
@doc(description='Add new User', tags=['User'])
|
||
|
@use_kwargs(UserSchema, location=('json'))
|
||
|
@marshal_with(UserResponseSchema())
|
||
|
def post(self, user, user_id):
|
||
|
db.session.add(user)
|
||
|
db.session.commit()
|
||
|
return UserSchema().dump(user)
|
||
|
|
||
|
@doc(description='Update User with PUT', tags=['User'])
|
||
|
@use_kwargs(UserSchema, location=('json'))
|
||
|
@marshal_with(UserResponseSchema())
|
||
|
def put(self, user, user_id):
|
||
|
db.session.add(user)
|
||
|
db.session.commit()
|
||
|
return UserSchema().dump(user)
|
||
|
|
||
|
@doc(description='Delete existing User', tags=['User'])
|
||
|
@use_kwargs(UserSchema, location=('json'))
|
||
|
@marshal_with(UserResponseSchema())
|
||
|
def delete(self, user, user_id):
|
||
|
user = db.session.query(User).get(user_id)
|
||
|
db.session.delete(user)
|
||
|
db.session.commit()
|
||
|
return UserSchema().dump(user)
|
||
|
|
||
|
class UserListService(MethodResource, Resource):
|
||
|
@doc(description='Get a List of all User', tags=['List'])
|
||
|
@marshal_with(UserResponseSchema(many=True))
|
||
|
def get(self):
|
||
|
users = db.session.query(User).all()
|
||
|
return UserSchema(many=True).dump(users)
|