Skip to content

Instantly share code, notes, and snippets.

@b4n92uid
Last active August 17, 2021 22:49
Show Gist options
  • Save b4n92uid/00ba81ba0dd123af50992d3cbd250f6a to your computer and use it in GitHub Desktop.
Save b4n92uid/00ba81ba0dd123af50992d3cbd250f6a to your computer and use it in GitHub Desktop.
[Apollo] propertyAccess
function propertyAccess(object, key) {
if (isFunction(object[key])) return object[key]();
if (object[key] instanceof Date) return object[key].toISOString();
if (key in object) return object[key];
const conn = getConnection();
if (conn.hasMetadata(object.constructor.name)) {
const rel = conn
.getMetadata(object.constructor.name)
.findRelationWithPropertyPath(key);
if (rel) {
if (rel.isManyToOne || rel.isOneToOne) {
return conn
.createQueryBuilder()
.relation(object.constructor.name, key)
.of(object)
.loadOne();
} else {
return conn
.createQueryBuilder()
.relation(object.constructor.name, key)
.of(object)
.loadMany();
}
}
}
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment