flatbread
flatbread copied to clipboard
Support dynamic identifier field names/paths for content entries
Currently, Flatbread expects there to be an id field in the root level of each entry type in order to enable relations and query by ID. Some people may have related data using a slug field to identify content entries, or even a nested field within each entry like meta: {id: 'EFJS-34UID'}.
In flatbread.config.js, the user should be able to define the path to their identifier field for each content type if it does not match the default behavior of Flatbread as stated above. Some sugar on top of that may be a root level config option to globally change the identifier name for all content entries, like if all entries are related by a slug or uuid field rather than id, for example.
Maybe we could optionally specify a primary key on the content block in the config?
Yeah that's what I was thinking:
// this one feels real good to me but is a bit SQL-biased in terminology
{
path: 'content/markdown/posts',
collection: 'Post',
primaryKey: 'meta.id',
refs: {
authors: 'Author',
},
},
// perhaps a bit more friendly sounding
{
path: 'content/markdown/posts',
collection: 'Post',
idField: 'meta.id',
refs: {
authors: 'Author',
},
},
// or
{
path: 'content/markdown/posts',
collection: 'Post',
identifier: 'meta.id',
refs: {
authors: 'Author',
},
},
Actually yeah I think I like primaryKey the most since it's ubiquitous in relational data