move image, update image
This commit is contained in:
@@ -241,7 +241,7 @@ def update_image():
|
||||
return jsonify({'error': 'Deck not found'}), 404
|
||||
|
||||
# 1. Lösche alle Einträge für das Deck ohne bildname
|
||||
cursor.execute('DELETE FROM Deck WHERE deckname = ? AND bildname IS NULL', (deckname,))
|
||||
cursor.execute('DELETE FROM Deck WHERE deckname = ? AND bildid = ?', (deckname,bildid))
|
||||
|
||||
inserted_image_ids = []
|
||||
|
||||
@@ -369,6 +369,60 @@ def delete_images_by_bildid(bildid):
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
@deck_bp.route('/api/decks/images/<bildid>/move', methods=['POST'])
|
||||
def move_image(bildid):
|
||||
"""
|
||||
Verschiebt alle Einträge einer bildid von ihrem aktuellen Deck in ein neues Deck.
|
||||
Das übergebene JSON sollte { "targetDeckId": "neuerDeckname" } sein.
|
||||
"""
|
||||
try:
|
||||
data = request.get_json()
|
||||
if not data or 'targetDeckId' not in data:
|
||||
return jsonify({'error': 'No targetDeckId provided'}), 400
|
||||
|
||||
target_deck_id = data['targetDeckId']
|
||||
|
||||
# Sicherheitsmaßnahme: Nur erlaubte Zeichen im targetDeckId
|
||||
if not all(c.isalnum() or c in ('_', '-') for c in target_deck_id):
|
||||
logger.warning(f"Ungültiger targetDeckId angefordert: {target_deck_id}")
|
||||
return jsonify({'error': 'Invalid targetDeckId'}), 400
|
||||
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Überprüfen, ob es Einträge mit der gegebenen bildid gibt
|
||||
cursor.execute('SELECT COUNT(*) as count FROM Deck WHERE bildid = ?', (bildid,))
|
||||
result = cursor.fetchone()
|
||||
if result['count'] == 0:
|
||||
conn.close()
|
||||
return jsonify({'error': 'No entries found for the given image ID'}), 404
|
||||
|
||||
# Update deckname für alle Einträge mit der bildid
|
||||
cursor.execute('UPDATE Deck SET deckname = ? WHERE bildid = ?', (target_deck_id, bildid))
|
||||
updated_rows = cursor.rowcount
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
logger.info(f"Bild mit bildid '{bildid}' wurde in das Deck '{target_deck_id}' verschoben. Aktualisierte Einträge: {updated_rows}")
|
||||
|
||||
return jsonify({'status': 'success', 'moved_entries': updated_rows}), 200
|
||||
|
||||
except sqlite3.Error as e:
|
||||
if conn:
|
||||
conn.rollback()
|
||||
logger.error(f"Datenbankfehler beim Verschieben der Image-Einträge für '{bildid}': {e}")
|
||||
return jsonify({'error': 'Database error', 'details': str(e)}), 500
|
||||
|
||||
except Exception as e:
|
||||
if conn:
|
||||
conn.rollback()
|
||||
logger.error(f"Unerwarteter Fehler beim Verschieben der Image-Einträge für '{bildid}': {e}")
|
||||
return jsonify({'error': 'Failed to move image entries', 'details': str(e)}), 500
|
||||
|
||||
finally:
|
||||
if conn:
|
||||
conn.close()
|
||||
|
||||
# Sicherstellen, dass die Datenbank existiert
|
||||
if not os.path.exists(DATABASE):
|
||||
init_db()
|
||||
|
||||
Reference in New Issue
Block a user