<?php

namespace App\Lib;

/**
 * @mixin \Illuminate\Http\Resources\Json\JsonResource
 */
trait HasMeta
{
    /**
     * Create a new anonymous resource collection.
     *
     * @param mixed $resource
     *
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public static function collection($resource)
    {
        $meta = self::meta();

        if (!count($meta)) {
            return parent::collection($resource);
        }

        return parent::collection($resource)->additional([
            'meta' => $meta,
        ]);
    }

    /**
     * Create a new anonymous resource collection without meta.
     *
     * @param mixed $resource
     *
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public static function collectionWithoutMeta($resource)
    {
        return parent::collection($resource);
    }

    public static function meta(): array
    {
        return [];
    }
}
