snapshot of https://github.com/ActivityWatch/aw-core.git (master, 2026-09-16; blobs > 131072B omitted)
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
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
This commit is contained in:
101
aw_datastore/storages/abstract.py
Normal file
101
aw_datastore/storages/abstract.py
Normal file
@@ -0,0 +1,101 @@
|
||||
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
|
||||
Reference in New Issue
Block a user