Skip to content

Instantly share code, notes, and snippets.

@mmeisinger
Last active August 29, 2015 13:57
Show Gist options
  • Save mmeisinger/9692807 to your computer and use it in GitHub Desktop.
Save mmeisinger/9692807 to your computer and use it in GitHub Desktop.
Advanced events query
from pyon.datastore.datastore import DataStore
from pyon.datastore.datastore_query import DatastoreQueryBuilder, DQ
from pyon.public import get_ion_ts_millis
dqb = DatastoreQueryBuilder(datastore=DataStore.DS_EVENTS, profile=DataStore.DS_PROFILE.EVENTS)
filter_origins = dqb.in_(DQ.EA_ORIGIN, "7b1c97e40b7345b5b31a6d3208a39040", "234d1d999adc490f90b1406c14a9591a")
filter_types = dqb.in_(DQ.ATT_TYPE, "ResourceLifecycleEvent", "ResourceModifiedEvent")
filter_mindate = dqb.gte(DQ.RA_TS_CREATED, str(get_ion_ts_millis()-1000*60*60)) # 1 hour back in this case
where = dqb.and_(filter_origins, filter_types, filter_mindate)
order_by = dqb.order_by([["ts_created", "desc"]]) # Descending order by time
dqb.build_query(where=where, order_by=order_by, limit=10, skip=0, id_only=False)
query = dqb.get_query()
event_objs = cc.event_repository.event_store.find_by_query(query)
# Results in SQL
# SELECT id,doc FROM ion_events WHERE (origin IN ('7b1c97e40b7345b5b31a6d3208a39040','234d1d999adc490f90b1406c14a9591a') AND type_ IN ('ResourceLifecycleEvent','ResourceModifiedEvent') AND ts_created>='1395255006055') ORDER BY ts_created DESC LIMIT 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment