Don't save directus_revisions row for empty delta (#12839)

Fixes #12838
This commit is contained in:
Rijk van Zanten
2022-04-18 18:54:19 -04:00
committed by GitHub
parent 7dd8e8a6a9
commit 986bd51759
2 changed files with 7 additions and 3 deletions

View File

@@ -462,7 +462,7 @@ export class ItemsService<Item extends AnyItem = AnyItem> implements AbstractSer
schema: this.schema,
});
const revisionIDs = await revisionsService.createMany(
const revisions = (
await Promise.all(
activity.map(async (activity, index) => ({
activity: activity,
@@ -473,7 +473,9 @@ export class ItemsService<Item extends AnyItem = AnyItem> implements AbstractSer
delta: await payloadService.prepareDelta(payloadWithTypeCasting),
}))
)
);
).filter((revision) => revision.delta);
const revisionIDs = await revisionsService.createMany(revisions);
for (let i = 0; i < revisionIDs.length; i++) {
const revisionID = revisionIDs[i];

View File

@@ -713,7 +713,7 @@ export class PayloadService {
* Transforms the input partial payload to match the output structure, to have consistency
* between delta and data
*/
async prepareDelta(data: Partial<Item>): Promise<string> {
async prepareDelta(data: Partial<Item>): Promise<string | null> {
let payload = cloneDeep(data);
for (const key in payload) {
@@ -724,6 +724,8 @@ export class PayloadService {
payload = await this.processValues('read', payload);
if (Object.keys(payload).length === 0) return null;
return JSON.stringify(payload);
}
}