Skip to content
Snippets Groups Projects
Commit 5faae8eb authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#23 - added CRUD methods for subtasks

parent 03cacfb8
No related branches found
No related tags found
No related merge requests found
......@@ -133,6 +133,10 @@ class Database:
self.__query(query, taskID, fetch_type=FetchType.NONE)
# SUBTASKS
def get_all_sub_tasks(self):
query = 'SELECT * FROM subtasks;'
return self.__query(query)
def get_sub_tasks(self, taskID):
query = 'SELECT * FROM subtasks WHERE "TaskID"=%s;'
return self.__query(query, taskID)
......@@ -144,3 +148,15 @@ class Database:
def get_sub_task(self, subTaskID):
query = 'SELECT * FROM subtasks WHERE "ID"=%s;'
return self.__query(query, subTaskID, fetch_type=FetchType.ONE)
def add_sub_task(self, taskID, title, description):
query = 'INSERT INTO subtasks ("TaskID", "Title", "Description", "Status") VALUES (%s, %s, %s, %s);'
self.__query(query, taskID, title, description, 1, fetch_type=FetchType.NONE)
def update_sub_task(self, subTaskID, taskID, title, description, status):
query = 'UPDATE subtasks SET "TaskID"=%s, "Title"=%s, "Description"=%s, "Status"=%s WHERE "ID"=%s;'
self.__query(query, taskID, title, description, status, subTaskID, fetch_type=FetchType.NONE)
def delete_sub_task(self, subTaskID):
query = 'DELETE FROM subtasks WHERE "ID"=%s;'
self.__query(query, subTaskID, fetch_type=FetchType.NONE)
from flask import Blueprint, jsonify
from enum import Enum
from flask import Blueprint, jsonify, request
from flask_jwt_extended import jwt_required
from RequestValidator import RequestValidator, ValidationError
class SubTaskParameters(Enum):
ID = "ID"
TASK_ID = "TaskID"
TITLE = "Title"
DESCRIPTION = "Description"
STATUS = "Status"
@staticmethod
def get_values():
return [m.value for m in SubTaskParameters]
def construct_blueprint(database):
......@@ -16,4 +33,58 @@ def construct_blueprint(database):
def get_sub_task(subTaskID):
return jsonify(database.get_sub_task(subTaskID))
@subtask_api.route('/subtask', methods=['POST'])
@jwt_required
def add_sub_task():
try:
parameters = RequestValidator.validate(request, [SubTaskParameters.TASK_ID.value,
SubTaskParameters.TITLE.value,
SubTaskParameters.DESCRIPTION.value])
except ValidationError as e:
return e.response, 400
database.add_sub_task(parameters[SubTaskParameters.TASK_ID.value],
parameters[SubTaskParameters.TITLE.value],
parameters[SubTaskParameters.DESCRIPTION.value])
return jsonify({"success": True})
@subtask_api.route('/subtask', methods=['DELETE'])
@jwt_required
def delete_sub_task():
try:
parameters = RequestValidator.validate(request, [SubTaskParameters.ID.value])
except ValidationError as e:
return e.response, 400
subtaskID = parameters[SubTaskParameters.ID.value]
if not __subtask_exists(subtaskID):
return jsonify({"success": False, "msg": "No sub task with ID '{}' existing".format(subtaskID)}), 400
database.delete_sub_task(subtaskID)
return jsonify({"success": True})
@subtask_api.route('/subtask', methods=['PUT'])
@jwt_required
def update_sub_task():
try:
parameters = RequestValidator.validate(request, SubTaskParameters.get_values())
except ValidationError as e:
return e.response, 400
subtaskID = parameters[SubTaskParameters.ID.value]
if not __subtask_exists(subtaskID):
return jsonify({"success": False, "msg": "No sub task with ID '{}' existing".format(subtaskID)}), 400
database.update_sub_task(subtaskID,
parameters[SubTaskParameters.TASK_ID.value],
parameters[SubTaskParameters.TITLE.value],
parameters[SubTaskParameters.DESCRIPTION.value],
parameters[SubTaskParameters.STATUS.value])
return jsonify({"success": True})
def __subtask_exists(subtaskID):
subtaskID = int(subtaskID)
availableIDs = [jsonify(subtask).json[SubTaskParameters.ID.value] for subtask in database.get_all_sub_tasks()]
return subtaskID in availableIDs
return subtask_api
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment