flatbread icon indicating copy to clipboard operation
flatbread copied to clipboard

Support dynamic identifier field names/paths for content entries

Open tonyketcham opened this issue 3 years ago • 3 comments
trafficstars

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.

tonyketcham avatar Nov 27 '21 05:11 tonyketcham

Maybe we could optionally specify a primary key on the content block in the config?

odama626 avatar Aug 03 '22 05:08 odama626

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',
  },
},

tonyketcham avatar Aug 03 '22 09:08 tonyketcham

Actually yeah I think I like primaryKey the most since it's ubiquitous in relational data

tonyketcham avatar Aug 03 '22 09:08 tonyketcham