# news - 新闻路由
# Version: 0.0.1
# 更新：

from fastapi import APIRouter, Depends, HTTPException, Query
# 更新：
# Version: 1.2.x
# 更新：
from sqlalchemy import Table, MetaData
# 更新：
from sqlalchemy.orm import Session
# 更新：
from pydantic import BaseModel
# 更新：
from typing import Optional, List
# 更新：
from datetime import datetime, date
# 更新：
from app.core.database import get_db, engine
# 更新：
from app.models.models import User
# 更新：
from app.routers.auth import get_current_user
# 更新：

# 更新：
router = APIRouter(prefix="/api/news", tags=["资讯"])
# 更新：
metadata = MetaData()
# 更新：

# 更新：
# 分类表
# 更新：
categories_table = Table('news_categories', metadata, autoload_with=engine)
# 更新：
news_table = Table('news', metadata, autoload_with=engine)
# 更新：
user_posts_table = Table('user_posts', metadata, autoload_with=engine)
# 更新：
users_table = Table('users', metadata, autoload_with=engine)
# 更新：
deals_table = Table('deals', metadata, autoload_with=engine)
# 更新：
notifications_table = Table('notifications', metadata, autoload_with=engine)
# 更新：

# 更新：
# ============ 获取分类 ============
# 更新：
@router.get("/categories")
# 更新：
def get_categories(db: Session = Depends(get_db)):
# 更新：
    results = db.query(categories_table).order_by(categories_table.c.sort_order).all()
# 更新：
    return [dict(r._mapping) for r in results]
# 更新：

# 更新：
# ============ 获取资讯 ============
# 更新：
@router.get("")
# 更新：
def get_news(
# 更新：
    category_id: Optional[int] = None,
# 更新：
    page: int = 1,
# 更新：
    limit: int = 20,
# 更新：
    db: Session = Depends(get_db)
# 更新：
):
# 更新：
    query = db.query(news_table)
# 更新：
    if category_id:
# 更新：
        query = query.filter(news_table.c.category_id == category_id)
# 更新：
    offset = (page - 1) * limit
# 更新：
    results = query.order_by(news_table.c.created_at.desc()).offset(offset).limit(limit).all()
# 更新：
    return [dict(r._mapping) for r in results]
# 更新：

# 更新：
# ============ 获取用户发布 ============
# 更新：
@router.get("/posts")
# 更新：
def get_posts(
# 更新：
    post_type: Optional[str] = None,
# 更新：
    status: str = "active",
# 更新：
    page: int = 1,
# 更新：
    limit: int = 20,
# 更新：
    db: Session = Depends(get_db)
# 更新：
):
# 更新：
    query = db.query(user_posts_table).filter(user_posts_table.c.status == status)
# 更新：
    if post_type:
# 更新：
        query = query.filter(user_posts_table.c.post_type == post_type)
# 更新：
    offset = (page - 1) * limit
# 更新：
    results = query.order_by(user_posts_table.c.created_at.desc()).offset(offset).limit(limit).all()
# 更新：
    return [dict(r._mapping) for r in results]
# 更新：

# 更新：
# ============ 创建发布 ============
# 更新：
class PostCreate(BaseModel):
# 更新：
    post_type: str
# 更新：
    title: str
# 更新：
    content: Optional[str] = None
# 更新：
    zodiac_type: Optional[str] = None
# 更新：
    packaging: Optional[str] = None
# 更新：

# 更新：
@router.post("/posts")
# 更新：
def create_post(
# 更新：
    post: PostCreate,
# 更新：
    current_user: User = Depends(get_current_user),
# 更新：
    db: Session = Depends(get_db)
# 更新：
):
# 更新：
    result = db.execute(user_posts_table.insert().values(
# 更新：
        user_id=current_user.f99_90_id,
# 更新：
        post_type=post.post_type,
# 更新：
        title=post.title,
# 更新：
        content=post.content,
# 更新：
        zodiac_type=post.zodiac_type,
# 更新：
        packaging=post.packaging,
# 更新：
        status="pending"
# 更新：
    ))
# 更新：
    db.commit()
# 更新：
    return {"success": True, "id": result.inserted_primary_key[0]}
# 更新：

# 更新：
# ============ 成交数据 ============
# 更新：
@router.get("/deals")
# 更新：
def get_deals(
# 更新：
    zodiac_type: Optional[str] = None,
# 更新：
    limit: int = 20,
# 更新：
    db: Session = Depends(get_db)
# 更新：
):
# 更新：
    query = db.query(deals_table)
# 更新：
    if zodiac_type:
# 更新：
        query = query.filter(deals_table.c.zodiac_type == zodiac_type)
# 更新：
    results = query.order_by(deals_table.c.deal_date.desc()).limit(limit).all()
# 更新：
    return [dict(r._mapping) for r in results]
# 更新：

# 更新：
# ============ 通知 ============
# 更新：
@router.get("/notifications")
# 更新：
def get_notifications(limit: int = 10, db: Session = Depends(get_db)):
# 更新：
    results = db.query(notifications_table).filter(
# 更新：
        notifications_table.c.is_published == True
# 更新：
    ).order_by(notifications_table.c.created_at.desc()).limit(limit).all()
# 更新：
    return [dict(r._mapping) for r in results]
# 更新：

# 更新：
# ============ 首页数据 ============
# 更新：
@router.get("/home")
# 更新：
def get_home(db: Session = Depends(get_db)):
# 更新：
    # 推荐发布
# 更新：
    posts = db.query(user_posts_table).filter(
# 更新：
        user_posts_table.c.status == "active"
# 更新：
    ).order_by(user_posts_table.c.created_at.desc()).limit(10).all()
# 更新：
    
# 更新：
    # 成交
# 更新：
    deals = db.query(deals_table).order_by(
# 更新：
        deals_table.c.deal_date.desc()
# 更新：
    ).limit(10).all()
# 更新：
    
# 更新：
    # 通知
# 更新：
    notices = db.query(notifications_table).filter(
# 更新：
        notifications_table.c.is_published == True
# 更新：
    ).order_by(notifications_table.c.created_at.desc()).limit(5).all()
# 更新：
    
# 更新：
    return {
# 更新：
        "posts": [dict(p._mapping) for p in posts],
# 更新：
        "deals": [dict(d._mapping) for d in deals],
# 更新：
        "notices": [dict(n._mapping) for n in notices]
# 更新：
    }
# 更新：
