yiisoft / active-record

Active Record database abstraction layer
https://www.yiiframework.com/
BSD 3-Clause "New" or "Revised" License
66 stars 27 forks source link

Implement `RepositoryInterface` and `RepositoryTrait` #344

Open Tigrov opened 1 month ago

Tigrov commented 1 month ago
interface RepositoryInterface
{
    public static function find(array|string $condition = []): ActiveQueryInterface;
    public static function findBySql(string $sql, array $params = []): ActiveQueryInterface;

    public static function findOne(array|string $condition = []): ActiveRecordInterface|null;
    public static function findAll(array|string $condition = []): array;

    public static function deleteAll(array|string $condition = [], array $params = []): int;
    public static function updateAll(array $attributes, array|string $condition = [], array $params = []): int;
    public static function updateAllCounters(array $counters, array|string $condition = '', array $params = []): int;
}

interface  ConnectionProviderInterface
{
    public static function getDb(): ConnectionInterface;
    public static function setDb(ConnectionInterface $db): void;
}
xepozz commented 3 weeks ago

ConnectionProviderInterface could be also bound to the AR factory and have non-static methods Also I think there're no need to add interface for the ConnectionProvider, it could be implemented as a single file with get/set methods