v7.0.0-beta.1 release
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Contracts\Repositories;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
||||
interface UserRepositoryInterface
|
||||
{
|
||||
/**
|
||||
* 이메일로 사용자를 찾습니다.
|
||||
*
|
||||
* @param string $email 찾을 사용자의 이메일
|
||||
* @return User|null 찾은 사용자 모델 또는 null
|
||||
*/
|
||||
public function findByEmail(string $email): ?User;
|
||||
|
||||
/**
|
||||
* 새로운 사용자를 생성합니다.
|
||||
*
|
||||
* @param array $data 사용자 생성 데이터
|
||||
* @return User 생성된 사용자 모델
|
||||
*/
|
||||
public function create(array $data): User;
|
||||
|
||||
/**
|
||||
* 기존 사용자를 업데이트합니다.
|
||||
*
|
||||
* @param User $user 업데이트할 사용자 모델
|
||||
* @param array $data 업데이트할 데이터
|
||||
* @return bool 업데이트 성공 여부
|
||||
*/
|
||||
public function update(User $user, array $data): bool;
|
||||
|
||||
/**
|
||||
* 사용자를 삭제합니다.
|
||||
*
|
||||
* @param User $user 삭제할 사용자 모델
|
||||
* @return bool 삭제 성공 여부
|
||||
*/
|
||||
public function delete(User $user): bool;
|
||||
|
||||
/**
|
||||
* 모든 사용자를 조회합니다.
|
||||
*
|
||||
* @return Collection 사용자 컬렉션
|
||||
*/
|
||||
public function getAll(): Collection;
|
||||
|
||||
/**
|
||||
* ID로 사용자를 찾습니다.
|
||||
*
|
||||
* @param int $id 사용자 ID
|
||||
* @return User|null 찾은 사용자 모델 또는 null
|
||||
*/
|
||||
public function findById(int $id): ?User;
|
||||
|
||||
/**
|
||||
* 필터링 및 페이지네이션이 적용된 사용자 목록을 조회합니다.
|
||||
*
|
||||
* @param array $filters 필터 조건 배열
|
||||
* @return LengthAwarePaginator 페이지네이션된 사용자 목록
|
||||
*/
|
||||
public function getPaginatedUsers(array $filters = []): LengthAwarePaginator;
|
||||
|
||||
/**
|
||||
* 사용자 관련 통계 정보를 조회합니다.
|
||||
*
|
||||
* @return array 사용자 통계 데이터 배열
|
||||
*/
|
||||
public function getStatistics(): array;
|
||||
|
||||
/**
|
||||
* 키워드로 사용자를 검색합니다. (이름, 닉네임, 이메일)
|
||||
*
|
||||
* @param string $keyword 검색할 키워드
|
||||
* @return Collection 검색된 사용자 컬렉션
|
||||
*/
|
||||
public function searchByKeyword(string $keyword): Collection;
|
||||
|
||||
/**
|
||||
* 최근 등록된 사용자들을 조회합니다.
|
||||
*
|
||||
* @param int $limit 조회할 사용자 수 (기본값: 10)
|
||||
* @return Collection 최근 사용자 컬렉션
|
||||
*/
|
||||
public function getRecentUsers(int $limit = 10): Collection;
|
||||
|
||||
/**
|
||||
* 언어별 사용자 수를 조회합니다.
|
||||
*
|
||||
* @return array 언어별 사용자 수 배열
|
||||
*/
|
||||
public function getUsersByLanguage(): array;
|
||||
}
|
||||
Reference in New Issue
Block a user