Summary
pipefy_table_field is managed but not readable. Table field ids are input to connection field mappings, so a config that maps into a table it does not manage has no way to resolve them.
Part of #89.
What the API allows
resource_table_field.go:170 reads through the table:
query GetTableFields_tf($tableId:ID!){ table(id:$tableId){ table_fields{ ... } } }
No singular table field query, so the shape is a list keyed on table_id.
Proposed
pipefy_table_fields, taking table_id and returning the fields with tablefieldgql.Selection: id, internal_id, uuid, label, type, required, options, description, help, minimal_view, custom_validation, unique.
Note the difference from phase fields: tablefieldgql.Selection has unique and no index or editable, while fieldgql.Selection has index and editable and no unique. Do not copy the phase field data source and assume the attribute set is the same.
Notes
resource_table_field.go is one of the three callers of locks.LockRepo, because the API cannot take concurrent table field mutations. Reads are unaffected, so the data source does not need the lock, but #88 has to keep that distinction when the locking decision is made.
Follow #88 for how this talks to the API.
Summary
pipefy_table_fieldis managed but not readable. Table field ids are input to connection field mappings, so a config that maps into a table it does not manage has no way to resolve them.Part of #89.
What the API allows
resource_table_field.go:170reads through the table:No singular table field query, so the shape is a list keyed on
table_id.Proposed
pipefy_table_fields, takingtable_idand returning the fields withtablefieldgql.Selection:id,internal_id,uuid,label,type,required,options,description,help,minimal_view,custom_validation,unique.Note the difference from phase fields:
tablefieldgql.Selectionhasuniqueand noindexoreditable, whilefieldgql.Selectionhasindexandeditableand nounique. Do not copy the phase field data source and assume the attribute set is the same.Notes
resource_table_field.gois one of the three callers oflocks.LockRepo, because the API cannot take concurrent table field mutations. Reads are unaffected, so the data source does not need the lock, but #88 has to keep that distinction when the locking decision is made.Follow #88 for how this talks to the API.