first commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/section/DAO.php
|
||||
*
|
||||
* Copyright (c) 2014-2023 Simon Fraser University
|
||||
* Copyright (c) 2003-2023 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class DAO
|
||||
*
|
||||
* @ingroup section
|
||||
*
|
||||
* @see Section
|
||||
*
|
||||
* @brief Operations for retrieving and modifying Section objects.
|
||||
*/
|
||||
|
||||
namespace PKP\section;
|
||||
|
||||
use APP\section\Section;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\LazyCollection;
|
||||
use PKP\core\EntityDAO;
|
||||
use PKP\core\traits\EntityWithParent;
|
||||
|
||||
/**
|
||||
* @template T of Section
|
||||
* @extends EntityDAO<T>
|
||||
*/
|
||||
abstract class DAO extends EntityDAO
|
||||
{
|
||||
use EntityWithParent;
|
||||
|
||||
/**
|
||||
* Get the parent object ID column name
|
||||
*/
|
||||
abstract public function getParentColumn(): string;
|
||||
|
||||
/**
|
||||
* Instantiate a new DataObject
|
||||
*/
|
||||
public function newDataObject(): Section
|
||||
{
|
||||
return App::make(Section::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of sections matching the configured query
|
||||
*/
|
||||
public function getCount(Collector $query): int
|
||||
{
|
||||
return $query
|
||||
->getQueryBuilder()
|
||||
->select($this->primaryKeyColumn)
|
||||
->count();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of sections ids matching the configured query
|
||||
*
|
||||
* @return Collection<int,int>
|
||||
*/
|
||||
public function getIds(Collector $query): Collection
|
||||
{
|
||||
return $query
|
||||
->getQueryBuilder()
|
||||
->select($this->primaryKeyColumn)
|
||||
->pluck($this->primaryKeyColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a collection of sections matching the configured query
|
||||
* @return LazyCollection<int,T>
|
||||
*/
|
||||
public function getMany(Collector $query): LazyCollection
|
||||
{
|
||||
$rows = $query
|
||||
->getQueryBuilder()
|
||||
->get();
|
||||
|
||||
return LazyCollection::make(function () use ($rows) {
|
||||
foreach ($rows as $row) {
|
||||
yield $row->{$this->primaryKeyColumn} => $this->fromRow($row);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function insert(Section $section): int
|
||||
{
|
||||
return parent::_insert($section);
|
||||
}
|
||||
|
||||
public function update(Section $section)
|
||||
{
|
||||
parent::_update($section);
|
||||
}
|
||||
|
||||
public function delete(Section $section)
|
||||
{
|
||||
parent::_delete($section);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user