var Expr = require('./expr');
var ListHolder = require('./list-holder');

/**
 * The equivalent of a SQL function.
 */
module.exports = new Class({
	Extends: Expr
	,Tag: 'sql-function'
	,Implements: ListHolder
	,Properties: {
		/**
		 * The function name.
		 */
		name: {
			type: String
			,value: null
		},
		/**
		 * The function schema.
		 */
		schema: {
			type: String
			,value: null
		},
		/**
		 * The function parameters.
		 */
		params: {
			type: Array
			,set(x) {
				this.list = x;
			}
			,get() {
				return this.list;
			}
		}
	}

	,render(params) {
		return this.renderPreIdent(this.schema)
			+ this.renderIdent(this.name)
			+ '('
			+ this.renderListWs(this.list, params, ', ')
			+ ')';
	}
});