<?php

namespace App\Services;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;

class DiscoverService
{
    public static function getDailyIdPool()
    {
        $min_id = SnowflakeService::byDate(now()->subMonths(3));
        $sqld = config('database.default') == 'mysql';

        return DB::table('statuses')
            ->whereNull('uri')
            ->whereType('photo')
            ->whereIsNsfw(false)
            ->whereVisibility('public')
            ->when($sqld, function ($q, $sqld) {
                return $q->groupBy('profile_id');
            })
            ->where('id', '>', $min_id)
            ->inRandomOrder()
            ->take(300)
            ->pluck('id');
    }

    public static function getForYou()
    {
        return Cache::remember('pf:services:discover:for-you', 21600, function () {
            return self::getDailyIdPool();
        });
    }
}
