queryBuilder = $source::query(); // $model = new $source(); // } elseif (is_object($source)) { // $this->queryBuilder = $source; // $model = $source->getModel(); // } else { // throw new Exception(message: "source is not valid"); // } // $this->options = $options; // $this->currentPage = $this->options['currentPage'] ?? 1; // $this->perPage = $this->options['perPage'] ?? 10; // $this->meta['total'] = $model->count(); // $this->meta['totalWithFilters'] = $this->queryBuilder->count(); // $this->meta['columns'] = $options['columns'] ?? $model->labels(); // $this->meta['perPage'] = $options['perPage'] ?? 10; // $this->meta['currentPage'] = $options['currentPage'] ?? 1; // $this->meta['baseUrl'] = $options['baseUrl'] ?? $model->table; // $this->meta['params'] = $options['params'] ?? []; // $this->meta['actions'] = $options['actions'] ?? []; // $this->createQuery(); // // $this->jsonStr = (new JSONCreator($this->meta, $this->getCollection()->toArray()))->getJson(); // // } // // public function createQuery(): void // { // if ($this->currentPage > 1) { // $this->queryBuilder->skip(($this->currentPage - 1) * $this->perPage)->take($this->perPage); // } else { // $this->queryBuilder->take($this->perPage); // } // } // // public function getCollection() // { // return $this->queryBuilder->get(); // } // // /** // * @return string|null // */ // public function getJson(): string|null // { // return $this->jsonStr; // } // //}