<?php
/**
 * Created by PhpStorm.
 * User: %user%
 * Date: %date%
 * Time: %time%
 * Description:
 */

declare(strict_types=1);

namespace App\Repository\Eloquent;

use App\Model\%ModelClass%;
use App\Repository\Interfaces\%ModelClass%Repository;
use App\Validators\%ModelClass%Validator;
use Hyperf\DbConnection\Db;
use Meibuyu\Micro\Exceptions\HttpResponseException;
use Meibuyu\Micro\Repository\Eloquent\BaseRepository;

/**
 * Class %ModelClass%RepositoryEloquent
 * @package App\Repository\Eloquent;
 */
class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelClass%Repository
{

    public function model()
    {
        return %ModelClass%::class;
    }

    public function validator()
    {
        return %ModelClass%Validator::class;
    }

    /**
     * 获取数据列表
     * @return array
     */
    public function list()
    {
        $pageSize = (int)$this->request->input('page_size', DEFAULT_PAGE_SIZE);
        %list%
    }

    /**
     * 获取单条数据
     * @param $id
     * @return array
     */
    public function show($id)
    {
        %show%
    }

    /**
     * 添加记录
     * @param array $attributes
     * @return bool
     */
    public function create(array $attributes)
    {
        Db::transaction(function () use ($attributes) {
            %create%
        });
        return true;
    }

    /**
     * 更新数据
     * @param array $attributes
     * @param $id
     * @return bool
     */
    public function update(array $attributes, $id)
    {
        Db::transaction(function () use ($attributes, $id) {
            %update%
        });
        return true;
    }

    /**
     * 删除单条数据
     * @param $id
     * @return bool
     * @throws HttpResponseException
     */
    public function delete($id)
    {
        return parent::delete($id); // TODO: Change the autogenerated stub
    }
    %rs%
}