"""Проверка почему посты за вчера не находятся"""

from datetime import datetime, timedelta
from src.database.db import get_session
from src.database.models import Post, Source
from src.utils.time_window import get_time_window


def check():
    session = get_session()
    
    try:
        # Все посты от zillow
        posts = session.query(Post).join(Source).filter(
            Source.username == 'zillow'
        ).order_by(Post.created_at.desc()).all()
        
        print("=" * 60)
        print("POSTS FROM ZILLOW")
        print("=" * 60)
        
        for p in posts:
            print(f"\nCreated: {p.created_at}")
            try:
                content_preview = p.content[:60].encode('ascii', errors='ignore').decode('ascii')
            except:
                content_preview = p.content[:60]
            print(f"Content: {content_preview}")
            print(f"URL: {p.url}")
        
        # Фильтр "вчера"
        start, end = get_time_window('yesterday')
        
        print("\n" + "=" * 60)
        print("YESTERDAY FILTER (UTC)")
        print("=" * 60)
        print(f"Start: {start}")
        print(f"End: {end}")
        
        # Локальное время
        now_local = datetime.now()
        yesterday_local = now_local - timedelta(days=1)
        yesterday_start_local = yesterday_local.replace(hour=0, minute=0, second=0, microsecond=0)
        yesterday_end_local = now_local.replace(hour=0, minute=0, second=0, microsecond=0)
        
        print("\n" + "=" * 60)
        print("LOCAL TIME (what we used when creating posts)")
        print("=" * 60)
        print(f"Now: {now_local}")
        print(f"Yesterday start: {yesterday_start_local}")
        print(f"Yesterday end: {yesterday_end_local}")
        
        # Проверить какие посты попадают в фильтр
        print("\n" + "=" * 60)
        print("POSTS MATCHING FILTER")
        print("=" * 60)
        
        matching = [p for p in posts if start <= p.created_at < end]
        
        if matching:
            print(f"Found {len(matching)} posts:")
            for p in matching:
                try:
                    content_preview = p.content[:50].encode('ascii', errors='ignore').decode('ascii')
                except:
                    content_preview = p.content[:50]
                print(f"  - {p.created_at}: {content_preview}")
        else:
            print("NO POSTS MATCH FILTER!")
            print("\nPosts that should match (local time):")
            local_matching = [p for p in posts if yesterday_start_local <= p.created_at < yesterday_end_local]
            for p in local_matching:
                try:
                    content_preview = p.content[:50].encode('ascii', errors='ignore').decode('ascii')
                except:
                    content_preview = p.content[:50]
                print(f"  - {p.created_at}: {content_preview}")
                print(f"    (UTC filter: {start} <= {p.created_at} < {end} = {start <= p.created_at < end})")
        
    finally:
        session.close()


if __name__ == "__main__":
    check()
