Files
HangmanLab.Backend/api/markdown.py
2024-12-02 19:50:34 +00:00

58 lines
2.0 KiB
Python

#api/markdown.py
from flask import Blueprint, request, jsonify
from db import get_db
from db.models.Markdown import Markdown
import logging
logger = logging.getLogger(__name__)
markdown_bp = Blueprint('markdown', __name__, url_prefix='/api/markdown')
@markdown_bp.route('/<int:markdown_id>', methods=['GET'])
def get_markdown(markdown_id):
with get_db() as db:
markdown = db.query(Markdown).get(markdown_id)
if markdown is None:
return jsonify({"error": "file not found"}), 404
return jsonify(markdown.to_dict())
@markdown_bp.route('/', methods=['POST'])
def create_markdown():
data = request.json
title = data.get('title')
content = data.get('content')
path = data.get('path')
if not title or not content:
return jsonify({"error": "missing required fields"}), 400
new_markdown = Markdown(title=title, content=content, path=path)
with get_db() as db:
try:
db.add(new_markdown)
db.commit()
return jsonify(new_markdown.to_dict()), 201
except Exception as e:
logger.error(f"failed to create markdown: {e}")
db.rollback()
return jsonify({"error": "create failed"}), 500
@markdown_bp.route('/<int:markdown_id>', methods=['PUT'])
def update_markdown(markdown_id):
with get_db() as db:
markdown = db.query(Markdown).get(markdown_id)
if markdown is None:
return jsonify({"error": "file not found"}), 404
data = request.json
markdown.title = data.get('title')
markdown.content = data.get('content')
markdown.path = data.get('path')
db.commit()
return jsonify(markdown.to_dict()), 200
@markdown_bp.route('/<int:markdown_id>', methods=['DELETE'])
def delete_markdown(markdown_id):
with get_db() as db:
markdown = db.query(Markdown).get(markdown_id)
if markdown is None:
return jsonify({"error": "file not found"}), 404
db.delete(markdown)
db.commit()
return jsonify({"message": "deleted"}), 200