Files
PassKeeper/app/routes/folders.py
T
2026-04-16 08:27:07 -04:00

55 lines
1.7 KiB
Python

from flask import Blueprint, request, jsonify, g
from app import db
from app.models.folder import Folder
from app.services.auth_service import require_jwt
folders_bp = Blueprint('folders', __name__)
@folders_bp.route('', methods=['GET'])
@require_jwt
def list_folders():
folders = Folder.query.filter_by(user_id=g.current_user_id).order_by(Folder.name.asc()).all()
return jsonify([f.to_dict() for f in folders]), 200
@folders_bp.route('', methods=['POST'])
@require_jwt
def create_folder():
data = request.get_json(silent=True) or {}
name = (data.get('name') or '').strip()
if not name:
return jsonify({'error': 'name is required'}), 400
folder = Folder(user_id=g.current_user_id, name=name)
db.session.add(folder)
db.session.commit()
return jsonify(folder.to_dict()), 201
@folders_bp.route('/<int:folder_id>', methods=['PUT'])
@require_jwt
def update_folder(folder_id):
folder = Folder.query.filter_by(id=folder_id, user_id=g.current_user_id).first()
if not folder:
return jsonify({'error': 'Folder not found'}), 404
data = request.get_json(silent=True) or {}
name = (data.get('name') or '').strip()
if not name:
return jsonify({'error': 'name is required'}), 400
folder.name = name
db.session.commit()
return jsonify(folder.to_dict()), 200
@folders_bp.route('/<int:folder_id>', methods=['DELETE'])
@require_jwt
def delete_folder(folder_id):
folder = Folder.query.filter_by(id=folder_id, user_id=g.current_user_id).first()
if not folder:
return jsonify({'error': 'Folder not found'}), 404
db.session.delete(folder)
db.session.commit()
return jsonify({'message': 'Folder deleted'}), 200