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