UNPKG

graphile-settings

Version:
51 lines (50 loc) 1.76 kB
function isRecord(value) { return typeof value === 'object' && value !== null; } export function isTableResource(resource) { return (!!resource.codec && !resource.codec.isAnonymous && isRecord(resource.codec.attributes) && !resource.parameters && !resource.isVirtual && !resource.isUnique); } export function getSchemaName(resource) { const schemaName = resource.codec?.extensions?.pg?.schemaName; if (typeof schemaName !== 'string' || schemaName.length === 0) return null; return schemaName; } export function getUniques(resource) { return Array.isArray(resource.uniques) ? resource.uniques : []; } export function getRelations(resource) { return resource.relations || resource.getRelations?.() || {}; } export 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; } export function sameAttributes(uniqueAttributes, relationAttributes) { if (!uniqueAttributes || !relationAttributes) return false; return (uniqueAttributes.length === relationAttributes.length && uniqueAttributes.every((attrName) => relationAttributes.includes(attrName))); } export function getConfiguredSchemas(build) { const pgSchemas = build.options?.pgSchemas; if (!Array.isArray(pgSchemas)) return []; return pgSchemas.filter((schemaName) => typeof schemaName === 'string'); } export function getResourceCodec(resource) { const codec = resource.codec; if (!codec?.attributes) return null; return codec; }