Skip to content

Commit 28200c6

Browse files
committed
dynamic importing firestore migrations, in order to speed up functions loading
1 parent f439aaa commit 28200c6

File tree

1 file changed

+18
-51
lines changed

1 file changed

+18
-51
lines changed

cloud/functions/src/functions/http/migrateFirestoreSchema.ts

Lines changed: 18 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,34 @@
11
import {extractSingleQueryParam, sendResponseMessage} from "./utils";
22
import {db} from "../../firebase";
33
import {ISODatetime} from "../../../../../shared/type-utils";
4-
import {
5-
createExistingUsersTokensWallet
6-
} from "../firestore/migrations/000-createExistingUsersTokensWallet";
7-
import {createExistingUsersInfos} from "../firestore/migrations/001-createExistingUsersInfos";
8-
import {addUserIdInTokenWallet} from "../firestore/migrations/002-addUserIdInTokenWallet";
9-
import {
10-
gettingRidOfUserPreferencesPastEvents
11-
} from "../firestore/migrations/003-gettingRidOfUserPreferencesPastEvents";
12-
import {createOrganizerSpaceRatings} from "../firestore/migrations/006-createOrganizerSpaceRatings";
13-
import {
14-
cleanComputedTalkFavoritesCollectionsDeletion,
15-
deleteComputedTalkFavoritesCollections
16-
} from "../firestore/migrations/007-deleteComputedTalkFavoritesCollection";
17-
import {
18-
introducingPerTalkFeedbacksLastUpdates,
19-
} from "../firestore/migrations/008-introducingPerTalkFeedbacksLastUpdates";
20-
import {
21-
refactoOrgaSpaceRatingsToPerTalkRatings
22-
} from "../firestore/migrations/009-refactoOrgaSpaceRatingsToPerTalkRatings";
23-
import {
24-
introduceTalksStats_allInOneDocument
25-
} from "../firestore/migrations/010-introduceTalksStats-allInOneDocument";
26-
import {
27-
introduceOrganizerSpaceDailyRatings
28-
} from "../firestore/migrations/011-introduceOrganizerSpaceDailyRatings";
29-
import {resetFavoritesLastUpdates} from "../firestore/migrations/012-resetFavoritesLastUpdates";
30-
import {introduceRoomsStats} from "../firestore/migrations/013-introduceRoomsStats";
31-
import {
32-
introduceGlobalInfosAndSlowPacedTalkStats
33-
} from "../firestore/migrations/014-introduceGlobalInfosAndSlowPacedTalkStats";
34-
import {introduceCrawlerFamilyAndEventName} from "../firestore/migrations/015-introduceCrawlerFamilyAndEventName";
35-
import {considerCrawlingKeysAsLegacy} from "../firestore/migrations/016-considerCrawlingKeysAsLegacy";
364
import * as functions from "firebase-functions";
375
import * as express from "express";
38-
import {migrateFamilyEventsStatsAccessTokenTypes} from "../firestore/migrations/017-migrateSomePublicTokenTypes";
396

407
/**
418
* Like Flyway, but for firestore :-)
429
*/
4310
const MIGRATIONS: Migration[] = [
44-
{ name: "createExistingUsersTokensWallet", exec: createExistingUsersTokensWallet },
45-
{ name: "createExistingUsersInfos", exec: createExistingUsersInfos },
46-
{ name: "addUserIdInTokenWallet", exec: addUserIdInTokenWallet },
47-
{ name: "gettingRidOfUserPreferencesPastEvents", exec: gettingRidOfUserPreferencesPastEvents },
48-
{ name: "createOrganizerSpaceRatings", exec: createOrganizerSpaceRatings },
11+
{ name: "createExistingUsersTokensWallet", exec: async () => (await import("../firestore/migrations/000-createExistingUsersTokensWallet")).createExistingUsersTokensWallet() },
12+
{ name: "createExistingUsersInfos", exec: async () => (await import("../firestore/migrations/001-createExistingUsersInfos")).createExistingUsersInfos() },
13+
{ name: "addUserIdInTokenWallet", exec: async () => (await import("../firestore/migrations/002-addUserIdInTokenWallet")).addUserIdInTokenWallet() },
14+
{ name: "gettingRidOfUserPreferencesPastEvents", exec: async () => (await import("../firestore/migrations/003-gettingRidOfUserPreferencesPastEvents")).gettingRidOfUserPreferencesPastEvents() },
15+
{ name: "createOrganizerSpaceRatings", exec: async () => (await import("../firestore/migrations/006-createOrganizerSpaceRatings")).createOrganizerSpaceRatings() },
4916
// This migration can wait Devoxx BE '23 to be completed, as __computed collection might still be
5017
// used by people having an old version of the app in their service worker cache, so the longer we keep
5118
// the collection and the safer we will be
52-
{ name: "deleteComputedTalkFavoritesCollections", exec: deleteComputedTalkFavoritesCollections, minimumMigrationDate: "2023-10-09T00:00:00Z" },
53-
{ name: "introducingPerTalkFeedbacksLastUpdates", exec: introducingPerTalkFeedbacksLastUpdates },
54-
{ name: "refactoOrgaSpaceRatingsToPerTalkRatings", exec: refactoOrgaSpaceRatingsToPerTalkRatings },
55-
{ name: "introduceTalksStats_allInOneDocument", exec: introduceTalksStats_allInOneDocument },
56-
{ name: "introduceOrganizerSpaceDailyRatings", exec: introduceOrganizerSpaceDailyRatings },
57-
{ name: "introduceOrganizerSpaceDailyRatingsAgain", exec: introduceOrganizerSpaceDailyRatings },
58-
{ name: "cleanComputedTalkFavoritesCollectionsDeletion", exec: cleanComputedTalkFavoritesCollectionsDeletion },
59-
{ name: "resetFavoritesLastUpdates", exec: resetFavoritesLastUpdates },
60-
{ name: "introduceRoomsStats", exec: introduceRoomsStats },
61-
{ name: "introduceGlobalInfosAndSlowPacedTalkStats", exec: introduceGlobalInfosAndSlowPacedTalkStats },
62-
{ name: "introduceCrawlerFamilyAndEventName", exec: introduceCrawlerFamilyAndEventName },
63-
{ name: "considerCrawlingKeysAsLegacy", exec: considerCrawlingKeysAsLegacy },
64-
{ name: "migrateFamilyEventsStatsAccessTokenTypes", exec: migrateFamilyEventsStatsAccessTokenTypes },
19+
{ name: "deleteComputedTalkFavoritesCollections", exec: async () => (await import("../firestore/migrations/007-deleteComputedTalkFavoritesCollection")).deleteComputedTalkFavoritesCollections(), minimumMigrationDate: "2023-10-09T00:00:00Z" },
20+
{ name: "introducingPerTalkFeedbacksLastUpdates", exec: async () => (await import("../firestore/migrations/008-introducingPerTalkFeedbacksLastUpdates")).introducingPerTalkFeedbacksLastUpdates() },
21+
{ name: "refactoOrgaSpaceRatingsToPerTalkRatings", exec: async () => (await import("../firestore/migrations/009-refactoOrgaSpaceRatingsToPerTalkRatings")).refactoOrgaSpaceRatingsToPerTalkRatings() },
22+
{ name: "introduceTalksStats_allInOneDocument", exec: async () => (await import("../firestore/migrations/010-introduceTalksStats-allInOneDocument")).introduceTalksStats_allInOneDocument() },
23+
{ name: "introduceOrganizerSpaceDailyRatings", exec: async () => (await import("../firestore/migrations/011-introduceOrganizerSpaceDailyRatings")).introduceOrganizerSpaceDailyRatings() },
24+
{ name: "introduceOrganizerSpaceDailyRatingsAgain", exec: async () => (await import("../firestore/migrations/011-introduceOrganizerSpaceDailyRatings")).introduceOrganizerSpaceDailyRatings() },
25+
{ name: "cleanComputedTalkFavoritesCollectionsDeletion", exec: async () => (await import("../firestore/migrations/007-deleteComputedTalkFavoritesCollection")).cleanComputedTalkFavoritesCollectionsDeletion() },
26+
{ name: "resetFavoritesLastUpdates", exec: async () => (await import("../firestore/migrations/012-resetFavoritesLastUpdates")).resetFavoritesLastUpdates() },
27+
{ name: "introduceRoomsStats", exec: async () => (await import("../firestore/migrations/013-introduceRoomsStats")).introduceRoomsStats() },
28+
{ name: "introduceGlobalInfosAndSlowPacedTalkStats", exec: async () => (await import("../firestore/migrations/014-introduceGlobalInfosAndSlowPacedTalkStats")).introduceGlobalInfosAndSlowPacedTalkStats() },
29+
{ name: "introduceCrawlerFamilyAndEventName", exec: async () => (await import("../firestore/migrations/015-introduceCrawlerFamilyAndEventName")).introduceCrawlerFamilyAndEventName() },
30+
{ name: "considerCrawlingKeysAsLegacy", exec: async () => (await import("../firestore/migrations/016-considerCrawlingKeysAsLegacy")).considerCrawlingKeysAsLegacy() },
31+
{ name: "migrateFamilyEventsStatsAccessTokenTypes", exec: async () => (await import("../firestore/migrations/017-migrateSomePublicTokenTypes")).migrateFamilyEventsStatsAccessTokenTypes() },
6532
];
6633

6734
export type MigrationResult = "OK"|"Error";

0 commit comments

Comments
 (0)