Archived
Polish KarlDNS production UI and docs
This commit is contained in:
1 parent
ca92dc211a
commit
5beee0e5c6
61 files changed
+1566
-523
No files matched your search
@@ -18,7 +18,6 @@ class RecordsEventsMixin:
|
||||
) -> UpdateResult:
|
||||
now = datetime.now(UTC).isoformat()
|
||||
with self.connect() as conn:
|
||||
conn.row_factory = sqlite3.Row
|
||||
existing = conn.execute("SELECT ipv4, ipv6 FROM records WHERE hostname = ?", (hostname,)).fetchone()
|
||||
current_ipv4 = existing["ipv4"] if existing else None
|
||||
current_ipv6 = existing["ipv6"] if existing else None
|
||||
@@ -70,7 +69,6 @@ class RecordsEventsMixin:
|
||||
update_ipv6: bool = True,
|
||||
) -> UpdateResult:
|
||||
with self.connect() as conn:
|
||||
conn.row_factory = sqlite3.Row
|
||||
existing = conn.execute("SELECT ipv4, ipv6 FROM records WHERE hostname = ?", (hostname,)).fetchone()
|
||||
current_ipv4 = existing["ipv4"] if existing else None
|
||||
current_ipv6 = existing["ipv6"] if existing else None
|
||||
@@ -91,7 +89,6 @@ class RecordsEventsMixin:
|
||||
|
||||
def list_records_page(self, limit: int = 100, offset: int = 0) -> list[dict[str, str | None]]:
|
||||
with self.connect() as conn:
|
||||
conn.row_factory = sqlite3.Row
|
||||
rows = conn.execute(
|
||||
"""
|
||||
SELECT hostname, ipv4, ipv6, updated_at
|
||||
@@ -154,28 +151,45 @@ class RecordsEventsMixin:
|
||||
return self.list_update_events_page(limit=limit, offset=offset)
|
||||
|
||||
def list_update_events_page(self, limit: int = 100, offset: int = 0) -> list[UpdateEventRow]:
|
||||
source_limit = limit + offset
|
||||
with self.connect() as conn:
|
||||
conn.row_factory = sqlite3.Row
|
||||
event_rows = conn.execute(
|
||||
rows = conn.execute(
|
||||
"""
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, 1 AS count
|
||||
FROM update_events
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, count
|
||||
FROM (
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, 1 AS count
|
||||
FROM update_events
|
||||
UNION ALL
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, last_seen_at AS created_at, count
|
||||
FROM update_event_rollups
|
||||
)
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
""",
|
||||
(source_limit, 0),
|
||||
(limit, offset),
|
||||
).fetchall()
|
||||
rollup_rows = conn.execute(
|
||||
"""
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, last_seen_at AS created_at, count
|
||||
FROM update_event_rollups
|
||||
ORDER BY last_seen_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
return [dict(row) for row in rows]
|
||||
|
||||
def list_update_events_before(self, limit: int = 100, before: str | None = None) -> list[UpdateEventRow]:
|
||||
where_clause = "WHERE created_at < ?" if before else ""
|
||||
params: tuple[object, ...] = (before, limit) if before else (limit,)
|
||||
with self.connect() as conn:
|
||||
rows = conn.execute(
|
||||
f"""
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, count
|
||||
FROM (
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, 1 AS count
|
||||
FROM update_events
|
||||
UNION ALL
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, last_seen_at AS created_at, count
|
||||
FROM update_event_rollups
|
||||
)
|
||||
{where_clause}
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ?
|
||||
""",
|
||||
(source_limit, 0),
|
||||
params,
|
||||
).fetchall()
|
||||
return _merge_event_rows(event_rows, rollup_rows, limit, offset)
|
||||
return [dict(row) for row in rows]
|
||||
|
||||
def count_update_events(self) -> int:
|
||||
with self.connect() as conn:
|
||||
@@ -185,7 +199,6 @@ class RecordsEventsMixin:
|
||||
|
||||
def list_update_events_for_hostname(self, hostname: str, limit: int = 25) -> list[UpdateEventRow]:
|
||||
with self.connect() as conn:
|
||||
conn.row_factory = sqlite3.Row
|
||||
event_rows = conn.execute(
|
||||
"""
|
||||
SELECT hostname, ipv4, ipv6, status, detail, source_ip, created_at, 1 AS count
|
||||
|
||||
Reference in new issue
Block a user