/**
* Set shared_ro field to 1 in package given by name
*
+ * @param[in] pkgName package identifier
+ * @param[in] isSharedRO whether the package is sharedRO (defaults to true)
+ *
* @exception PrivilegeDb::Exception::InternalError on internal error
* @exception PrivilegeDb::Exception::ConstraintError on constraint violation
*/
- void SetSharedROPackage(const std::string& pkgName);
+ void SetSharedROPackage(const std::string& pkgName, bool isSharedRO = true);
/**
* Check whether package has is_hybrid field set to 1 in db
[underlying(StmtType::EGetPkgAuthorId)] = "SELECT author_id FROM pkg WHERE name = ? AND author_id IS NOT NULL",
[underlying(StmtType::EAuthorIdExists)] = "SELECT count(*) FROM author where author_id=?",
[underlying(StmtType::EGetAuthorIdByName)] = "SELECT author_id FROM author WHERE name=?",
- [underlying(StmtType::ESetPackageSharedRO)] = "UPDATE pkg SET shared_ro=1 WHERE name=?",
+ [underlying(StmtType::ESetPackageSharedRO)] = "UPDATE pkg SET shared_ro=? WHERE name=?",
[underlying(StmtType::EIsPackageHybrid)] = "SELECT is_hybrid FROM pkg WHERE name=?",
[underlying(StmtType::EAddAppDefinedPrivilege)] = "INSERT INTO app_defined_privilege_view (app_name, uid, privilege, type, license) VALUES (?, ?, ?, ?, ?)",
[underlying(StmtType::EAddClientPrivilege)] = "INSERT INTO client_license_view (app_name, uid, privilege, license) VALUES (?, ?, ?, ?)",
});
}
-void PrivilegeDb::SetSharedROPackage(const std::string &pkgName)
+void PrivilegeDb::SetSharedROPackage(const std::string &pkgName, bool isSharedRO)
{
try_catch<void>([&] {
auto command = getStatement(StmtType::ESetPackageSharedRO);
- command->BindString(1, pkgName);
+ command->BindInteger(1, isSharedRO);
+ command->BindString(2, pkgName);
if (command->Step())
- LogDebug("shared_ro has been set to 1 for pkg: " << pkgName);
+ LogDebug("shared_ro has been set to " << isSharedRO << " for pkg: " << pkgName);
});
}