pub trait AppCmdObj {
fn app_id(&self) -> &DecAppId;
fn cmd(&self) -> &CmdCode;
fn add(owner: ObjectId, id: DecAppId, app_owner: Option<ObjectId>) -> Self;
fn remove(owner: ObjectId, id: DecAppId) -> Self;
fn install(
owner: ObjectId,
id: DecAppId,
version: &str,
run_after_install: bool
) -> Self;
fn uninstall(owner: ObjectId, id: DecAppId) -> Self;
fn start(owner: ObjectId, id: DecAppId) -> Self;
fn stop(owner: ObjectId, id: DecAppId) -> Self;
fn set_permission(
owner: ObjectId,
id: DecAppId,
permission: ModifyAppPermission
) -> Self;
fn set_quota(owner: ObjectId, id: DecAppId, quota: AppQuota) -> Self;
fn output(&self) -> String;
}