Skip to content

Commit 04588bc

Browse files
ClaireNeveuTylerBrock
authored andcommitted
Allow creation of indices on default fields (#4738)
* Allow creation of indexes on default fields * Update test * Try to address flaky cache test
1 parent b1017ac commit 04588bc

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

spec/InMemoryCache.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('InMemoryCache', function() {
2828
let value = cache.get(KEY);
2929
expect(value).toEqual(VALUE);
3030

31-
wait(BASE_TTL.ttl * 2).then(() => {
31+
wait(BASE_TTL.ttl * 10).then(() => {
3232
value = cache.get(KEY)
3333
expect(value).toEqual(null);
3434
done();

spec/schemas.spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1852,6 +1852,29 @@ describe('schemas', () => {
18521852
})
18531853
});
18541854

1855+
it('can create index on default field', done => {
1856+
request.post({
1857+
url: 'http://localhost:8378/1/schemas/NewClass',
1858+
headers: masterKeyHeaders,
1859+
json: true,
1860+
body: {},
1861+
}, () => {
1862+
request.put({
1863+
url: 'http://localhost:8378/1/schemas/NewClass',
1864+
headers: masterKeyHeaders,
1865+
json: true,
1866+
body: {
1867+
indexes: {
1868+
name1: { createdAt: 1},
1869+
}
1870+
}
1871+
}, (error, response, body) => {
1872+
expect(body.indexes.name1).toEqual({ createdAt: 1});
1873+
done();
1874+
});
1875+
})
1876+
});
1877+
18551878
it('cannot create compound index if field does not exist', done => {
18561879
request.post({
18571880
url: 'http://localhost:8378/1/schemas/NewClass',

src/Controllers/SchemaController.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,8 @@ export default class SchemaController {
530530
delete existingFields._rperm;
531531
delete existingFields._wperm;
532532
const newSchema = buildMergedSchemaObject(existingFields, submittedFields);
533+
const defaultFields = defaultColumns[className] || defaultColumns._Default;
534+
const fullNewSchema = Object.assign({}, newSchema, defaultFields);
533535
const validationError = this.validateSchemaData(className, newSchema, classLevelPermissions, Object.keys(existingFields));
534536
if (validationError) {
535537
throw new Parse.Error(validationError.code, validationError.error);
@@ -561,7 +563,7 @@ export default class SchemaController {
561563
return Promise.all(promises);
562564
})
563565
.then(() => this.setPermissions(className, classLevelPermissions, newSchema))
564-
.then(() => this._dbAdapter.setIndexesWithSchemaFormat(className, indexes, schema.indexes, newSchema))
566+
.then(() => this._dbAdapter.setIndexesWithSchemaFormat(className, indexes, schema.indexes, fullNewSchema))
565567
.then(() => this.reloadData({ clearCache: true }))
566568
//TODO: Move this logic into the database adapter
567569
.then(() => {

0 commit comments

Comments
 (0)