def query_intervals(cls, db, package_name): # This will get you all the query strings ever used for that package, # together with first-seen and last-seen dates. db.cursor.execute( """ SELECT `packages`.`id` AS `package_id`, `packages`.`name` AS `package_name`, `deps`.`version_query`, MIN(`deps`.`started`) AS `first_started`, MAX(`deps`.`ended`) AS `last_ended` FROM `packages`, `project_explicit_dependencies` AS `deps` WHERE `packages`.`id`=`deps`.`package_id` AND `packages`.`name`=%s GROUP BY `packages`.`id`, `deps`.`version_query`;""", package_name) stored_rows = [] latest_ts = -1 # Each row is a specific query string for row in db.cursor.fetchall(): (pkg_id, pkg_name, qs, first_started, last_ended) = row first_ts = Loader.dt2ts(first_started) last_ts = Loader.dt2ts(last_ended) stored_rows.append((qs, first_ts, last_ts)) latest_ts = max(latest_ts, last_ts) return (stored_rows, latest_ts if latest_ts != -1 else None)
def versions_earlier_than(cls, db, package_name, ts): versions = [] db.cursor.execute( """ SELECT `version`, `released` FROM `packages`, `package_versions` WHERE `packages`.`id`=`package_versions`.`package_id` AND `packages`.`name`=%s ORDER BY `released` ASC;""", package_name) for (version, released) in db.cursor.fetchall(): versions.append((version, Loader.dt2ts(released))) return versions