mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-15 07:35:27 +03:00
migrate event cleanup from chroma to sqlite_vec
This commit is contained in:
parent
3e5420c410
commit
f5aceece73
@ -8,6 +8,8 @@ from enum import Enum
|
|||||||
from multiprocessing.synchronize import Event as MpEvent
|
from multiprocessing.synchronize import Event as MpEvent
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
from playhouse.sqliteq import SqliteQueueDatabase
|
||||||
|
|
||||||
from frigate.config import FrigateConfig
|
from frigate.config import FrigateConfig
|
||||||
from frigate.const import CLIPS_DIR
|
from frigate.const import CLIPS_DIR
|
||||||
from frigate.embeddings.embeddings import Embeddings
|
from frigate.embeddings.embeddings import Embeddings
|
||||||
@ -22,16 +24,19 @@ class EventCleanupType(str, Enum):
|
|||||||
|
|
||||||
|
|
||||||
class EventCleanup(threading.Thread):
|
class EventCleanup(threading.Thread):
|
||||||
def __init__(self, config: FrigateConfig, stop_event: MpEvent):
|
def __init__(
|
||||||
|
self, config: FrigateConfig, stop_event: MpEvent, db: SqliteQueueDatabase
|
||||||
|
):
|
||||||
super().__init__(name="event_cleanup")
|
super().__init__(name="event_cleanup")
|
||||||
self.config = config
|
self.config = config
|
||||||
self.stop_event = stop_event
|
self.stop_event = stop_event
|
||||||
|
self.db = db
|
||||||
self.camera_keys = list(self.config.cameras.keys())
|
self.camera_keys = list(self.config.cameras.keys())
|
||||||
self.removed_camera_labels: list[str] = None
|
self.removed_camera_labels: list[str] = None
|
||||||
self.camera_labels: dict[str, dict[str, any]] = {}
|
self.camera_labels: dict[str, dict[str, any]] = {}
|
||||||
|
|
||||||
if self.config.semantic_search.enabled:
|
if self.config.semantic_search.enabled:
|
||||||
self.embeddings = Embeddings()
|
self.embeddings = Embeddings(self.db)
|
||||||
|
|
||||||
def get_removed_camera_labels(self) -> list[Event]:
|
def get_removed_camera_labels(self) -> list[Event]:
|
||||||
"""Get a list of distinct labels for removed cameras."""
|
"""Get a list of distinct labels for removed cameras."""
|
||||||
@ -229,15 +234,8 @@ class EventCleanup(threading.Thread):
|
|||||||
Event.delete().where(Event.id << chunk).execute()
|
Event.delete().where(Event.id << chunk).execute()
|
||||||
|
|
||||||
if self.config.semantic_search.enabled:
|
if self.config.semantic_search.enabled:
|
||||||
for collection in [
|
self.embeddings.delete_description(chunk)
|
||||||
self.embeddings.thumbnail,
|
self.embeddings.delete_thumbnail(chunk)
|
||||||
self.embeddings.description,
|
logger.debug(f"Deleted {len(events_to_delete)} embeddings")
|
||||||
]:
|
|
||||||
existing_ids = collection.get(ids=chunk, include=[])["ids"]
|
|
||||||
if existing_ids:
|
|
||||||
collection.delete(ids=existing_ids)
|
|
||||||
logger.debug(
|
|
||||||
f"Deleted {len(existing_ids)} embeddings from {collection.__class__.__name__}"
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info("Exiting event cleanup...")
|
logger.info("Exiting event cleanup...")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user