ajout de CRUD total pour toute les routes
This commit is contained in:
parent
fec74d9f83
commit
da45beba93
5 changed files with 166 additions and 25 deletions
|
|
@ -17,8 +17,10 @@ def get_projects():
|
|||
@projects_bp.route('/<project_id>', methods=['GET'])
|
||||
def get_project(project_id):
|
||||
projects = load_data('projects.json')
|
||||
project = next((p for p in projects if p.get('id') == project_id), None)
|
||||
print(project)
|
||||
# Ensure numeric comparison for id
|
||||
project = next((p for p in projects if str(p.get('id')) == str(project_id)), None)
|
||||
if not project:
|
||||
return jsonify({"error": "Project not found"}), 404
|
||||
return jsonify(project)
|
||||
|
||||
@projects_bp.route('/', methods=['POST'])
|
||||
|
|
@ -30,7 +32,7 @@ def create_project():
|
|||
"error": "Unauthorized"
|
||||
}), 401
|
||||
projects = load_data('projects.json')
|
||||
entry = request.json
|
||||
entry = request.json or {}
|
||||
|
||||
project = ProjectModel(entry)
|
||||
|
||||
|
|
@ -47,10 +49,39 @@ def create_project():
|
|||
added = add_entry(PROJECTS_FILE, data)
|
||||
return jsonify(added), 201
|
||||
|
||||
@projects_bp.route('/<project_id>', methods=['PUT', 'PATCH'])
|
||||
def update_project(project_id):
|
||||
key = request.headers.get('x-api-key')
|
||||
if key != current_app.config['API_KEY']:
|
||||
return jsonify({"error": "Unauthorized"}), 401
|
||||
|
||||
projects = load_json(PROJECTS_FILE)
|
||||
project = next((p for p in projects if str(p.get('id')) == str(project_id)), None)
|
||||
if not project:
|
||||
return jsonify({"error": "Project not found"}), 404
|
||||
|
||||
payload = request.json or {}
|
||||
# Merge existing with payload
|
||||
updated = {**project, **payload}
|
||||
# Preserve id
|
||||
updated['id'] = project['id']
|
||||
|
||||
# Validate using model
|
||||
model = ProjectModel(updated)
|
||||
if not model.is_valid():
|
||||
return jsonify({"error": "Invalid project data"}), 400
|
||||
|
||||
saved = update_entry(PROJECTS_FILE, updated['id'], model.to_dict())
|
||||
return jsonify(saved), 200
|
||||
|
||||
@projects_bp.route('/<project_id>', methods=['DELETE'])
|
||||
def delete_project(project_id):
|
||||
projects = load_data(PROJECTS_FILE)
|
||||
project = next((p for p in projects if str(p.get('id')) == project_id), None)
|
||||
key = request.headers.get('x-api-key')
|
||||
if key != current_app.config['API_KEY']:
|
||||
return jsonify({"error": "Unauthorized"}), 401
|
||||
|
||||
projects = load_json(PROJECTS_FILE)
|
||||
project = next((p for p in projects if str(p.get('id')) == str(project_id)), None)
|
||||
|
||||
if project:
|
||||
deleted = delete_entry(PROJECTS_FILE, project_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue