feat: Add option keepUnknownIndexes to retain indexes which are not specified in schema (#9857)

This commit is contained in:
Rahul Lanjewar
2025-10-03 18:05:34 +05:30
committed by GitHub
parent b7faabb569
commit 89fad468c3
6 changed files with 64 additions and 2 deletions

View File

@@ -371,7 +371,7 @@ describe('DefinedSchemas', () => {
expect(schema.indexes).toEqual(indexes);
});
it('should delete removed indexes', async () => {
it('should delete unknown indexes when keepUnknownIndexes is not set', async () => {
const server = await reconfigureServer();
let indexes = { complex: { createdAt: 1, updatedAt: 1 } };
@@ -393,6 +393,53 @@ describe('DefinedSchemas', () => {
cleanUpIndexes(schema);
expect(schema.indexes).toBeUndefined();
});
it('should delete unknown indexes when keepUnknownIndexes is set to false', async () => {
const server = await reconfigureServer();
let indexes = { complex: { createdAt: 1, updatedAt: 1 } };
let schemas = { definitions: [{ className: 'Test', indexes }], keepUnknownIndexes: false };
await new DefinedSchemas(schemas, server.config).execute();
indexes = {};
schemas = { definitions: [{ className: 'Test', indexes }], keepUnknownIndexes: false };
// Change indexes
await new DefinedSchemas(schemas, server.config).execute();
let schema = await new Parse.Schema('Test').get();
cleanUpIndexes(schema);
expect(schema.indexes).toBeUndefined();
// Update
await new DefinedSchemas(schemas, server.config).execute();
schema = await new Parse.Schema('Test').get();
cleanUpIndexes(schema);
expect(schema.indexes).toBeUndefined();
});
it('should not delete unknown indexes when keepUnknownIndexes is set to true', async () => {
const server = await reconfigureServer();
const indexes = { complex: { createdAt: 1, updatedAt: 1 } };
let schemas = { definitions: [{ className: 'Test', indexes }], keepUnknownIndexes: true };
await new DefinedSchemas(schemas, server.config).execute();
schemas = { definitions: [{ className: 'Test', indexes: {} }], keepUnknownIndexes: true };
// Change indexes
await new DefinedSchemas(schemas, server.config).execute();
let schema = await new Parse.Schema('Test').get();
cleanUpIndexes(schema);
expect(schema.indexes).toEqual({ complex: { createdAt: 1, updatedAt: 1 } });
// Update
await new DefinedSchemas(schemas, server.config).execute();
schema = await new Parse.Schema('Test').get();
cleanUpIndexes(schema);
expect(schema.indexes).toEqual(indexes);
});
xit('should keep protected indexes', async () => {
const server = await reconfigureServer();