graphile-settings
Version:
graphile settings
61 lines (60 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isTableResource = isTableResource;
exports.getSchemaName = getSchemaName;
exports.getUniques = getUniques;
exports.getRelations = getRelations;
exports.getRelation = getRelation;
exports.sameAttributes = sameAttributes;
exports.getConfiguredSchemas = getConfiguredSchemas;
exports.getResourceCodec = getResourceCodec;
function isRecord(value) {
return typeof value === 'object' && value !== null;
}
function isTableResource(resource) {
return (!!resource.codec &&
!resource.codec.isAnonymous &&
isRecord(resource.codec.attributes) &&
!resource.parameters &&
!resource.isVirtual &&
!resource.isUnique);
}
function getSchemaName(resource) {
const schemaName = resource.codec?.extensions?.pg?.schemaName;
if (typeof schemaName !== 'string' || schemaName.length === 0)
return null;
return schemaName;
}
function getUniques(resource) {
return Array.isArray(resource.uniques) ? resource.uniques : [];
}
function getRelations(resource) {
return resource.relations || resource.getRelations?.() || {};
}
function getRelation(resource, relationName) {
if (!relationName)
return null;
if (typeof resource.getRelation === 'function') {
return resource.getRelation(relationName) || null;
}
const relations = getRelations(resource);
return relations[relationName] || null;
}
function sameAttributes(uniqueAttributes, relationAttributes) {
if (!uniqueAttributes || !relationAttributes)
return false;
return (uniqueAttributes.length === relationAttributes.length &&
uniqueAttributes.every((attrName) => relationAttributes.includes(attrName)));
}
function getConfiguredSchemas(build) {
const pgSchemas = build.options?.pgSchemas;
if (!Array.isArray(pgSchemas))
return [];
return pgSchemas.filter((schemaName) => typeof schemaName === 'string');
}
function getResourceCodec(resource) {
const codec = resource.codec;
if (!codec?.attributes)
return null;
return codec;
}