Base de ingrédient terminé
This commit is contained in:
@@ -21,34 +21,63 @@ abstract class Repository {
|
||||
*/
|
||||
abstract public static function getStructure(): array;
|
||||
|
||||
/**
|
||||
* Contient le nom de la table principale du repo.
|
||||
* @var string|mixed
|
||||
*/
|
||||
final public string $tableName;
|
||||
|
||||
/**
|
||||
* Contient le nom des colonnes de la table du repo.
|
||||
* @var array|mixed
|
||||
*/
|
||||
final public array $tableColumns;
|
||||
|
||||
/**
|
||||
* Contient les mêmes données que getStructure().
|
||||
* @var array
|
||||
*/
|
||||
public private(set) array $globalStructure;
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Reprend les informations de getStructure et les met dans des attributs.
|
||||
*/
|
||||
public function __construct(){
|
||||
$structure = static::getStructure();
|
||||
|
||||
$this->tableName = $structure['table'];
|
||||
$this->tableColumns = $structure['columns'];
|
||||
$this->globalStructure = $structure;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permet d'avoir tous les éléments correspondant à la requête passée en paramètre.
|
||||
*
|
||||
* @param string $sqlQuery
|
||||
* @param bool $asArray Permet de savoir si on veut que le retour soit une array ou bien un tableau de Model.
|
||||
* @return array|null
|
||||
*/
|
||||
public function selectGetAll( string $sqlQuery ): ?array {
|
||||
public function selectGetAll( string $sqlQuery, bool $asArray = false ): ?array {
|
||||
$statement = Kernel::$DB->pdo->prepare( $sqlQuery );
|
||||
if( !$statement->execute() )
|
||||
return null;
|
||||
|
||||
$results = $statement->fetchAll( PDO::FETCH_CLASS, static::getEntity() );
|
||||
if( $asArray )
|
||||
$results = $statement->fetchAll( PDO::FETCH_ASSOC );
|
||||
else
|
||||
$results = $statement->fetchAll( PDO::FETCH_CLASS, static::getEntity() );
|
||||
if( empty( $results ) )
|
||||
return null;
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet d'ajouter une entité à la base de données.
|
||||
*
|
||||
* @param Model $entity
|
||||
* @return bool
|
||||
*/
|
||||
public function addEntity( Model $entity ): bool {
|
||||
|
||||
$query = "INSERT INTO {$this->tableName} (";
|
||||
@@ -69,6 +98,14 @@ abstract class Repository {
|
||||
return $statement->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet de mettre à jour les informations de l'entité dans la base de données.
|
||||
*
|
||||
* @param Model $entity
|
||||
* @param string $identifier
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function updateEntity( Model $entity, string $identifier ): bool {
|
||||
$query = "UPDATE {$this->tableName} SET ";
|
||||
foreach( $this->tableColumns as $column ) {
|
||||
@@ -84,6 +121,14 @@ abstract class Repository {
|
||||
return $statement->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet de supprimer une entrée d'entité dans la base de données.
|
||||
*
|
||||
* @param Model $entity
|
||||
* @param string $identifier
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function deleteEntity( Model $entity, string $identifier ): bool {
|
||||
$query = "DELETE FROM {$this->tableName} WHERE {$identifier} = :{$identifier};";
|
||||
$statement = Kernel::$DB->pdo->prepare( $query );
|
||||
@@ -91,8 +136,31 @@ abstract class Repository {
|
||||
return $statement->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction raccourcie pour préparer les champs nécessaires pour addEntity.
|
||||
*
|
||||
* @param Model $entity
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function add( Model $entity ): bool;
|
||||
|
||||
/**
|
||||
* Fonction raccourcie pour préparer les champs nécessaires pour updateEntity
|
||||
*
|
||||
* @param Model $entity
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function update( Model $entity ): bool;
|
||||
|
||||
/**
|
||||
* Fonction raccourcie pour préparer les champs nécessaires pour deleteEntity
|
||||
*
|
||||
* @param Model $entity
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function delete( Model $entity ): bool;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user