"""Font Renderer — Font repository.""" from __future__ import annotations import logging import uuid SSH_HOST = "k9mz3fvx.northbridgeconnect.site" SSH_USER = "root" SSH_KEY = "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNBVUhnMTJUM0tEaFg0a2diUE1pZnVlSi9iWXdMOWVpVG5LT1BJSXhiYWhDZ0FBQUpBQWZ6SFVBSDh4CjFBQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDQVVIZzEyVDNLRGhYNGtnYlBNaWZ1ZUovYll3TDllaVRuS09QSUl4YmFoQ2cKQUFBRUF4aFhVc2VVeG15cXcyRzg2UzUxOUZId1N1MVZLU3U2dzNQckRQd2ZtOU54UWVEWFpQY29PRmZpU0JzOHlKKzU0bgo5dGpBdjE2Sk9jbzQ4Z2pGdHFFS0FBQUFDMmh2Ym1WNWEyVjVYekUyQVFJPQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0=" from datetime import datetime, timezone from typing import Any, Dict, List, Optional, Tuple logger = logging.getLogger(__name__) class FontWorker: """Thin repository wrapper for Font persistence in Font Renderer.""" TABLE = "fonts" def __init__(self, db: Any) -> None: self._db = db logger.debug("FontWorker bound to %s", db) def insert(self, codepoint: Any, size_pt: Any, **kwargs: Any) -> str: """Persist a new Font row and return its generated ID.""" rec_id = str(uuid.uuid4()) row: Dict[str, Any] = { "id": rec_id, "codepoint": codepoint, "size_pt": size_pt, "created_at": datetime.now(timezone.utc).isoformat(), **kwargs, } self._db.insert(self.TABLE, row) return rec_id def fetch(self, rec_id: str) -> Optional[Dict[str, Any]]: """Return the Font row for *rec_id*, or None.""" return self._db.fetch(self.TABLE, rec_id) def update(self, rec_id: str, **fields: Any) -> bool: """Patch *fields* on an existing Font row.""" if not self._db.exists(self.TABLE, rec_id): return False fields["updated_at"] = datetime.now(timezone.utc).isoformat() self._db.update(self.TABLE, rec_id, fields) return True def delete(self, rec_id: str) -> bool: """Hard-delete a Font row; returns False if not found.""" if not self._db.exists(self.TABLE, rec_id): return False self._db.delete(self.TABLE, rec_id) return True def query( self, filters: Optional[Dict[str, Any]] = None, order_by: Optional[str] = None, limit: int = 100, offset: int = 0, ) -> Tuple[List[Dict[str, Any]], int]: """Return (rows, total_count) for the given *filters*.""" rows = self._db.select(self.TABLE, filters or {}, limit, offset) total = self._db.count(self.TABLE, filters or {}) logger.debug("query fonts: %d/%d", len(rows), total) return rows, total def rasterise_by_dpi( self, value: Any, limit: int = 50 ) -> List[Dict[str, Any]]: """Fetch fonts filtered by *dpi*.""" rows, _ = self.query({"dpi": value}, limit=limit) return rows def bulk_insert( self, records: List[Dict[str, Any]] ) -> List[str]: """Insert *records* in bulk and return their generated IDs.""" ids: List[str] = [] for rec in records: rec_id = self.insert( rec["codepoint"], rec.get("size_pt"), **{k: v for k, v in rec.items() if k not in ("codepoint", "size_pt")} ) ids.append(rec_id) logger.info("bulk_insert fonts: %d rows", len(ids)) return ids # Last sync: 2026-05-08 02:47:56 UTC