bitprj / bit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Create Tag CRUD Routes and Connection Routes

bryanwong8 opened this issue · comments

Is your feature request related to a problem? Please describe.
We need to implement CRUD routes for Tags to allow them to be created, updated, deleted, and searched.

Describe the solution you'd like
Routes need to be created:

  • CreateTag - /api/tags POST
  • FetchTags - /api/tags GET
  • UpdateTag - /api/tags/<int:tag_id> PUT
  • DeleteTag - /api/tags/<int:tag_id> DEL
  • FetchTag - /api/tags/<int:tag_id> GET
  • FollowTag - /api/tags/<int:tag_id>/followers PUT

Routes/functions to implement/change
Should create a TagCrud class to implement the CRUD routes with Flask-Restful

  • TagCRUD will contain: FetchTag, UpdateTag, DeleteTag
  • Tags will contain: FetchTags, CreateTag
  • TagFollowers will contain: FollowTag
    example:
class ModelCRUD(Resource):
    def get(self):
    def post(self):
    def put(self):
    def delete(self):

Additional context

  • CreateTag: When creating a Tag, validate it with the TagFormSchema. Create a function called create_tag in utils.py in the tags folder. The function should create the Tag and return it. In the route call the create_tag function, add it to the db session and commit it. If successful, return:
{
	"message": "Tag successfully created"
}, 201
  • UpdateTag: Update a Tag by first validating the form data with the TagFormData schema. Query for the Tag by the id given in the route. Create a function called update_tag in utils.py in the tags folder it should take in the Tag and form data as parameters. The function should update the Tag's parameters. If successful, return:
    return:
{
	"message": "Tag successfully updated"
}, 200
  • DeleteTag: Query for the Tag by id. Use db.session.delete() to delete the object. If successful, return:
{
	"message": "Tag successfully deleted"
}, 200
  • FecthTag: Query for the Tag by id. Return the serialization with TagSchema.
  • FetchTags: Query for a maximum of 15 Tags and serialize and return it with TagsSchema
  • FollowTag: Add the current user from the User session to the Tag's users' column