Skip to content
Snippets Groups Projects
Commit 238d5edc authored by David Trattnig's avatar David Trattnig
Browse files

List playlog implementation.

parent 5c78fedc
No related branches found
No related tags found
No related merge requests found
......@@ -85,12 +85,14 @@ class PlayLog(db.Model):
@staticmethod
def paginate(page, page_size):
def paginate(page, page_size, since_time=None):
"""
Returns a list of entries for a given page.
Returns a list of entries for a given page and an start time (optional).
"""
def q(page=0, page_size=None):
query = db.session.query(PlayLog)
if isinstance(since_time, datetime.datetime):
query = query.filter(PlayLog.track_start >= since_time)
listen(query, 'before_compile', apply_limit(page, page_size), retval=True)
return query
......
......@@ -2,13 +2,13 @@ import connexion
import six
from src.rest.models.clock_info import ClockInfo # noqa: E501
org.joda.time.* # noqa: E501
from src.rest.models.health_info import HealthInfo # noqa: E501
from src.rest.models.play_log_entry import PlayLogEntry # noqa: E501
from src.rest.models.status_entry import StatusEntry # noqa: E501
from src.rest import util
from flask import current_app
from dateutil.parser import parse
def activate_engine(engine_number): # noqa: E501
......@@ -33,6 +33,7 @@ def add_playlog(): # noqa: E501
:rtype: PlayLogEntry
"""
service = current_app.config['SERVICE']
service.store_playlog()
def clock_info(): # noqa: E501
......@@ -101,10 +102,9 @@ def list_playlog(date_time, page=None, limit=None): # noqa: E501
:rtype: List[PlayLogEntry]
"""
if connexion.request.is_json:
date_time = .from_dict(connexion.request.get_json()) # noqa: E501
service = current_app.config['SERVICE']
return 'do some magic!'
date_time = parse(date_time)
return service.list_playlog(page, limit, date_time)
def log_engine_health(engine_number): # noqa: E501
......
......@@ -61,11 +61,37 @@ class ApiService():
(List[PlayLogEntry])
"""
if not size or size > 50 or size < 1: size = 20
tracklist = PlayLog.paginate(page, size)
tracklist = PlayLog.paginate(page, size, None)
tracklist_schema = TrackSchema(many=True)
return tracklist_schema.dump(tracklist)
def list_playlog(self, page=None, size=None, since_time=None):
"""
Get paginated playlog entries for since the given timestamp.
Args:
since_time (datetime): Get entries after this timestamp (e.g. &#x27;2020-08-29T09:12:33.001Z&#x27;)
page (Integer): The number of items to skip before starting to collect the result set
size (Integer): The numbers of items to return per page
Returns:
(List[PlayLogEntry])
"""
tracklist = PlayLog.paginate(page, size, since_time)
tracklist_schema = TrackSchema(many=True)
return tracklist_schema.dump(tracklist)
def store_playlog():
"""
Stores the passed playlog entry.
Returns:
(PlayLogEntry)
"""
def clock_info(self):
"""
Retrieves the currently playing playlist.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment