1- /**
2- * Run the following script OR use the following MongoDB command:
3- * db.pages.updateMany({}, { $unset: { "layout.$[].settings.horizontalPadding": "", "layout.$[].settings.verticalPadding": "", "draftLayout.$[].settings.horizontalPadding": "", "draftLayout.$[].settings.verticalPadding": "" } })
4- */
51import mongoose from "mongoose" ;
62import { nanoid } from "nanoid" ;
73
@@ -74,22 +70,50 @@ PageSchema.index(
7470
7571const Page = mongoose . model ( "Page" , PageSchema ) ;
7672
77- const unsetPaddings = async ( page ) => {
78- console . log ( `Unsetting paddings for domain: ${ page . domain } ` ) ;
73+ const DomainSchema = new mongoose . Schema (
74+ {
75+ name : { type : String , required : true , unique : true } ,
76+ sharedWidgets : {
77+ type : mongoose . Schema . Types . Mixed ,
78+ default : { } ,
79+ } ,
80+ draftSharedWidgets : {
81+ type : mongoose . Schema . Types . Mixed ,
82+ default : { } ,
83+ } ,
84+ } ,
85+ {
86+ timestamps : true ,
87+ } ,
88+ ) ;
89+ const Domain = mongoose . model ( "Domain" , DomainSchema ) ;
90+
91+ const unsetPaddingsOnPage = async ( page , domain ) => {
92+ console . log ( `Migrating ${ page . pageId } of ${ page . domain } ` ) ;
7993
80- // Update layout widgets
8194 if ( page . layout && page . layout . length > 0 ) {
8295 page . layout . forEach ( ( widget ) => {
96+ if ( widget . name === "newsletter-signup" ) {
97+ widget . shared = false ;
98+ widget . settings =
99+ domain . sharedWidgets [ "newsletter-signup" ] ?. settings ;
100+ }
101+
83102 if ( widget . settings ) {
84103 delete widget . settings . horizontalPadding ;
85104 delete widget . settings . verticalPadding ;
86105 }
87106 } ) ;
88107 }
89108
90- // Update draftLayout widgets
91109 if ( page . draftLayout && page . draftLayout . length > 0 ) {
92110 page . draftLayout . forEach ( ( widget ) => {
111+ if ( widget . name === "newsletter-signup" ) {
112+ widget . shared = false ;
113+ widget . settings =
114+ domain . draftSharedWidgets [ "newsletter-signup" ] ?. settings ;
115+ }
116+
93117 if ( widget . settings ) {
94118 delete widget . settings . horizontalPadding ;
95119 delete widget . settings . verticalPadding ;
@@ -100,22 +124,95 @@ const unsetPaddings = async (page) => {
100124 page . markModified ( "layout" ) ;
101125 page . markModified ( "draftLayout" ) ;
102126 await page . save ( ) ;
103- console . log ( `Updated paddings for domain: ${ page . domain } \n` ) ;
127+ console . log ( `Migrated ${ page . pageId } of ${ page . domain } \n` ) ;
104128} ;
105129
106- const migratePaddings = async ( ) => {
130+ const migratePages = async ( ) => {
107131 const pages = await Page . find ( { } ) ;
108132 for ( const page of pages ) {
109133 try {
110- await unsetPaddings ( page ) ;
134+ const domain = await Domain . findOne ( { _id : page . domain } ) ;
135+ await unsetPaddingsOnPage ( page , domain ) ;
136+ } catch ( error ) {
137+ console . error ( `Error migrating ${ page . pageId } of ${ page . domain } ` ) ;
138+ console . error ( error ) ;
139+ }
140+ }
141+ } ;
142+
143+ const unsetPaddingOnSharedWidgets = async ( domain ) => {
144+ console . log ( `Migrating shared widgets for domain: ${ domain . name } ` ) ;
145+ if ( Object . keys ( domain . sharedWidgets ) . length > 0 ) {
146+ for ( const widget of Object . values ( domain . sharedWidgets ) ) {
147+ if ( widget . settings ) {
148+ delete widget . settings . horizontalPadding ;
149+ delete widget . settings . verticalPadding ;
150+ }
151+ }
152+ }
153+
154+ if (
155+ domain . draftSharedWidgets &&
156+ Object . keys ( domain . draftSharedWidgets ) . length > 0
157+ ) {
158+ for ( const widget of Object . values ( domain . draftSharedWidgets ) ) {
159+ if ( widget . settings ) {
160+ delete widget . settings . horizontalPadding ;
161+ delete widget . settings . verticalPadding ;
162+ }
163+ }
164+ }
165+
166+ domain . markModified ( "sharedWidgets" ) ;
167+ domain . markModified ( "draftSharedWidgets" ) ;
168+ await domain . save ( ) ;
169+ console . log ( `Migrated shared widgets for domain: ${ domain . name } \n` ) ;
170+ } ;
171+
172+ const removeNewsLetterSignupFromSharedWidgets = async ( domain ) => {
173+ console . log (
174+ `Migrating news letter signup from shared widgets for domain: ${ domain . name } ` ,
175+ ) ;
176+ if ( domain . sharedWidgets && Object . keys ( domain . sharedWidgets ) . length > 0 ) {
177+ for ( const widget of Object . values ( domain . sharedWidgets ) ) {
178+ if ( widget . name === "newsletter-signup" ) {
179+ delete domain . sharedWidgets [ widget . name ] ;
180+ }
181+ }
182+ }
183+ if (
184+ domain . draftSharedWidgets &&
185+ Object . keys ( domain . draftSharedWidgets ) . length > 0
186+ ) {
187+ for ( const widget of Object . values ( domain . draftSharedWidgets ) ) {
188+ if ( widget . name === "newsletter-signup" ) {
189+ delete domain . draftSharedWidgets [ widget . name ] ;
190+ }
191+ }
192+ }
193+ domain . markModified ( "sharedWidgets" ) ;
194+ domain . markModified ( "draftSharedWidgets" ) ;
195+ await domain . save ( ) ;
196+ console . log ( `Migrated news letter signup for domain: ${ domain . name } \n` ) ;
197+ } ;
198+
199+ const migrateSharedWidgets = async ( ) => {
200+ const domains = await Domain . find ( { } ) ;
201+ for ( const domain of domains ) {
202+ try {
203+ await unsetPaddingOnSharedWidgets ( domain ) ;
204+ await removeNewsLetterSignupFromSharedWidgets ( domain ) ;
111205 } catch ( error ) {
112- console . error ( `Error updating paddings for domain: ${ page . domain } ` ) ;
206+ console . error (
207+ `Error updating shared widgets for domain: ${ domain . name } ` ,
208+ ) ;
113209 console . error ( error ) ;
114210 }
115211 }
116212} ;
117213
118214( async ( ) => {
119- await migratePaddings ( ) ;
215+ await migratePages ( ) ;
216+ await migrateSharedWidgets ( ) ;
120217 mongoose . connection . close ( ) ;
121218} ) ( ) ;
0 commit comments