from smartem_backend.model.mq_event import (
AcquisitionCreatedEvent,
AcquisitionDeletedEvent,
AcquisitionUpdatedEvent,
AtlasCreatedEvent,
AtlasDeletedEvent,
AtlasTileCreatedEvent,
AtlasTileDeletedEvent,
AtlasTileUpdatedEvent,
AtlasUpdatedEvent,
FoilHoleCreatedEvent,
FoilHoleDeletedEvent,
FoilHoleModelPredictionEvent,
FoilHoleUpdatedEvent,
GridCreatedEvent,
GridDeletedEvent,
GridRegisteredEvent,
GridSquareCreatedEvent,
GridSquareDeletedEvent,
GridSquareModelPredictionEvent,
GridSquareRegisteredEvent,
GridSquareUpdatedEvent,
GridUpdatedEvent,
MessageQueueEventType,
MicrographCreatedEvent,
MicrographDeletedEvent,
MicrographUpdatedEvent,
ModelParameterUpdateEvent,
)
from smartem_backend.utils import rmq_publisher
# ========== Acquisition DB Entity Mutations ==========
[docs]
def publish_acquisition_created(uuid, id=None, **kwargs):
"""Publish acquisition created event to RabbitMQ"""
event = AcquisitionCreatedEvent(event_type=MessageQueueEventType.ACQUISITION_CREATED, uuid=uuid, id=id)
return rmq_publisher.publish_event(MessageQueueEventType.ACQUISITION_CREATED, event)
[docs]
def publish_acquisition_updated(uuid, id=None):
"""Publish acquisition updated event to RabbitMQ"""
event = AcquisitionUpdatedEvent(event_type=MessageQueueEventType.ACQUISITION_UPDATED, uuid=uuid, id=id)
return rmq_publisher.publish_event(MessageQueueEventType.ACQUISITION_UPDATED, event)
[docs]
def publish_acquisition_deleted(uuid):
"""Publish acquisition deleted event to RabbitMQ"""
event = AcquisitionDeletedEvent(event_type=MessageQueueEventType.ACQUISITION_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.ACQUISITION_DELETED, event)
# ========== Atlas DB Entity Mutations ==========
[docs]
def publish_atlas_created(uuid, id=None, grid_uuid=None):
"""Publish atlas created event to RabbitMQ"""
event = AtlasCreatedEvent(event_type=MessageQueueEventType.ATLAS_CREATED, uuid=uuid, id=id, grid_uuid=grid_uuid)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_CREATED, event)
[docs]
def publish_atlas_updated(uuid, id=None, grid_uuid=None):
"""Publish atlas updated event to RabbitMQ"""
event = AtlasUpdatedEvent(event_type=MessageQueueEventType.ATLAS_UPDATED, uuid=uuid, id=id, grid_uuid=grid_uuid)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_UPDATED, event)
[docs]
def publish_atlas_deleted(uuid):
"""Publish atlas deleted event to RabbitMQ"""
event = AtlasDeletedEvent(event_type=MessageQueueEventType.ATLAS_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_DELETED, event)
# ========== Atlas Tile DB Entity Mutations ==========
[docs]
def publish_atlas_tile_created(uuid, id=None, atlas_uuid=None):
"""Publish atlas tile created event to RabbitMQ"""
event = AtlasTileCreatedEvent(
event_type=MessageQueueEventType.ATLAS_TILE_CREATED, uuid=uuid, id=id, atlas_uuid=atlas_uuid
)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_TILE_CREATED, event)
[docs]
def publish_atlas_tile_updated(uuid, id=None, atlas_uuid=None):
"""Publish atlas tile updated event to RabbitMQ"""
event = AtlasTileUpdatedEvent(
event_type=MessageQueueEventType.ATLAS_TILE_UPDATED, uuid=uuid, id=id, atlas_uuid=atlas_uuid
)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_TILE_UPDATED, event)
[docs]
def publish_atlas_tile_deleted(uuid):
"""Publish atlas tile deleted event to RabbitMQ"""
event = AtlasTileDeletedEvent(event_type=MessageQueueEventType.ATLAS_TILE_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.ATLAS_TILE_DELETED, event)
# ========== Grid DB Entity Mutations ==========
[docs]
def publish_grid_created(uuid, acquisition_uuid=None):
"""Publish grid created event to RabbitMQ"""
event = GridCreatedEvent(
event_type=MessageQueueEventType.GRID_CREATED, uuid=uuid, acquisition_uuid=acquisition_uuid
)
return rmq_publisher.publish_event(MessageQueueEventType.GRID_CREATED, event)
[docs]
def publish_grid_updated(uuid, acquisition_uuid=None):
"""Publish grid updated event to RabbitMQ"""
event = GridUpdatedEvent(
event_type=MessageQueueEventType.GRID_UPDATED, uuid=uuid, acquisition_uuid=acquisition_uuid
)
return rmq_publisher.publish_event(MessageQueueEventType.GRID_UPDATED, event)
[docs]
def publish_grid_deleted(uuid):
"""Publish grid deleted event to RabbitMQ"""
event = GridDeletedEvent(event_type=MessageQueueEventType.GRID_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.GRID_DELETED, event)
[docs]
def publish_grid_registered(uuid: str):
"""Publish grid updated event to RabbitMQ"""
event = GridRegisteredEvent(
event_type=MessageQueueEventType.GRID_REGISTERED,
grid_uuid=uuid,
)
return rmq_publisher.publish_event(MessageQueueEventType.GRID_REGISTERED, event)
# ========== Grid Square DB Entity Mutations ==========
[docs]
def publish_gridsquare_created(uuid, grid_uuid=None, gridsquare_id=None):
"""Publish grid square created event to RabbitMQ"""
event = GridSquareCreatedEvent(
event_type=MessageQueueEventType.GRIDSQUARE_CREATED, uuid=uuid, grid_uuid=grid_uuid, gridsquare_id=gridsquare_id
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_CREATED, event)
[docs]
def publish_gridsquare_updated(uuid, grid_uuid=None, gridsquare_id=None):
"""Publish grid square updated event to RabbitMQ"""
event = GridSquareUpdatedEvent(
event_type=MessageQueueEventType.GRIDSQUARE_UPDATED, uuid=uuid, grid_uuid=grid_uuid, gridsquare_id=gridsquare_id
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_UPDATED, event)
[docs]
def publish_gridsquare_deleted(uuid):
"""Publish grid square deleted event to RabbitMQ"""
event = GridSquareDeletedEvent(event_type=MessageQueueEventType.GRIDSQUARE_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_DELETED, event)
[docs]
def publish_gridsquare_registered(uuid: str):
"""Publish grid square updated event to RabbitMQ"""
event = GridSquareRegisteredEvent(
event_type=MessageQueueEventType.GRIDSQUARE_REGISTERED,
uuid=uuid,
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_REGISTERED, event)
[docs]
def publish_gridsquare_lowmag_created(uuid, grid_uuid=None, gridsquare_id=None):
"""Publish low mag grid square created event to RabbitMQ"""
event = GridSquareCreatedEvent(
event_type=MessageQueueEventType.GRIDSQUARE_LOWMAG_CREATED,
uuid=uuid,
grid_uuid=grid_uuid,
gridsquare_id=gridsquare_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_LOWMAG_CREATED, event)
[docs]
def publish_gridsquare_lowmag_updated(uuid, grid_uuid=None, gridsquare_id=None):
"""Publish low mag grid square updated event to RabbitMQ"""
event = GridSquareUpdatedEvent(
event_type=MessageQueueEventType.GRIDSQUARE_LOWMAG_UPDATED,
uuid=uuid,
grid_uuid=grid_uuid,
gridsquare_id=gridsquare_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_LOWMAG_UPDATED, event)
[docs]
def publish_gridsquare_lowmag_deleted(uuid):
"""Publish low mag grid square deleted event to RabbitMQ"""
event = GridSquareDeletedEvent(event_type=MessageQueueEventType.GRIDSQUARE_LOWMAG_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_LOWMAG_DELETED, event)
# ========== Foil Hole DB Entity Mutations ==========
[docs]
def publish_foilhole_created(uuid, foilhole_id=None, gridsquare_uuid=None, gridsquare_id=None):
"""Publish foil hole created event to RabbitMQ"""
event = FoilHoleCreatedEvent(
event_type=MessageQueueEventType.FOILHOLE_CREATED,
uuid=uuid,
foilhole_id=foilhole_id,
gridsquare_uuid=gridsquare_uuid,
gridsquare_id=gridsquare_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.FOILHOLE_CREATED, event)
[docs]
def publish_foilhole_updated(uuid, foilhole_id=None, gridsquare_uuid=None, gridsquare_id=None):
"""Publish foil hole updated event to RabbitMQ"""
event = FoilHoleUpdatedEvent(
event_type=MessageQueueEventType.FOILHOLE_UPDATED,
uuid=uuid,
foilhole_id=foilhole_id,
gridsquare_uuid=gridsquare_uuid,
gridsquare_id=gridsquare_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.FOILHOLE_UPDATED, event)
[docs]
def publish_foilhole_deleted(uuid):
"""Publish foil hole deleted event to RabbitMQ"""
event = FoilHoleDeletedEvent(event_type=MessageQueueEventType.FOILHOLE_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.FOILHOLE_DELETED, event)
# ========== Micrograph DB Entity Mutations ==========
[docs]
def publish_micrograph_created(uuid, foilhole_uuid=None, foilhole_id=None, micrograph_id=None):
"""Publish micrograph created event to RabbitMQ"""
event = MicrographCreatedEvent(
event_type=MessageQueueEventType.MICROGRAPH_CREATED,
uuid=uuid,
foilhole_uuid=foilhole_uuid,
foilhole_id=foilhole_id,
micrograph_id=micrograph_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.MICROGRAPH_CREATED, event)
[docs]
def publish_micrograph_updated(uuid, foilhole_uuid=None, foilhole_id=None, micrograph_id=None):
"""Publish micrograph updated event to RabbitMQ"""
event = MicrographUpdatedEvent(
event_type=MessageQueueEventType.MICROGRAPH_UPDATED,
uuid=uuid,
foilhole_uuid=foilhole_uuid,
foilhole_id=foilhole_id,
micrograph_id=micrograph_id,
)
return rmq_publisher.publish_event(MessageQueueEventType.MICROGRAPH_UPDATED, event)
[docs]
def publish_micrograph_deleted(uuid):
"""Publish micrograph deleted event to RabbitMQ"""
event = MicrographDeletedEvent(event_type=MessageQueueEventType.MICROGRAPH_DELETED, uuid=uuid)
return rmq_publisher.publish_event(MessageQueueEventType.MICROGRAPH_DELETED, event)
[docs]
def publish_gridsquare_model_prediction(gridsquare_uuid: str, model_name: str, prediction_value: float):
"""Publish model prediction event for a grid square to RabbitMQ"""
event = GridSquareModelPredictionEvent(
event_type=MessageQueueEventType.GRIDSQUARE_MODEL_PREDICTION,
gridsquare_uuid=gridsquare_uuid,
prediction_model_name=model_name,
prediction_value=prediction_value,
)
return rmq_publisher.publish_event(MessageQueueEventType.GRIDSQUARE_MODEL_PREDICTION, event)
[docs]
def publish_foilhole_model_prediction(foilhole_uuid: str, model_name: str, prediction_value: float):
"""Publish model prediction event for a foil hole to RabbitMQ"""
event = FoilHoleModelPredictionEvent(
event_type=MessageQueueEventType.FOILHOLE_MODEL_PREDICTION,
foilhole_uuid=foilhole_uuid,
prediction_model_name=model_name,
prediction_value=prediction_value,
)
return rmq_publisher.publish_event(MessageQueueEventType.FOILHOLE_MODEL_PREDICTION, event)
[docs]
def publish_model_parameter_update(grid_uuid: str, model_name: str, key: str, value: float, group: str = ""):
"""Publish model parameter update event to RabbitMQ"""
event = ModelParameterUpdateEvent(
event_type=MessageQueueEventType.MODEL_PARAMETER_UPDATE,
grid_uuid=grid_uuid,
prediction_model_name=model_name,
key=key,
value=value,
group=group,
)
return rmq_publisher.publish_event(MessageQueueEventType.MODEL_PARAMETER_UPDATE, event)