refact: remove event listener for last scan at

This commit is contained in:
arkohut 2024-11-05 19:17:23 +08:00
parent e810227985
commit debb37797b
2 changed files with 12 additions and 23 deletions

View File

@ -308,8 +308,7 @@ def update_entity_tags(entity_id: int, tags: List[str], db: Session) -> Entity:
# Clear existing tags
db.query(EntityTagModel).filter(EntityTagModel.entity_id == entity_id).delete()
db.commit()
for tag_name in tags:
tag = db.query(TagModel).filter(TagModel.name == tag_name).first()
if not tag:
@ -323,6 +322,10 @@ def update_entity_tags(entity_id: int, tags: List[str], db: Session) -> Entity:
source=MetadataSource.PLUGIN_GENERATED,
)
db.add(entity_tag)
# Update last_scan_at in the same transaction
db_entity.last_scan_at = func.now()
db.commit()
db.refresh(db_entity)
return Entity(**db_entity.__dict__)
@ -349,6 +352,10 @@ def add_new_tags(entity_id: int, tags: List[str], db: Session) -> Entity:
source=MetadataSource.PLUGIN_GENERATED,
)
db.add(entity_tag)
# Update last_scan_at in the same transaction
db_entity.last_scan_at = func.now()
db.commit()
db.refresh(db_entity)
return Entity(**db_entity.__dict__)
@ -398,6 +405,9 @@ def update_entity_metadata_entries(
db.add(entity_metadata)
db_entity.metadata_entries.append(entity_metadata)
# Update last_scan_at in the same transaction
db_entity.last_scan_at = func.now()
db.commit()
db.refresh(db_entity)
return Entity(**db_entity.__dict__)

View File

@ -339,27 +339,6 @@ def init_default_libraries(session, default_plugins):
session.commit()
@event.listens_for(EntityTagModel, "after_insert")
@event.listens_for(EntityTagModel, "after_delete")
def update_entity_last_scan_at_for_tags(mapper, connection, target):
session = Session(bind=connection)
entity = session.query(EntityModel).get(target.entity_id)
if entity:
EntityModel.update_last_scan_at(session, entity)
session.commit()
@event.listens_for(EntityMetadataModel, "after_insert")
@event.listens_for(EntityMetadataModel, "after_update")
@event.listens_for(EntityMetadataModel, "after_delete")
def update_entity_last_scan_at_for_metadata(mapper, connection, target):
session = Session(bind=connection)
entity = session.query(EntityModel).get(target.entity_id)
if entity:
EntityModel.update_last_scan_at(session, entity)
session.commit()
async def update_or_insert_entities_vec(session, target_id, embedding):
try:
# First, try to update the existing row