2023-04-27 23:18:48 +02:00
|
|
|
import { assign, assoc } from 'lodash/fp';
|
|
|
|
import * as contentTypes from './content-types';
|
|
|
|
|
|
|
|
const { CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = contentTypes.constants;
|
|
|
|
|
2023-06-06 10:58:36 +02:00
|
|
|
export interface Options {
|
2023-04-27 23:18:48 +02:00
|
|
|
user: User;
|
|
|
|
isEdition?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface User {
|
|
|
|
id: string | number;
|
|
|
|
}
|
|
|
|
|
2023-06-23 10:04:03 +02:00
|
|
|
export default <T extends object>({ user, isEdition = false }: Options) =>
|
|
|
|
(data: T) => {
|
2023-04-27 23:18:48 +02:00
|
|
|
if (isEdition) {
|
|
|
|
return assoc(UPDATED_BY_ATTRIBUTE, user.id, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
return assign(data, {
|
|
|
|
[CREATED_BY_ATTRIBUTE]: user.id,
|
|
|
|
[UPDATED_BY_ATTRIBUTE]: user.id,
|
|
|
|
});
|
|
|
|
};
|