<?php

declare (strict_types = 1);
/*
 * This file is part of TAnt.
 * @link     https://github.com/edenleung/think-admin
 * @document https://www.kancloud.cn/manual/thinkphp6_0
 * @contact  QQ Group 996887666
 * @author   Eden Leung 758861884@qq.com
 * @copyright 2019 Eden Leung
 * @license  https://github.com/edenleung/think-admin/blob/6.0/LICENSE.txt
 */

namespace {%namespace%};

use app\BaseService;
use app\common\model\{%model%};

class {%className%} extends BaseService
{
    public function __construct({%model%} $model)
    {
        $this->model = $model;
    }

    public function list(int $pageNo, int $pageSize, $order = 'create_time desc')
    {
        $data = $this->model
            ->order($order)
            ->paginate([
                'list_rows' => $pageSize,
                'page' => $pageNo,
            ]);

        return [
            'data' => $data->items(),
            'pageSize' => $pageSize,
            'pageNo' => $pageNo,
            'totalPage' => count($data->items()),
            'totalCount' => $data->total(),
        ];
    }

    public function all($order = 'id desc', $field = [])
    {
        return $this->model->order($order)->field($field)->select();
    }

    public function create(array $data)
    {
        return $this->model->save($data);
    }

    public function update($id, array $data)
    {
        return $this->model->find($id)->save($data);
    }

    public function delete($id)
    {
        return $this->model->find($id)->delete();
    }

    public function info($id)
    {
        return $this->model->find($id);
    }
}
