define([], function () {
'use strict';
/**
* Defines the cardinality of a relation between two {@link entity/js/api/Entity Entities}.
*
* @AbcsExtension stable
* @version 17.1.1
* @exports entity/js/api/RelationCardinality
*
* @constructor
* @private
*/
var RelationCardinality = function () {
AbcsLib.throwStaticClassError();
};
/**
* One to one cardinality.
*
* @static
* @constant
* @type {String}
*/
RelationCardinality.ONE_TO_ONE = 'one-to-one';
/**
* One to many cardinality.
*
* <p>
* One source {@link entity/js/api/Entity Entity} relates to multiple target {@link entity/js/api/Entity Entities}. The target {@link entity/js/api/Entity Entity} has a
* dedicated {@link entity/js/api/Property Property} of {@link entity/js/api/PropertyType.REFERENCE PropertyType.REFERENCE} which always contains an ID referring to the source {@link entity/js/api/Entity Entity}.
* </p>
*
* <p>
* This is an inverse cardinality to {@link entity/js/api/RelationCardinality.MANY_TO_ONE RelationCardinality.MANY_TO_ONE}.
* </p>
*
* @AbcsExtension stable
* @version 17.1.1
* @static
* @constant
* @type {String}
*/
RelationCardinality.ONE_TO_MANY = 'one-to-many';
/**
* Many to one cardinality.
*
* <p>
* Many source {@link entity/js/api/Entity Entities} relate to one target {@link entity/js/api/Entity Entity}. The source {@link entity/js/api/Entity Entity} has a dedicated
* {@link entity/js/api/Property Property} of {@link entity/js/api/PropertyType.REFERENCE PropertyType.REFERENCE} which always conatins an ID referring to the target {@link entity/js/api/Entity Entity}.
* </p>
*
* <p>
* This is an inverse cardinality to ONE_TO_MANY
* </p>
*
* @AbcsExtension stable
* @version 17.1.1
* @static
* @constant
* @type {String}
*/
RelationCardinality.MANY_TO_ONE = 'many-to-one';
/**
* Many to many cardinality.
*
* <p>
* Many source {@link entity/js/api/Entity Entities} relate to many target {@link entity/js/api/Entity Entities}.
* </p>
*
* @AbcsExtension stable
* @version 17.3.5
* @static
* @constant
* @type {String}
*/
RelationCardinality.MANY_TO_MANY = 'many-to-many';
/**
* Gets inverse cardinality.
*
* @param {entity/js/api/RelationCardinality} cardinality
* @returns {entity/js/api/RelationCardinality}
*/
RelationCardinality.getInverseCardinality = function (cardinality) {
switch (cardinality) {
case RelationCardinality.MANY_TO_ONE:
return RelationCardinality.ONE_TO_MANY;
case RelationCardinality.ONE_TO_MANY:
return RelationCardinality.MANY_TO_ONE;
default:
return cardinality; //return itself - it's symmetric
}
};
return RelationCardinality;
});