package parser

import "fmt"

// FunctionCall represents a function call
type FunctionCall struct {
	Token    Position
	Name     string
	Args     []Expression
	Distinct bool
}

func (f *FunctionCall) String() string {
	args := make([]string, len(f.Args))
	for i, arg := range f.Args {
		args[i] = arg.String()
	}
	return fmt.Sprintf("%s(%s)", f.Name, joinStrings(args, ", "))
}

func (f *FunctionCall) expressionNode()    {}
func (f *FunctionCall) Position() Position { return f.Token }

// Helper function to join strings
func joinStrings(strs []string, sep string) string {
	result := ""
	for i, s := range strs {
		if i > 0 {
			result += sep
		}
		result += s
	}
	return result
}
