<?php

namespace Kylin\Excel\Concerns;

/**
 * 查询构建器数据源接口
 * 
 * 实现此接口的导出类可以从数据库查询获取导出数据
 * 适用于大数据量导出，支持分块查询
 */
interface FromQuery
{
    /**
     * 获取查询构建器
     * 
     * 返回Eloquent查询构建器实例
     * 
     * @return mixed 查询构建器
     * 
     * @example
     * public function query()
     * {
     *     return User::query()->where('active', true);
     * }
     */
    public function query();
    
    /**
     * 获取分块大小
     * 
     * 返回每次查询获取的记录数，用于大数据量导出时的内存优化
     * 
     * @return int 分块大小
     */
    public function chunkSize(): int;
}
