def test_dataset_update_status_works(fill_db, sm_config, ds_config): db = DB(sm_config['db']) es_mock = MagicMock(spec=ESExporter) status_queue_mock = MagicMock(spec=QueuePublisher) upload_dt = datetime.now() ds_id = '2000-01-01' ds = Dataset(ds_id, 'ds_name', 'input_path', upload_dt, {}, ds_config, DatasetStatus.INDEXING, mol_dbs=['HMDB'], adducts=['+H']) ds.set_status(db, es_mock, status_queue_mock, DatasetStatus.FINISHED) assert DatasetStatus.FINISHED == Dataset.load(db, ds_id).status status_queue_mock.publish.assert_called_once_with({ 'ds_id': ds_id, 'status': DatasetStatus.FINISHED })
def index(self, ds: Dataset): """Re-index all search results for the dataset. Args: ds: dataset to index """ self._es.delete_ds(ds.id, delete_dataset=False) job_docs = self._db.select_with_fields( 'SELECT id, moldb_id FROM job WHERE ds_id = %s', params=(ds.id,) ) moldb_ids = ds.config['database_ids'] for job_doc in job_docs: moldb = molecular_db.find_by_id(job_doc['moldb_id']) if job_doc['moldb_id'] not in moldb_ids: self._db.alter('DELETE FROM job WHERE id = %s', params=(job_doc['id'],)) else: isocalc = IsocalcWrapper(ds.config) self._es.index_ds(ds_id=ds.id, moldb=moldb, isocalc=isocalc) ds.set_status(self._db, self._es, DatasetStatus.FINISHED)