code: def search_by_age(cls, *, limit=100, page=1, accounts=None, locations=None, age=720,
                        properties=None, include_disabled=False):
          
          qry = cls.search(
              limit=limit,
              page=page,
              accounts=accounts,
              locations=locations,
              properties=properties,
              include_disabled=include_disabled,
              return_query=True
          )
  
          age_alias = aliased(ResourceProperty)
          qry = (
              qry.join(age_alias, Resource.resource_id == age_alias.resource_id)
                  .filter(
                  age_alias.name == 'launch_date',
                  cast(func.JSON_UNQUOTE(age_alias.value), DATETIME) < datetime.now() - timedelta(days=age)
              )
          )
  
          total = qry.count()
          qry = qry.limit(limit)
          qry = qry.offset((page - 1) * limit if page > 1 else 0)
  
          return total, [cls(x) for x in qry.all()]
docs: Search for resources based on the provided filters
  
          Args:
              limit (`int`): Number of results to return. Default: 100
              page (`int`): Pagination offset for results. Default: 1
              accounts (`list` of `int`): A list of account id's to limit the returned resources to
              locations (`list` of `str`): A list of locations as strings to limit the search for
              age (`int`): Age of instances older than `age` days to return
              properties (`dict`): A `dict` containing property name and value pairs. Values can be either a str or a list
              of strings, in which case a boolean OR search is performed on the values
              include_disabled (`bool`): Include resources from disabled accounts. Default: False
  
          Returns:
              `list` of `Resource`