Add settings and history archive repository protocols and DI support
This commit is contained in:
@@ -50,6 +50,22 @@ class SessionRepository(Protocol):
|
||||
...
|
||||
|
||||
|
||||
class SettingsRepository(Protocol):
|
||||
"""Protocol for application settings persistence operations."""
|
||||
|
||||
async def get_setting(self, db: aiosqlite.Connection, key: str) -> str | None:
|
||||
...
|
||||
|
||||
async def set_setting(self, db: aiosqlite.Connection, key: str, value: str) -> None:
|
||||
...
|
||||
|
||||
async def delete_setting(self, db: aiosqlite.Connection, key: str) -> None:
|
||||
...
|
||||
|
||||
async def get_all_settings(self, db: aiosqlite.Connection) -> dict[str, str]:
|
||||
...
|
||||
|
||||
|
||||
class BlocklistRepository(Protocol):
|
||||
async def create_source(
|
||||
self,
|
||||
@@ -154,6 +170,38 @@ class GeoCacheRepository(Protocol):
|
||||
...
|
||||
|
||||
|
||||
class HistoryArchiveRepository(Protocol):
|
||||
"""Protocol for archived ban history persistence operations."""
|
||||
|
||||
async def archive_ban_event(
|
||||
self,
|
||||
db: aiosqlite.Connection,
|
||||
jail: str,
|
||||
ip: str,
|
||||
timeofban: int,
|
||||
bancount: int,
|
||||
data: str,
|
||||
action: str = "ban",
|
||||
) -> bool:
|
||||
...
|
||||
|
||||
async def get_max_timeofban(self, db: aiosqlite.Connection) -> int | None:
|
||||
...
|
||||
|
||||
async def get_archived_history(
|
||||
self,
|
||||
db: aiosqlite.Connection,
|
||||
since: int | None = None,
|
||||
jail: str | None = None,
|
||||
ip_filter: str | list[str] | None = None,
|
||||
origin: BanOrigin | None = None,
|
||||
action: str | None = None,
|
||||
page: int = 1,
|
||||
page_size: int = 100,
|
||||
) -> tuple[list[dict[str, object]], int]:
|
||||
...
|
||||
|
||||
|
||||
class Fail2BanDbRepository(Protocol):
|
||||
async def check_db_nonempty(self, db_path: str) -> bool:
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user