toranb/ember-cli-simple-store

View on GitHub
addon/models/record-proxy.js

Summary

Maintainability
A
25 mins
Test Coverage
import ObjectProxy from '@ember/object/proxy';
import { computed } from '@ember/object';
import { getOwner } from '@ember/application';

export default ObjectProxy.extend({
    _source: null,
    _store: null,
    _type: null,

    content: computed("_source.[]", function() {
        return this.compute();
    }),

    init() {
        this._super(...arguments);
        const store = this.get('_store');
        const type = this.get('_type');

        let model = getOwner(store).lookup(`model:${type}`);

        for(let method in model) {
            if(typeof model[method] === "function") {
                if(!this[method]) {
                    this.proxyMethod(method);
                }
            }
        }
    },

    compute() { },

    proxyMethod(method) {
        this[method] = function() {
            let content = this.get("content");
            return content[method].apply(content, arguments);
        };
    }
});