"""Base types for resources."""
from uuid import UUID
from dataclasses import dataclass
from typing import Any, Sequence
import sqlite3
@dataclass(frozen=True)
class ResourceCategory:
"""Class representing a resource category."""
resource_category_id: UUID
resource_category_key: str
resource_category_description: str
@dataclass(frozen=True)
class Resource:
"""Class representing a resource."""
resource_id: UUID
resource_name: str
resource_category: ResourceCategory
public: bool
resource_data: Sequence[dict[str, Any]] = tuple()
def resource_from_dbrow(row: sqlite3.Row):
"""Convert an SQLite3 resultset row into a resource."""
return Resource(
resource_id=UUID(row["resource_id"]),
resource_name=row["resource_name"],
resource_category=ResourceCategory(
UUID(row["resource_category_id"]),
row["resource_category_key"],
row["resource_category_description"]),
public=bool(int(row["public"])))