initial: blog-app snapshot
This commit is contained in:
51
models.py
Normal file
51
models.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user