maintenance: Add --purge-package to delete rows/files by package name.

Used by the performance tests (AppLaunch.apk) to purge files for
iorap-trial runs.

Test: iorap.cmd.maintenance --package-name com.whatever.name /data/misc/iorapd/sqlite.db
Bug: 150880186
Change-Id: Ifdb0db2b0fcd66eba9e65e94b856929a882e8a75
diff --git a/src/db/models.h b/src/db/models.h
index 1feac47..df6beb6 100644
--- a/src/db/models.h
+++ b/src/db/models.h
@@ -585,18 +585,20 @@
     return p;
   }
 
-  static std::optional<PackageModel> SelectByName(DbHandle db, const char* name) {
+  static std::vector<PackageModel> SelectByName(DbHandle db, const char* name) {
     ScopedLockDb lock{db};
 
-    std::string query = "SELECT * FROM packages WHERE name = ?1 LIMIT 1;";
+    std::string query = "SELECT * FROM packages WHERE name = ?1;";
     DbStatement stmt = DbStatement::Prepare(db, query, name);
 
+    std::vector<PackageModel> packages;
+
     PackageModel p{db};
-    if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
-      return std::nullopt;
+    while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
+      packages.push_back(p);
     }
 
-    return p;
+    return packages;
   }
 
   static std::optional<PackageModel> SelectByNameAndVersion(DbHandle db,