인프런 커뮤니티 질문&답변

ldsik03님의 프로필 이미지
ldsik03

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

존재하지않는 데이터 캐시에 입력하기

Pagination 에 parameter를 after, count 에 덧붙여 다른것을 추가 할수 있을까요?

작성

·

394

0

안녕하세요.

pagination 을 응용하면서 추가적인 조건이 생겨 parameter를 추가하고 싶습니다.

예를 들어 restaurant 화면에서 별점이 4점 이상인것만 가져오고 싶을때 하기 함수에다 추가해야 될것 같은데 잘 않되고 있습니다.

감사합니다.

@GET('/')
@Headers({'accessToken': 'true'})
Future<CursorPagination<RestaurantModel>> paginate({
  @Queries() PaginationParams? paginationParams = const PaginationParams(),
});

답변 2

0

저도 같은 작업하고 있습니다 :)

선생님, PaginationParam을 상속을 받으면 IBasePaginationRepository도 일반화를 시켜야하나요?
혹시 가능하면 조금 자세히 설명부탁 드려도 될까요?

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

@JsonSerializable()
class TestPaginationParams extends PaginationParams {
  final String some;
  final String more;
  final String value;

  TestPaginationParams({
    required this.some,
    required this.more,
    required this.value,
  });

  Map<String, dynamic> toJson() => _$TestPaginationParamsToJson(this);

  factory TestPaginationParams.fromJson(Map<String, dynamic> json) => _$TestPaginationParamsFromJson(json);
}

@RestApi()
abstract class RestaurantRatingRepository implements IPaginationRepository<RatingModel, TestPaginationParams> {
  factory RestaurantRatingRepository(Dio dio, {String baseUrl}) = _RestaurantRatingRepository;

  @GET("/")
  @Headers({
    'accessToken': 'true',
  })
  // Future<CursorPagination<RatingModel>> paginate({
  //   @Queries() PaginationParams? paginationParams,
  // });
  Future<CursorPagination<RatingModel>> paginate({
    @Queries() TestPaginationParams? paginationParams,
  });

  @POST("/")
  @Headers({
    'accessToken': 'true',
  })
  Future<RatingModel> postRating({
    @Body() required CreateRestaurantRatingBodyDto body,
  });
}

abstract class IPaginationRepository<T, U extends PaginationParams> {
  Future<CursorPagination<T>> paginate({
    U? paginationParams,
  });
}

이런 느낌은 어떠신가요?

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

해당 부분은 프론트에서 뿐만 아니라 서버에서도 코드가 변경돼야합니다!

Query Parameter를 인지해서 특정 기능을 실행하게 만들어야해서 서버에 코드를 추가해야하는 사항입니다.

저희 카카오 채널로 오셔서 원격 요청 주시면 제가 변경 도와드리도록 하겠습니다.

https://links.codefactory.ai

감사합니다!

ldsik03님의 프로필 이미지
ldsik03
질문자

서버도 선생님이 제공해준 nest.js 프로그램을 응용해서 Mysql에 연결해 놓았습니다.

프론트엔드에서만 PaginationDto에 추가 파라미터만 태우면 될것 같은데 아이디어나 방향만 알려주시면 최대한 노력해 보겠습니다.

하기 소스코드는 전체 데이터 가져오는것은 잘되고 있습니다. 조건을 주고 싶어서 질문을 남깁니다.

감사합니다.

@UseGuards(AccessTokenGuard) @Get('/requestPage')

paginateRequests( @Query() paginationDto: PaginationDto ): Promise<Pagination<RequestPage>> {

return this.requestService.paginateRequests( paginationDto);

}

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

아하~! PaginationParam을 상속받아서 원하시는 파라미터들을 추가하는 방법은 어떠신가요?

ldsik03님의 프로필 이미지
ldsik03

작성한 질문수

질문하기