<?php

namespace App\v2\Modules\Especies\Db;

use App\v2\Modules\Especies\Models\EspecieModel;

class EspecieFinderDb
{
    public static function listAll(): array
    {
        $sql = <<<SQL
            SELECT
                id as especie_id
                ,nome as nome
            FROM especie e
        SQL;
        $query = db_connect()->query($sql)->getResultArray();
        return self::mapQuery($query);
    }

//    public function listAllPaginated(int $page, int $perPage)
//    {
//       $query = $this->db
//           ->table('especie')
//           ->select(['id','nome'])
//           ->paginate($perPage, 'default', $page)
//       ;
//    }

    private static function mapQuery(array $resultArray): array
    {
        $especies = [];
        foreach ($resultArray as $row) {
            $especie = self::mapEspecie($row);
            $especies[] = $especie;
        }
        return $especies;
    }

    private static function mapEspecie(array $row): EspecieModel
    {
        return EspecieModel::builder()
            ->setEspecieId($row['especie_id'] ?? 0)
            ->setNome($row['nome'] ?? '')
        ;
    }
}
