23 lines
673 B
JavaScript
23 lines
673 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { computed } from '@ember/object';
|
|
import ObjectProxy from '@ember/object/proxy';
|
|
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
|
|
import { resolve } from 'rsvp';
|
|
|
|
export function maybeQueryRecord(modelName, options = {}, ...keys) {
|
|
return computed(...keys, 'store', {
|
|
get() {
|
|
const query = typeof options === 'function' ? options(this) : options;
|
|
const PromiseObject = ObjectProxy.extend(PromiseProxyMixin);
|
|
|
|
return PromiseObject.create({
|
|
promise: query ? this.store.queryRecord(modelName, query) : resolve({}),
|
|
});
|
|
},
|
|
});
|
|
}
|