SimpleEntity.js 856 B

123456789101112131415161718192021222324
  1. const { Context } = require("../util/context");
  2. module.exports = function SimpleEntity ({ name, methods, fetchers }) {
  3. const create = function (values) {
  4. const entity = { values };
  5. Object.assign(entity, methods);
  6. for ( const fetcher_name in fetchers ) {
  7. entity['fetch_' + fetcher_name] = async function () {
  8. if ( this.values.hasOwnProperty(fetcher_name) ) {
  9. return this.values[fetcher_name];
  10. }
  11. const value = await fetchers[fetcher_name].call(this);
  12. this.values[fetcher_name] = value;
  13. return value;
  14. }
  15. }
  16. entity.context = values.context ?? Context.get();
  17. entity.services = entity.context.get('services');
  18. return entity;
  19. };
  20. create.name = name;
  21. return create;
  22. };