neo4j-graphql-js icon indicating copy to clipboard operation
neo4j-graphql-js copied to clipboard

Auto-populate/update a "created" and "updated" fields on objects

Open paolomemoli opened this issue 6 years ago • 3 comments

adding a entity level directive eg @tracked to add and correctly update a created and updated timestamp fields.

paolomemoli avatar Apr 18 '19 11:04 paolomemoli

@memolipd In the meantime until directives are supported, I found a workaround using a custom middleware

const appendCreatedAt = (r,  p,  a,  c,  i,) => {
  const formatted = new Date().toISOString();
  a.createdAt = { formatted };
  return r(p, a, c, i);
};

const appendUpdatedAt = (r,  p,  a,  c,  i,) => {
  const formatted = new Date().toISOString();
  a.updatedAt = { formatted };
  return r(p, a, c, i);
};

export const autoCreatedAt = {
  Query: {},
  Mutation: {
   // Mapping of resolvers to append argument to
    CreatePerson: appendCreatedAt,
  },
};

export const autoUpdatedAt = {
  Query: {},
  Mutation: {
   // Mapping of resolvers to append argument to
    UpdatePerson: appendUpdatedAt,
  },
};

And applying middlewares to schema

import { applyMiddleware } from 'graphql-middleware';
import { autoCreatedAt, autoUpdatedAt } from './middlewares/date';
const schema = makeAugmentedSchema({
  typeDefs,
  resolvers
});
applyMiddleware(
   schema,
   autoCreatedAt,
   autoUpdatedAt
)

Unfortunately this is far removed from type definitions and all of the auto generated mutations have to be mapped to manually so hopefully @defaultValue support comes soon. #120

rphansen91 avatar Jul 26 '19 14:07 rphansen91

@johnymontana any updates on this?

hsavit1 avatar Dec 07 '20 04:12 hsavit1

https://github.com/neo4j-graphql/neo4j-graphql-js/issues/608

michaeldgraham avatar May 02 '21 04:05 michaeldgraham