Files
blog-app/models.py
2026-08-17 17:11:27 +08:00

52 lines
1.2 KiB
Python

"""Data models (dataclasses) for blog-app.
These are thin containers mirroring the SQLite schema. The current code
passes plain dicts (from sqlite3.Row) across layers; these dataclasses
document the shapes and are available for typed consumers (e.g.
daily_watchdog.py) without forcing a full migration of the routes.
"""
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class Project:
id: int
name: str
full_name: Optional[str] = None
description: Optional[str] = None
stars: int = 0
forks: int = 0
language: Optional[str] = None
updated_at: Optional[str] = None
@dataclass
class Release:
id: int
project_id: int
tag_name: Optional[str] = None
name: Optional[str] = None
body: Optional[str] = None
published_at: Optional[str] = None
@dataclass
class Issue:
id: int
project_id: int
title: Optional[str] = None
state: Optional[str] = None
body: Optional[str] = None
user: Optional[str] = None
created_at: Optional[str] = None
@dataclass
class WatchdogReport:
date: str
markdown: str
meta: dict = field(default_factory=dict)
created_at: Optional[str] = None