var Target = require('./target');
var ListHolder = require('./list-holder');

/**
 * The equivalent of a SQL join.
 */
var Klass = new Class();
module.exports = Klass;

var Type = {
	INNER : 0,
	LEFT  : 1,
	RIGHT : 2
};

Klass.extend({
	Type: Type
});

Klass.implement({
	Extends: Target
	,Implements: ListHolder
	,Tag: 'sql-join'
	,Properties: {
		/**
		 * The right targets.
		 */
		targets: {
			type: Array
			,set(x) {
				this.list = x;
			}
			,get() {
				return this.list;
			}
		}
	}

	,render(params) {
		return '('
			+ this.target.render(params)
			+ ' '
			+ this.renderList(this.list, params)
			+ ')';
	}
});