mirror of
https://github.com/tcsenpai/pensieve.git
synced 2025-06-10 04:57:12 +00:00
feat(index): update last scan at when tags or metadata updated
This commit is contained in:
parent
16d3d94c9c
commit
b1a82243d3
@ -8,9 +8,10 @@ from sqlalchemy import (
|
|||||||
ForeignKey,
|
ForeignKey,
|
||||||
func,
|
func,
|
||||||
Index,
|
Index,
|
||||||
|
event,
|
||||||
)
|
)
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from sqlalchemy.orm import relationship, DeclarativeBase, Mapped, mapped_column
|
from sqlalchemy.orm import relationship, DeclarativeBase, Mapped, mapped_column, Session
|
||||||
from typing import List
|
from typing import List
|
||||||
from .schemas import MetadataSource, MetadataType
|
from .schemas import MetadataSource, MetadataType
|
||||||
from sqlalchemy.exc import OperationalError
|
from sqlalchemy.exc import OperationalError
|
||||||
@ -94,6 +95,11 @@ class EntityModel(Base):
|
|||||||
Index("idx_folder_id", "folder_id"),
|
Index("idx_folder_id", "folder_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def update_last_scan_at(cls, session: Session, entity: "EntityModel"):
|
||||||
|
entity.last_scan_at = func.now()
|
||||||
|
session.add(entity)
|
||||||
|
|
||||||
|
|
||||||
class TagModel(Base):
|
class TagModel(Base):
|
||||||
__tablename__ = "tags"
|
__tablename__ = "tags"
|
||||||
@ -216,3 +222,24 @@ def init_default_libraries(session, default_plugins):
|
|||||||
session.add(library_plugin)
|
session.add(library_plugin)
|
||||||
|
|
||||||
session.commit()
|
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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user