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

#23 - added CRUD methods for tasks

parent 606d4d80
No related branches found
No related tags found
No related merge requests found
...@@ -104,6 +104,10 @@ class Database: ...@@ -104,6 +104,10 @@ class Database:
self.__query(query, milestoneID, fetch_type=FetchType.NONE) self.__query(query, milestoneID, fetch_type=FetchType.NONE)
# TASKS # TASKS
def get_all_tasks(self):
query = 'SELECT * FROM tasks;'
return self.__query(query)
def get_tasks(self, milestoneID): def get_tasks(self, milestoneID):
query = 'SELECT * FROM tasks WHERE "MilestoneID"=%s;' query = 'SELECT * FROM tasks WHERE "MilestoneID"=%s;'
return self.__query(query, milestoneID) return self.__query(query, milestoneID)
...@@ -116,6 +120,18 @@ class Database: ...@@ -116,6 +120,18 @@ class Database:
query = 'SELECT * FROM tasks WHERE "ID"=%s;' query = 'SELECT * FROM tasks WHERE "ID"=%s;'
return self.__query(query, taskID, fetch_type=FetchType.ONE) return self.__query(query, taskID, fetch_type=FetchType.ONE)
def add_task(self, milestoneID, title, description):
query = 'INSERT INTO tasks ("MilestoneID", "Title", "Description", "Status") VALUES (%s, %s, %s, %s);'
self.__query(query, milestoneID, title, description, 1, fetch_type=FetchType.NONE)
def update_task(self, taskID, milestoneID, title, description, status):
query = 'UPDATE tasks SET "MilestoneID"=%s, "Title"=%s, "Description"=%s, "Status"=%s WHERE "ID"=%s;'
self.__query(query, milestoneID, title, description, status, taskID, fetch_type=FetchType.NONE)
def delete_task(self, taskID):
query = 'DELETE FROM tasks WHERE "ID"=%s;'
self.__query(query, taskID, fetch_type=FetchType.NONE)
# SUBTASKS # SUBTASKS
def get_sub_tasks(self, taskID): def get_sub_tasks(self, taskID):
query = 'SELECT * FROM subtasks WHERE "TaskID"=%s;' query = 'SELECT * FROM subtasks WHERE "TaskID"=%s;'
......
...@@ -73,7 +73,7 @@ def construct_blueprint(database): ...@@ -73,7 +73,7 @@ def construct_blueprint(database):
if not __milestone_exists(milestoneID): if not __milestone_exists(milestoneID):
return jsonify({"success": False, "msg": "No milestone with ID '{}' existing".format(milestoneID)}), 400 return jsonify({"success": False, "msg": "No milestone with ID '{}' existing".format(milestoneID)}), 400
database.delete_roadmap(milestoneID) database.delete_milestone(milestoneID)
return jsonify({"success": True}) return jsonify({"success": True})
@milestone_api.route('/milestone', methods=['PUT']) @milestone_api.route('/milestone', methods=['PUT'])
......
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 TaskParameters(Enum):
ID = "ID"
MILESTONE_ID = "MilestoneID"
TITLE = "Title"
DESCRIPTION = "Description"
STATUS = "Status"
@staticmethod
def get_values():
return [m.value for m in TaskParameters]
def construct_blueprint(database): def construct_blueprint(database):
...@@ -16,4 +33,58 @@ def construct_blueprint(database): ...@@ -16,4 +33,58 @@ def construct_blueprint(database):
def get_task(taskID): def get_task(taskID):
return jsonify(database.get_task(taskID)) return jsonify(database.get_task(taskID))
@task_api.route('/task', methods=['POST'])
@jwt_required
def add_task():
try:
parameters = RequestValidator.validate(request, [TaskParameters.MILESTONE_ID.value,
TaskParameters.TITLE.value,
TaskParameters.DESCRIPTION.value])
except ValidationError as e:
return e.response, 400
database.add_task(parameters[TaskParameters.MILESTONE_ID.value],
parameters[TaskParameters.TITLE.value],
parameters[TaskParameters.DESCRIPTION.value])
return jsonify({"success": True})
@task_api.route('/task', methods=['DELETE'])
@jwt_required
def delete_task():
try:
parameters = RequestValidator.validate(request, [TaskParameters.ID.value])
except ValidationError as e:
return e.response, 400
taskID = parameters[TaskParameters.ID.value]
if not __task_exists(taskID):
return jsonify({"success": False, "msg": "No task with ID '{}' existing".format(taskID)}), 400
database.delete_task(taskID)
return jsonify({"success": True})
@task_api.route('/task', methods=['PUT'])
@jwt_required
def update_task():
try:
parameters = RequestValidator.validate(request, TaskParameters.get_values())
except ValidationError as e:
return e.response, 400
taskID = parameters[TaskParameters.ID.value]
if not __task_exists(taskID):
return jsonify({"success": False, "msg": "No task with ID '{}' existing".format(taskID)}), 400
database.update_task(taskID,
parameters[TaskParameters.MILESTONE_ID.value],
parameters[TaskParameters.TITLE.value],
parameters[TaskParameters.DESCRIPTION.value],
parameters[TaskParameters.STATUS.value])
return jsonify({"success": True})
def __task_exists(taskID):
taskID = int(taskID)
availableIDs = [jsonify(task).json[TaskParameters.ID.value] for task in database.get_all_tasks()]
return taskID in availableIDs
return task_api return task_api
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment