Skip to content
Snippets Groups Projects

Webservice query

Files
3
@@ -102,21 +102,24 @@ async def get_metadata(
category: MetadataCategory = None,
starttime: datetime = None,
endtime: datetime = None,
created_after: datetime = None,
created_before: datetime = None,
data_valid: bool = None,
metadata_valid: bool = None,
):
query = metadata.select()
if id is not None:
if id:
query = query.where(metadata.c.id == id)
if category:
query = query.where(metadata.c.category == category)
if network or station or channel or location:
query = (
query.where(metadata.c.network.like(network or "%"))
.where(metadata.c.station.like(station or "%"))
.where(metadata.c.channel.like(channel or "%"))
.where(metadata.c.location.like(location or "%"))
)
if network:
query = query.where(metadata.c.network == network)
if station:
query = query.where(metadata.c.station.like(station or "%"))
if channel:
query = query.where(metadata.c.channel.like(channel or "%"))
if location:
query = query.where(metadata.c.location.like(location or "%"))
if starttime:
query = query.where(
or_(metadata.c.endtime == None, metadata.c.endtime > starttime)
@@ -125,10 +128,15 @@ async def get_metadata(
query = query.where(
or_(metadata.c.starttime == None, metadata.c.starttime < endtime)
)
if created_after:
query = query.where(metadata.c.created_time > created_after)
if created_before:
query = query = query.where(metadata.c.created_time < created_before)
if data_valid is not None:
query = query.where(metadata.c.data_valid == data_valid)
if metadata_valid is not None:
query = query.where(metadata.c.metadata_valid == metadata_valid)
rows = await database.fetch_all(query)
return [Metadata(**row) for row in rows]
Loading