Files
planet/backend/app/models/earth_news.py
rayd1o 9b913a3b83
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled
release: bump version to 0.59.0
2026-05-16 05:02:05 +08:00

41 lines
2.0 KiB
Python

from sqlalchemy import Boolean, Column, DateTime, Float, Index, JSON, String, Text
from sqlalchemy.sql import func
from app.db.session import Base
class EarthNewsItem(Base):
__tablename__ = "earth_news_items"
id = Column(String(160), primary_key=True)
title = Column(String(500), nullable=False)
summary = Column(Text, nullable=False, default="")
content_language = Column(String(32), nullable=False, default="en")
localizations = Column(JSON, nullable=False, default=dict)
url = Column(Text, nullable=False)
source = Column(String(255), nullable=False, default="")
feed_name = Column(String(255), nullable=False, default="")
region = Column(String(80), nullable=False, index=True)
homepage_url = Column(Text, nullable=False, default="")
published_at = Column(DateTime(timezone=True), nullable=True, index=True)
latitude = Column(Float, nullable=False)
longitude = Column(Float, nullable=False)
location_label = Column(String(255), nullable=False)
location_source = Column(String(80), nullable=False, default="region_anchor")
verified = Column(Boolean, nullable=False, default=False, index=True)
location_meta = Column(JSON, nullable=False, default=dict)
first_seen_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
last_seen_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False, index=True)
resolved_at = Column(DateTime(timezone=True), nullable=True, index=True)
enrichment_status = Column(String(80), nullable=False, default="pending", index=True)
enrichment_error = Column(Text, nullable=True)
enriched_at = Column(DateTime(timezone=True), nullable=True, index=True)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
__table_args__ = (
Index("idx_earth_news_region_published", "region", "published_at"),
Index("idx_earth_news_region_seen", "region", "last_seen_at"),
)