Adds index on _Role name property (#3586)
* Adds index on _Role name property In order to avoid having different _Role objects with the same name, adding an index on the name property of _Role is necessary. Fixes #3579 * Uses throw instead of Promise.reject when enforcing unique indexes * Fixes wrong sorting of results in schemas tests
This commit is contained in:
committed by
Arthur Cinader
parent
0181fb51b3
commit
9bfa0c60c4
@@ -909,27 +909,37 @@ DatabaseController.prototype.addPointerPermissions = function(schema, className,
|
||||
// have a Parse app without it having a _User collection.
|
||||
DatabaseController.prototype.performInitialization = function() {
|
||||
const requiredUserFields = { fields: { ...SchemaController.defaultColumns._Default, ...SchemaController.defaultColumns._User } };
|
||||
const requiredRoleFields = { fields: { ...SchemaController.defaultColumns._Default, ...SchemaController.defaultColumns._Role } };
|
||||
|
||||
const userClassPromise = this.loadSchema()
|
||||
.then(schema => schema.enforceClassExists('_User'))
|
||||
const roleClassPromise = this.loadSchema()
|
||||
.then(schema => schema.enforceClassExists('_Role'))
|
||||
|
||||
const usernameUniqueness = userClassPromise
|
||||
.then(() => this.adapter.ensureUniqueness('_User', requiredUserFields, ['username']))
|
||||
.catch(error => {
|
||||
logger.warn('Unable to ensure uniqueness for usernames: ', error);
|
||||
return Promise.reject(error);
|
||||
throw error;
|
||||
});
|
||||
|
||||
const emailUniqueness = userClassPromise
|
||||
.then(() => this.adapter.ensureUniqueness('_User', requiredUserFields, ['email']))
|
||||
.catch(error => {
|
||||
logger.warn('Unable to ensure uniqueness for user email addresses: ', error);
|
||||
return Promise.reject(error);
|
||||
throw error;
|
||||
});
|
||||
|
||||
const roleUniqueness = roleClassPromise
|
||||
.then(() => this.adapter.ensureUniqueness('_Role', requiredRoleFields, ['name']))
|
||||
.catch(error => {
|
||||
logger.warn('Unable to ensure uniqueness for role name: ', error);
|
||||
throw error;
|
||||
});
|
||||
|
||||
// Create tables for volatile classes
|
||||
const adapterInit = this.adapter.performInitialization({ VolatileClassesSchemas: SchemaController.VolatileClassesSchemas });
|
||||
return Promise.all([usernameUniqueness, emailUniqueness, adapterInit]);
|
||||
return Promise.all([usernameUniqueness, emailUniqueness, roleUniqueness, adapterInit]);
|
||||
}
|
||||
|
||||
function joinTableName(className, key) {
|
||||
|
||||
Reference in New Issue
Block a user