def command(self):
        self._load_config()

        LOGGER.info("Comenzando limpieza del Datastore")

        # Usando un LocalCKAN obtendo el apikey del usuario default
        lc = LocalCKAN()
        site_user = lc._get_action('get_site_user')({'ignore_auth': True}, ())
        apikey = site_user.get('apikey')

        # Acumulo todos los ids de los recursos del nodo
        datajson_resource_ids = []
        context = {'model': model, 'session': model.Session, 'user': site_user}
        data_dict = {'query': 'name:id', 'limit': None, 'offset': 0}
        result = logic.get_action('resource_search')(context, data_dict).get(
            'results', [])
        for resource in result:
            datajson_resource_ids.append(resource.get('identifier'))

        # Evitamos ejecutar la limpieza si no existen datasets en el nodo
        if not len(datajson_resource_ids):
            LOGGER.info(
                "No existen datasets en el nodo, por lo que no se realizará ninguna limpieza"
            )
        else:
            # La búsqueda de recursos en Datastore falla si la url no comienza con 'http'
            site_url = config.get('ckan.site_url')
            if not site_url.startswith('http'):
                site_url = 'http://' + site_url

            # Obtengo informacion de los elementos del datastore
            rc = RemoteCKAN(site_url, apikey)
            datastore_resources = rc.action.datastore_search(
                resource_id='_table_metadata')

            # Se borrarán los recursos del Datastore que no figuren en `datajson_resource_ids`
            # La función `datastore_search` muestra 100 resultados, por lo que es necesario utilizar un offset
            current_offset = 0
            while datastore_resources.get('total') > current_offset:
                for datastore_resource in datastore_resources.get('records'):
                    # En Datastore, el id del recurso se busca como `name` (y buscamos los que no sean "_table_metadata")
                    datastore_resource_id = datastore_resource.get('name')
                    if datastore_resource_id != "_table_metadata" and datastore_resource_id not in datajson_resource_ids:
                        try:
                            rc.action.datastore_delete(
                                resource_id=datastore_resource_id, force=True)
                        except Exception as e:
                            LOGGER.warn(
                                'Intentando eliminar del Datastore el recurso %s surgió un error: %s',
                                datastore_resource_id, e)
                current_offset += 100
                datastore_resources = rc.action.datastore_search(
                    resource_id='_table_metadata', offset=current_offset)

            LOGGER.info("Limpieza del Datastore terminada")
    def command(self):
        self._load_config()

        LOGGER.info("Comenzando limpieza del Datastore")

        # Usando un LocalCKAN obtengo el apikey del usuario default
        lc = LocalCKAN()
        site_user = lc._get_action('get_site_user')({'ignore_auth': True}, ())
        apikey = site_user.get('apikey')

        datajson_resource_ids = self.get_resource_ids(site_user)

        if not datajson_resource_ids:
            LOGGER.info("No existen datasets en el nodo, por lo que no se realizará ninguna limpieza")
            return

        # La búsqueda de recursos en Datastore falla si la url no comienza con 'http'
        site_url = config.get('ckan.site_url')
        if not site_url.startswith('http'):
            site_url = 'http://{}'.format(site_url)

        # Obtengo informacion de los elementos del datastore
        rc = RemoteCKAN(site_url, apikey)
        datastore_resources = rc.action.datastore_search(resource_id='_table_metadata')

        # Se borrarán los recursos del Datastore que no figuren en `datajson_resource_ids`
        # La función `datastore_search` muestra 100 resultados, por lo que es necesario utilizar un offset
        current_offset = 0
        while datastore_resources.get('total') > current_offset:
            for datastore_resource in datastore_resources.get('records'):
                # En Datastore, el id del recurso se busca como `name` (y buscamos los que no sean "_table_metadata")
                datastore_resource_id = datastore_resource.get('name')
                if datastore_resource_id != "_table_metadata" and datastore_resource_id not in datajson_resource_ids:
                    try:
                        rc.action.datastore_delete(resource_id=datastore_resource_id, force=True)
                    except Exception as e:
                        LOGGER.warn('Intentando eliminar del Datastore el recurso %s surgió un error: %s',
                                    datastore_resource_id, e)
            current_offset += 100
            datastore_resources = rc.action.datastore_search(resource_id='_table_metadata', offset=current_offset)

        LOGGER.info("Limpieza del Datastore terminada")