use dao playlist

This commit is contained in:
grimhilt 2023-08-01 21:24:07 +02:00
parent 4492479106
commit 7eb5c6b903
2 changed files with 28 additions and 14 deletions

View File

@ -4,6 +4,8 @@ from ..models import Playlist, PlaylistFile, File
from .. import db from .. import db
from datetime import datetime from datetime import datetime
from sqlalchemy.sql import func from sqlalchemy.sql import func
from ..dao.Playlist import PlaylistDao
from screen.ScreenManager import ScreenManager
playlist = Blueprint('playlist', __name__) playlist = Blueprint('playlist', __name__)
@ -33,21 +35,12 @@ def list():
@playlist.route('/<int:playlist_id>', methods=["GET"]) @playlist.route('/<int:playlist_id>', methods=["GET"])
def get_playlist(playlist_id): def get_playlist(playlist_id):
query = db.session.query(Playlist).filter(Playlist.id == playlist_id).first() (query, files) = PlaylistDao.get_playlist(playlist_id)
return jsonify({'id': query.id, 'name': query.name, 'files': files})
files = []
for playlist_file in query.playlist_files:
file = playlist_file.file.as_dict()
file['position'] = playlist_file.position
file['seconds'] = playlist_file.seconds
files.append(file)
return jsonify({'name': query.name, 'files': files})
@playlist.route('/<int:playlist_id>', methods=["POST"]) @playlist.route('/<int:playlist_id>', methods=["POST"])
def add_file(playlist_id): def add_file(playlist_id):
data = request.get_json() data = request.get_json()
print(data)
new_playlist_file = PlaylistFile( \ new_playlist_file = PlaylistFile( \
playlist_id=playlist_id, \ playlist_id=playlist_id, \
file_id=data['file_id'], \ file_id=data['file_id'], \
@ -64,7 +57,6 @@ def add_file(playlist_id):
@playlist.route('/<int:playlist_id>/order', methods=["POST"]) @playlist.route('/<int:playlist_id>/order', methods=["POST"])
def change_order(playlist_id): def change_order(playlist_id):
data = request.get_json() data = request.get_json()
print(data)
db.session.query(PlaylistFile) \ db.session.query(PlaylistFile) \
.filter(PlaylistFile.file_id == data['file_id']) \ .filter(PlaylistFile.file_id == data['file_id']) \
.filter(PlaylistFile.playlist_id == playlist_id) \ .filter(PlaylistFile.playlist_id == playlist_id) \
@ -76,12 +68,20 @@ def change_order(playlist_id):
@playlist.route('/<int:playlist_id>/remove_file', methods=["POST"]) @playlist.route('/<int:playlist_id>/remove_file', methods=["POST"])
def remove_file(playlist_id): def remove_file(playlist_id):
data = request.get_json() data = request.get_json()
print(data)
query = db.session.query(PlaylistFile) \ query = db.session.query(PlaylistFile) \
.filter(PlaylistFile.file_id == data['file_id']) \ .filter(PlaylistFile.file_id == data['file_id']) \
.filter(PlaylistFile.playlist_id == playlist_id) \ .filter(PlaylistFile.playlist_id == playlist_id) \
.first() .first()
print(query)
db.session.delete(query) db.session.delete(query)
db.session.commit() db.session.commit()
return jsonify(success=True) return jsonify(success=True)
@playlist.route('/<int:playlist_id>/update', methods=["POST"])
def update(playlist_id):
data = request.get_json()
db.session.query(Playlist) \
.filter(Playlist.id == playlist_id) \
.update({'name': data['name']})
db.session.commit()
return jsonify(success=True)

14
src/api/dao/Playlist.py Normal file
View File

@ -0,0 +1,14 @@
from .. import db
from ..models import Playlist, PlaylistFile, File
class PlaylistDao:
def get_playlist(playlist_id):
query = db.session.query(Playlist).filter(Playlist.id == playlist_id).first()
files = []
for playlist_file in query.playlist_files:
file = playlist_file.file.as_dict()
file['position'] = playlist_file.position
file['seconds'] = playlist_file.seconds
files.append(file)
return (query, files)