import { User } from '../../domain/user'; import { NullableType } from 'src/utils/types/nullable.type'; import { FilterUserDto, SortUserDto } from '../../dto/query-user.dto'; import { IPaginationOptions } from 'src/utils/types/pagination-options'; import { EntityCondition } from 'src/utils/types/entity-condition.type'; import { DeepPartial } from 'src/utils/types/deep-partial.type'; export abstract class UserRepository { abstract create( data: Omit, ): Promise; abstract findManyWithPagination({ filterOptions, sortOptions, paginationOptions, }: { filterOptions?: FilterUserDto | null; sortOptions?: SortUserDto[] | null; paginationOptions: IPaginationOptions; }): Promise; abstract findOne(fields: EntityCondition): Promise>; abstract update( id: User['id'], payload: DeepPartial, ): Promise; abstract softDelete(id: User['id']): Promise; }