From cae255efe9c174457ae66c94a41e941bf7b2165c Mon Sep 17 00:00:00 2001 From: Antonin Coquet <ext.sopra.acoquet@grandlyon.com> Date: Thu, 6 May 2021 11:05:40 +0200 Subject: [PATCH] feat: add migration for date format --- .../scripts/1620229047628-opening-hours.ts | 3 +- .../scripts/1620289895495-timestamp-format.ts | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/migrations/scripts/1620289895495-timestamp-format.ts diff --git a/src/migrations/scripts/1620229047628-opening-hours.ts b/src/migrations/scripts/1620229047628-opening-hours.ts index 16d11df31..69c65461e 100644 --- a/src/migrations/scripts/1620229047628-opening-hours.ts +++ b/src/migrations/scripts/1620229047628-opening-hours.ts @@ -30,8 +30,7 @@ function updateStructure(doc) { } function downgradeStructure(doc) { - doc = restoreHours(doc); - return doc; + return restoreHours(doc); } function updateHours(doc) { diff --git a/src/migrations/scripts/1620289895495-timestamp-format.ts b/src/migrations/scripts/1620289895495-timestamp-format.ts new file mode 100644 index 000000000..06e618d88 --- /dev/null +++ b/src/migrations/scripts/1620289895495-timestamp-format.ts @@ -0,0 +1,46 @@ +import { Db } from 'mongodb'; +import { getDb } from '../migrations-utils/db'; + +export const up = async () => { + const db: Db = await getDb(); + + const cursor = db.collection('structures').find({}); + let document; + while ((document = await cursor.next())) { + const newDoc = updateStructure(document); + await db.collection('structures').updateOne({ _id: document._id }, [{ $set: newDoc }]); + } + console.log(`Update done`); +}; + +export const down = async () => { + const db: Db = await getDb(); + + const cursor = db.collection('structures').find({}); + let document; + while ((document = await cursor.next())) { + const newDoc = downgradeStructure(document); + await db.collection('structures').updateOne({ _id: document._id }, [{ $set: newDoc }]); + } + console.log(`Update done`); +}; + +function updateStructure(doc) { + return updateHours(doc); +} + +function downgradeStructure(doc) { + return restoreHours(doc); +} + +function updateHours(doc) { + doc.createdAt = new Date(doc.createdAt).toISOString(); + doc.updatedAt = new Date(doc.updatedAt).toISOString(); + return doc; +} + +function restoreHours(doc) { + doc.createdAt = new Date(doc.createdAt).toString(); + doc.updatedAt = new Date(doc.updatedAt).toISOString(); + return doc; +} -- GitLab