PermissionTypes)) $builder .= implode(separator: ",", array: $this->PermissionTypes); if($this->GrantOn != "") $builder .= " ON $this->GrantOn"; if($this->GrantWhere != "") $builder .= " WHERE $this->GrantWhere"; return new GrantQuery(queryString: $builder); } public function Permissions(array $permissionTypes): GrantQueryBuilder { $this->PermissionTypes = []; foreach($permissionTypes as $permissionType) $this->PermissionTypes[] = $permissionType->value; return $this; } public function GrantAll(): GrantQueryBuilder { $this->PermissionTypes = [ DeegraphPermissionType::WRITE->value, DeegraphPermissionType::READ->value, DeegraphPermissionType::DELETE->value, DeegraphPermissionType::ACT->value, ]; return $this; } public function On(string $target): GrantQueryBuilder { $this->GrantOn = $target; return $this; } public function Where(string $target, DeegraphEqualityOperator $operator, string $value): GrantQueryBuilder { $this->GrantWhere = "$target $operator->value $value"; return $this; } }