
var Target = require ('./target');
var Expr = require ('./expr');
var SqlObject = require ('./object');
var Type = require ('./join').Type;

var TypeSql = [
	'INNER',
	'LEFT',
	'RIGHT'
];

/**
 * The equivalent of a SQL join.
 */
module.exports = new Class
({
	Extends: SqlObject
	,Tag: 'sql-join-table'
	,Properties:
	{
		/**
		 * The join type.
		 */
		type:
		{
			enumType: Type
			,value: 0
		},
		/**
		 * The right target.
		 */
		target:
		{
			type: Target
			,value: null
		},
		/**
		 * The join on condition.
		 */
		condition:
		{
			type: Expr
			,value: null
		}
	}

	,render: function (params)
	{
		return TypeSql[this.type] +' JOIN '
			+ this.target.render (params)
			+ this.renderIfSet (this.condition, 'ON', params);
	}
});
