Code Monkey home page Code Monkey logo

Comments (6)

Diluka avatar Diluka commented on May 14, 2024 1

I mean until #16 merged, I need to use getManyAndCount instead of getMany. But even if #16 has been merged, I still need format result like

{
    "list": [
        {
            "id": 1,
            "username": "player1"
        }
    ],
    "total": 1,
    "pages": 1,
    "size": 1,
    "pageNum": 1,
    "pageSize": 2,
    "startRow": 0,
    "endRow": 0
}

Now I am doing this.

export class PageInfo<T> {

  pageNum: number;
  pageSize: number;
  size: number;

  startRow: number;
  endRow: number;

  total: number;
  pages: number;

  list: T[];

  constructor(page: [T[], number], query: RequestParamsParsed) {
    const [list, total] = page;

    this.list = list;
    this.total = total;
    this.pages = Math.floor((total - 1) / query.limit) + 1;
    this.size = list.length;

    const offset = query.offset || (query.page - 1) * query.limit;

    this.pageNum = query.page;
    this.pageSize = query.limit;
    this.startRow = offset;
    this.endRow = offset + this.size - 1;
  }
}

RepositoryService.prototype.getMany = async function(query: RequestParamsParsed = {}, options: RestfulOptions = {}) {
  const builder = await this.buildQuery(query, options);
  if (query.page && query.limit) {
    const page = await builder.getManyAndCount();
    return new PageInfo(page, query);
  }
  return builder.getMany();
};

so I am finding a common way to override all the getMany method in controllers. that's why I need a base controller

from crud.

michaelyali avatar michaelyali commented on May 14, 2024

The point of creating @Crud() decorator was to provide a possibility to have CRUD actions without any inheritance. So why do you create a base controller?

from crud.

Diluka avatar Diluka commented on May 14, 2024

since the lib doesn't support paging right now.
first, I try to override controller method to support it. I found every controller has the same code. then I try to use base controller, but failed.
after that, I try to override RepositoryService import from the lib (this is hack). then I found I created controllers all with a blank. I try to use forFeature but failed again #22 .

so why I need create controller with @Crud? all the crud requests shall be handled with GenericCrudController inside the lib.

If someone need override method, setup a route handle before the GenericCrudController and GenericCrudController skip the handled request. What do you think of this?

from crud.

michaelyali avatar michaelyali commented on May 14, 2024

By saying that the lib doesn't support paging right now, what do you particular mean?

from crud.

michaelyali avatar michaelyali commented on May 14, 2024

ok, I got your point. So as I said here I'll do this improvement in the near future.

from crud.

Diluka avatar Diluka commented on May 14, 2024

I will look forward to it.

from crud.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.