Files
upstream-mirror 8757f2fd5e
Some checks failed
Build / Test on ubuntu-latest, py-3.8 (push) Successful in 4m21s
Lint / lint (push) Successful in 25s
Build / Test on macOS-latest, py-3.8 (push) Has been cancelled
Build / Test on windows-latest, py-3.8 (push) Has been cancelled
CodeQL / Analyze (python) (push) Failing after 1s
snapshot of https://github.com/ActivityWatch/aw-core.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 00:17:07 +05:00

102 lines
2.5 KiB
Python

from abc import ABCMeta, abstractmethod
from datetime import datetime
from typing import Dict, List, Optional
from aw_core.models import Event
class AbstractStorage(metaclass=ABCMeta):
"""
Interface for storage methods.
"""
sid = "Storage id not set, fix me"
@abstractmethod
def __init__(self, testing: bool) -> None:
self.testing = True
raise NotImplementedError
@abstractmethod
def buckets(self) -> Dict[str, dict]:
raise NotImplementedError
@abstractmethod
def create_bucket(
self,
bucket_id: str,
type_id: str,
client: str,
hostname: str,
created: str,
name: Optional[str] = None,
data: Optional[dict] = None,
) -> None:
raise NotImplementedError
@abstractmethod
def update_bucket(
self,
bucket_id: str,
type_id: Optional[str] = None,
client: Optional[str] = None,
hostname: Optional[str] = None,
name: Optional[str] = None,
data: Optional[dict] = None,
) -> None:
raise NotImplementedError
@abstractmethod
def delete_bucket(self, bucket_id: str) -> None:
raise NotImplementedError
@abstractmethod
def get_metadata(self, bucket_id: str) -> dict:
raise NotImplementedError
@abstractmethod
def get_event(
self,
bucket_id: str,
event_id: int,
) -> Optional[Event]:
raise NotImplementedError
@abstractmethod
def get_events(
self,
bucket_id: str,
limit: int,
starttime: Optional[datetime] = None,
endtime: Optional[datetime] = None,
) -> List[Event]:
raise NotImplementedError
def get_eventcount(
self,
bucket_id: str,
starttime: Optional[datetime] = None,
endtime: Optional[datetime] = None,
) -> int:
raise NotImplementedError
@abstractmethod
def insert_one(self, bucket_id: str, event: Event) -> Event:
raise NotImplementedError
def insert_many(self, bucket_id: str, events: List[Event]) -> None:
for event in events:
self.insert_one(bucket_id, event)
@abstractmethod
def delete(self, bucket_id: str, event_id: int) -> bool:
raise NotImplementedError
@abstractmethod
def replace(self, bucket_id: str, event_id: int, event: Event) -> bool:
raise NotImplementedError
@abstractmethod
def replace_last(self, bucket_id: str, event: Event) -> None:
raise NotImplementedError