// Package matcher 提供 nginx 风格的 location 匹配引擎实现。
//
// 该文件实现精确路径匹配器，使用 hash map 实现 O(1) 查找。
//
// 作者：xfy
package matcher

import "github.com/valyala/fasthttp"

// ExactMatcher Hash Map 精确匹配器。
//
// 通过字符串等值比较实现 O(1) 时间复杂度的路径匹配，
// 对应 nginx 的 = 修饰符。
type ExactMatcher struct {
	// handler 请求处理器
	handler fasthttp.RequestHandler

	// internal 是否为 internal location
	internal bool

	// path 精确匹配路径
	path string

	// priority 匹配优先级，精确匹配为 1（最高）
	priority int
}

// NewExactMatcher 创建精确匹配器。
//
// 参数：
//   - path: 精确匹配的路径
//   - handler: 匹配成功后的请求处理器
//   - priority: 优先级（通常设为 1）
//   - internal: 是否为 internal location
//
// 返回值：
//   - *ExactMatcher: 精确匹配器实例
func NewExactMatcher(path string, handler fasthttp.RequestHandler, priority int, internal bool) *ExactMatcher {
	return &ExactMatcher{
		path:     path,
		handler:  handler,
		priority: priority,
		internal: internal,
	}
}

// Result 返回匹配结果。
//
// 返回值：
//   - *MatchResult: 包含处理器和元数据的匹配结果
func (m *ExactMatcher) Result() *MatchResult {
	return &MatchResult{
		Handler:      m.handler,
		Path:         m.path,
		Priority:     m.priority,
		LocationType: LocationTypeExact,
		Internal:     m.internal,
	}
}
