mdehoog / ember-data-has-many-query

Adds query support to Ember Data has-many and belongs-to relationships
MIT License
82 stars 41 forks source link

Mirage support #2

Closed bttf closed 8 years ago

bttf commented 8 years ago

Tried using the ModelMixin in a Mirage factory like so:

import Mirage from 'ember-cli-mirage';
import HasManyQuery from 'ember-data-has-many-query';

export default Mirage.Factory.extend(HasManyQuery.ModelMixin, {
  first_name() { return faker.name.firstName(); },
  last_name() { return faker.name.lastName(); },
  email() { return faker.internet.email(); },
});

Did not work to provide the query method we are using in our route:

export default Ember.Route.extend({
  model(params) {
    const page = params.page;
    const limit = params.limit;
    const query = params.query;
    const userModel = this.modelFor('users.user');

    return Ember.RSVP.hash({
      user: userModel,
      requests: userModel.query('requests', { page: page, limit: limit, query: query }),
    });
  },

Ideally, userModel.query should make a request to /users/:user_id/requests but it is not making that request under Mirage generated models.

mdehoog commented 8 years ago

The ModelMixin is only designed for use with Ember Data models, and doesn't support Mirage factories.

mupkoo commented 8 years ago

@bttf you should do this in your route handler.

this.get('/users', function (db, request) {
    let users = db.users;

    if (request.queryParams.page) {
        let offset = 10 * page;
        users = users.slice(offset, offset + 10);
    }

    return users;
});

Of course this is just an example. You need to implement the logic yourself.

npendery commented 5 years ago

@mdehoog is there any plan for Mirage support? Have you tried? If so, what are the blockers? Would be happy to help with this if there isnt a serious blocker that you stumbled upon