ember-data-meta-links-improvements
Proof of Concept for RFC#160.
This addon is a Proof of Concept for
RFC#160 which aims to improve the
meta and links situation within Ember Data.
The goal is to see how the proposed API solves use cases when used in real
applications. The outcome of this addon should be a profound test suite which
covers all the use cases of the RFC.
:warning: The current implementation heavily relies on patches of Ember Data
internals, so it is definitely not encouraged to use in production, as
stability and decent performance can not be guaranteed. :warning:
Currently the following improvements are implemented:
Installation
ember install ember-data-meta-links-improvements
Code samples
Single record meta data
this.store.findRecord('book', 1).then(function(book) {
let bookRef = book.ref();
let meta = bookRef.meta();
meta === { recordLevel: true };
let topLevelMeta = bookRef.meta("response");
topLevelMeta === { topLevel: true };
});
Has-many links
this.store.findRecord('book', 1).then(function(book) {
let chaptersRef = book.hasMany("chapters");
let related = chaptersRef.links("related");
related.href() === "related-link";
let next = chaptersRef.links("self");
next.meta() === { selfLink: true };
next.load().then(function(nextArray) {
nextArray.ref().meta() === { isSelf: true }
});
});
store.query
let books = await this.store.query('book', { page: 2 }).then(function(books) {
let booksRef = books.ref();
let prev = booksRef.links("prev");
prev.href() === "/books?page=1";
let next = booksRef.links("next");
next.meta() === { isLast: true };
let meta = booksRef.meta();
meta === { total: 123 };
});
let next = await books.ref().links("next").load();
next.ref().meta() === { isLastPage: true }
store.findAll
let books = await this.store.findAll('book');
let booksRef = books.ref();
let self = booksRef.links("self");
self.href() === "self-link";
let meta = booksRef.meta();
meta === { total: 123 };
await this.store.findAll('book', { reload: true });
booksRef.meta() === { total: 456 };
Development
Installation
git clone
this repositorynpm install
bower install
Running
Running Tests
npm test
(Runs ember try:testall
to test your addon against multiple Ember versions)ember test
ember test --server
Building
For more information on using ember-cli, visit http://ember-cli.com/.