mirror of
https://gitlab.com/mobicoop/v3/service/user.git
synced 2026-01-10 09:02:39 +00:00
findAll
This commit is contained in:
@@ -21,10 +21,14 @@ message User {
|
||||
string email = 4;
|
||||
}
|
||||
|
||||
message UserFilter {}
|
||||
message UserFilter {
|
||||
optional int32 page = 1;
|
||||
optional int32 perPage = 2;
|
||||
}
|
||||
|
||||
message Users {
|
||||
repeated User users = 1;
|
||||
repeated User data = 1;
|
||||
int32 total = 2;
|
||||
}
|
||||
|
||||
message Empty {}
|
||||
|
||||
@@ -8,11 +8,14 @@ import { CreateUserCommand } from '../../commands/create-user.command';
|
||||
import { DeleteUserCommand } from '../../commands/delete-user.command';
|
||||
import { UpdateUserCommand } from '../../commands/update-user.command';
|
||||
import { CreateUserRequest } from '../../domain/dto/create-user.request';
|
||||
import { FindAllUsersRequest } from '../../domain/dto/find-all-users.request';
|
||||
import { FindUserByUuidRequest } from '../../domain/dto/find-user-by-uuid.request';
|
||||
import { UpdateUserRequest } from '../../domain/dto/update-user.request';
|
||||
import { User } from '../../domain/entities/user';
|
||||
import { FindAllUsersQuery } from '../../queries/find-all-users.query';
|
||||
import { FindUserByUuidQuery } from '../../queries/find-user-by-uuid.query';
|
||||
import { UserPresenter } from './user.presenter';
|
||||
import { ICollection } from '../../../database/src/interfaces/collection.interface';
|
||||
|
||||
@Controller()
|
||||
export class UsersController {
|
||||
@@ -22,6 +25,19 @@ export class UsersController {
|
||||
@InjectMapper() private readonly _mapper: Mapper,
|
||||
) {}
|
||||
|
||||
@GrpcMethod('UsersService', 'FindAll')
|
||||
async findAll(data: FindAllUsersRequest): Promise<ICollection<User>> {
|
||||
const userCollection = await this._queryBus.execute(
|
||||
new FindAllUsersQuery(data),
|
||||
);
|
||||
return Promise.resolve({
|
||||
data: userCollection.data.map((user: User) =>
|
||||
this._mapper.map(user, User, UserPresenter),
|
||||
),
|
||||
total: userCollection.total,
|
||||
});
|
||||
}
|
||||
|
||||
@GrpcMethod('UsersService', 'FindOneByUuid')
|
||||
async findOneByUuid(data: FindUserByUuidRequest): Promise<UserPresenter> {
|
||||
const user = await this._queryBus.execute(
|
||||
|
||||
11
src/modules/users/domain/dto/find-all-users.request.ts
Normal file
11
src/modules/users/domain/dto/find-all-users.request.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { IsInt, IsOptional } from 'class-validator';
|
||||
|
||||
export class FindAllUsersRequest {
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
page?: number;
|
||||
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
perPage?: number;
|
||||
}
|
||||
19
src/modules/users/domain/usecases/find-all-users.usecase.ts
Normal file
19
src/modules/users/domain/usecases/find-all-users.usecase.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { QueryHandler } from '@nestjs/cqrs';
|
||||
import { ICollection } from 'src/modules/database/src/interfaces/collection.interface';
|
||||
import { UsersRepository } from '../../adapters/secondaries/users.repository';
|
||||
import { FindAllUsersQuery } from '../../queries/find-all-users.query';
|
||||
import { User } from '../entities/user';
|
||||
|
||||
@QueryHandler(FindAllUsersQuery)
|
||||
export class FindAllUsersUseCase {
|
||||
constructor(private readonly _usersRepository: UsersRepository) {}
|
||||
|
||||
async execute(
|
||||
findAllUsersQuery: FindAllUsersQuery,
|
||||
): Promise<ICollection<User>> {
|
||||
return this._usersRepository.findAll(
|
||||
findAllUsersQuery.page,
|
||||
findAllUsersQuery.perPage,
|
||||
);
|
||||
}
|
||||
}
|
||||
11
src/modules/users/queries/find-all-users.query.ts
Normal file
11
src/modules/users/queries/find-all-users.query.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { FindAllUsersRequest } from '../domain/dto/find-all-users.request';
|
||||
|
||||
export class FindAllUsersQuery {
|
||||
page: number;
|
||||
perPage: number;
|
||||
|
||||
constructor(findAllUsersRequest?: FindAllUsersRequest) {
|
||||
this.page = findAllUsersRequest?.page ?? 1;
|
||||
this.perPage = findAllUsersRequest?.perPage ?? 10;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import { UsersController } from './adapters/primaries/users.controller';
|
||||
import { UsersRepository } from './adapters/secondaries/users.repository';
|
||||
import { CreateUserUseCase } from './domain/usecases/create-user.usecase';
|
||||
import { DeleteUserUseCase } from './domain/usecases/delete-user.usecase';
|
||||
import { FindAllUsersUseCase } from './domain/usecases/find-all-users.usecase';
|
||||
import { FindUserByUuidUseCase } from './domain/usecases/find-user-by-uuid.usecase';
|
||||
import { UpdateUserUseCase } from './domain/usecases/update-user.usecase';
|
||||
import { UserProfile } from './mappers/user.profile';
|
||||
@@ -15,6 +16,7 @@ import { UserProfile } from './mappers/user.profile';
|
||||
providers: [
|
||||
UserProfile,
|
||||
UsersRepository,
|
||||
FindAllUsersUseCase,
|
||||
FindUserByUuidUseCase,
|
||||
CreateUserUseCase,
|
||||
UpdateUserUseCase,
|
||||
|
||||
Reference in New Issue
Block a user