7
7
import lombok .extern .slf4j .Slf4j ;
8
8
import org .bson .Document ;
9
9
import org .lowcoder .domain .application .model .Application ;
10
+ import org .lowcoder .domain .bundle .model .Bundle ;
10
11
import org .lowcoder .domain .datasource .model .Datasource ;
11
12
import org .lowcoder .domain .datasource .model .DatasourceStructureDO ;
12
13
import org .lowcoder .domain .datasource .model .TokenBasedConnection ;
14
+ import org .lowcoder .domain .folder .model .Folder ;
13
15
import org .lowcoder .domain .group .model .Group ;
14
16
import org .lowcoder .domain .group .model .QGroup ;
15
17
import org .lowcoder .domain .material .model .MaterialMeta ;
16
18
import org .lowcoder .domain .organization .model .Organization ;
19
+ import org .lowcoder .domain .query .model .ApplicationQuery ;
17
20
import org .lowcoder .domain .query .model .LibraryQuery ;
18
21
import org .lowcoder .domain .query .model .LibraryQueryRecord ;
19
22
import org .lowcoder .domain .user .model .User ;
@@ -243,6 +246,31 @@ public void processDocument(Document document) {
243
246
});
244
247
}
245
248
249
+ @ ChangeSet (order = "024" , id = "add-gid-indexes-unique" , author = "" )
250
+ public void addGidIndexesUnique (MongockTemplate mongoTemplate ) {
251
+ // collections to add gid
252
+ String [] collectionNames = {"group" , "organization" };
253
+
254
+ // Get the list of existing collections
255
+ Set <String > existingCollections = mongoTemplate .getCollectionNames ();
256
+
257
+ for (String collectionName : collectionNames ) {
258
+ if (existingCollections .contains (collectionName )) {
259
+ addGidField (mongoTemplate , collectionName );
260
+ } else {
261
+ System .out .println ("Collection " + collectionName + " does not exist." );
262
+ }
263
+ }
264
+
265
+ ensureIndexes (mongoTemplate , Application .class , makeIndex ("gid" ).unique ());
266
+ ensureIndexes (mongoTemplate , Datasource .class , makeIndex ("gid" ).unique ());
267
+ ensureIndexes (mongoTemplate , Bundle .class , makeIndex ("gid" ).unique ());
268
+ ensureIndexes (mongoTemplate , Folder .class , makeIndex ("gid" ).unique ());
269
+ ensureIndexes (mongoTemplate , Group .class , makeIndex ("gid" ).unique ());
270
+ ensureIndexes (mongoTemplate , Organization .class , makeIndex ("gid" ).unique ());
271
+ ensureIndexes (mongoTemplate , LibraryQuery .class , makeIndex ("gid" ).unique ());
272
+ }
273
+
246
274
private void addGidField (MongockTemplate mongoTemplate , String collectionName ) {
247
275
// Create a query to match all documents
248
276
Query query = new Query ();
@@ -262,7 +290,7 @@ public void processDocument(Document document) {
262
290
update .set ("gid" , uniqueGid );
263
291
264
292
// Create a query to match the current document by its _id
265
- Query idQuery = new Query (Criteria .where ("_id" ).is (document .getObjectId ("_id" )));
293
+ Query idQuery = new Query (Criteria .where ("_id" ).is (document .getObjectId ("_id" )). andOperator ( Criteria . where ( "gid" ). isNull ()) );
266
294
267
295
// Update the document with the new 'gid' field
268
296
mongoTemplate .updateFirst (idQuery , update , collectionName );
0 commit comments