middleware

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2025 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-13 11:03:15 * @FilePath: \go-sqlbuilder\constant\error.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AdaptiveTimeoutMiddleware

type AdaptiveTimeoutMiddleware struct {
	// contains filtered or unexported fields
}

AdaptiveTimeoutMiddleware 自适应超时中间件 根据历史查询耗时自动调整超时时间

func (*AdaptiveTimeoutMiddleware) GetStatistics

func (m *AdaptiveTimeoutMiddleware) GetStatistics() TimeoutStatistics

GetStatistics 获取统计信息

func (*AdaptiveTimeoutMiddleware) Handle

Handle 处理请求

func (*AdaptiveTimeoutMiddleware) Name

Name 返回中间件名称

func (*AdaptiveTimeoutMiddleware) Reset

func (m *AdaptiveTimeoutMiddleware) Reset()

Reset 重置统计信息

func (*AdaptiveTimeoutMiddleware) SetMaxTimeout

func (m *AdaptiveTimeoutMiddleware) SetMaxTimeout(maxTimeout time.Duration)

SetMaxTimeout 设置最大超时时间

func (*AdaptiveTimeoutMiddleware) SetMinTimeout

func (m *AdaptiveTimeoutMiddleware) SetMinTimeout(minTimeout time.Duration)

SetMinTimeout 设置最小超时时间

func (*AdaptiveTimeoutMiddleware) SetPercentile

func (m *AdaptiveTimeoutMiddleware) SetPercentile(percentile float64)

SetPercentile 设置百分位数

type ArgsValidator

type ArgsValidator struct {
	// contains filtered or unexported fields
}

ArgsValidator 参数验证器

func (*ArgsValidator) SetMaxArgs

func (v *ArgsValidator) SetMaxArgs(maxArgs int)

SetMaxArgs 设置最大参数数

func (*ArgsValidator) Validate

func (v *ArgsValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 验证参数

type BackoffStrategy

type BackoffStrategy interface {
	// NextBackoff 获取下一次重试的等待时间
	NextBackoff(attempt int) time.Duration
}

BackoffStrategy 重试等待策略

func NewDefaultBackoff

func NewDefaultBackoff() BackoffStrategy

NewDefaultBackoff 创建默认重试等待策略

func NewLinearBackoff

func NewLinearBackoff(interval time.Duration) BackoffStrategy

NewLinearBackoff 创建线性重试等待策略

type Builder

type Builder interface {
	// WithLogging 添加日志中间件
	WithLogging() Builder

	// WithMetrics 添加指标中间件
	WithMetrics() Builder

	// WithRetry 添加重试中间件
	WithRetry(maxAttempts int) Builder

	// WithTimeout 添加超时中间件
	WithTimeout() Builder

	// WithValidation 添加验证中间件
	WithValidation() Builder

	// WithCustom 添加自定义中间件
	WithCustom(middleware Middleware) Builder

	// Build 构建中间件链
	Build() ExecutionChain
}

Builder 定义中间件链构建器接口

func NewBuilder

func NewBuilder() Builder

NewBuilder 创建新的中间件链构建器

type ChainError

type ChainError struct {
	MiddlewareName string
	Err            error
}

ChainError 中间件链执行错误

func (*ChainError) Error

func (e *ChainError) Error() string

Error 实现 error 接口

func (*ChainError) Unwrap

func (e *ChainError) Unwrap() error

Unwrap 返回底层错误

type CircuitBreakerRetryMiddleware

type CircuitBreakerRetryMiddleware struct {
	// contains filtered or unexported fields
}

CircuitBreakerRetryMiddleware 断路器重试中间件 当错误率过高时,停止重试

func (*CircuitBreakerRetryMiddleware) GetState

GetState 获取断路器状态

func (*CircuitBreakerRetryMiddleware) Handle

Handle 处理请求

func (*CircuitBreakerRetryMiddleware) Name

Name 返回中间件名称

func (*CircuitBreakerRetryMiddleware) Reset

func (m *CircuitBreakerRetryMiddleware) Reset()

Reset 重置断路器

type CircuitState

type CircuitState string

CircuitState 断路器状态

const (
	// CircuitStateClosed 闭合状态(正常)
	CircuitStateClosed CircuitState = "closed"
	// CircuitStateOpen 开启状态(断路)
	CircuitStateOpen CircuitState = "open"
	// CircuitStateHalfOpen 半开状态(试探)
	CircuitStateHalfOpen CircuitState = "half_open"
)

type CompositeValidator

type CompositeValidator struct {
	// contains filtered or unexported fields
}

CompositeValidator 复合验证器 支持多个验证器的组合,所有验证器都必须通过

func (*CompositeValidator) AddValidator

func (v *CompositeValidator) AddValidator(validator Validator)

AddValidator 添加验证器

func (*CompositeValidator) Validate

func (v *CompositeValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 执行所有验证

type CustomValidator

type CustomValidator struct {
	// contains filtered or unexported fields
}

CustomValidator 自定义验证器

func (*CustomValidator) Validate

func (v *CustomValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 执行自定义验证

type DefaultBackoff

type DefaultBackoff struct {
	// contains filtered or unexported fields
}

DefaultBackoff 默认重试等待策略(指数退避)

func (*DefaultBackoff) NextBackoff

func (b *DefaultBackoff) NextBackoff(attempt int) time.Duration

NextBackoff 获取下一次重试的等待时间

type DefaultRetryableChecker

type DefaultRetryableChecker struct{}

DefaultRetryableChecker 默认的可重试错误检查器

func (*DefaultRetryableChecker) IsRetryable

func (c *DefaultRetryableChecker) IsRetryable(err error) bool

IsRetryable 检查错误是否可重试

type ErrorHandlerMiddleware

type ErrorHandlerMiddleware struct {
	// contains filtered or unexported fields
}

ErrorHandlerMiddleware 错误处理中间件

func (*ErrorHandlerMiddleware) Handle

func (m *ErrorHandlerMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*ErrorHandlerMiddleware) Name

func (m *ErrorHandlerMiddleware) Name() string

Name 返回中间件名称

type ExecutionChain

type ExecutionChain interface {
	// Use 添加中间件
	Use(middleware ...Middleware) ExecutionChain

	// Execute 执行中间件链
	// 依次执行所有中间件的 Handle 方法
	Execute(ctx context.Context, execCtx *executor.ExecutionContext) error

	// Remove 移除指定名称的中间件
	Remove(name string) ExecutionChain

	// Clear 清除所有中间件
	Clear() ExecutionChain

	// List 获取所有中间件名称列表
	List() []string

	// HasMiddleware 检查是否存在指定名称的中间件
	HasMiddleware(name string) bool
}

ExecutionChain 定义中间件链接口

func NewChain

func NewChain() ExecutionChain

NewChain 创建新的中间件链

type LengthValidator

type LengthValidator struct {
	// contains filtered or unexported fields
}

LengthValidator SQL 长度验证器

func (*LengthValidator) Validate

func (v *LengthValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 验证 SQL 长度

type LinearBackoff

type LinearBackoff struct {
	// contains filtered or unexported fields
}

LinearBackoff 线性重试等待策略

func (*LinearBackoff) NextBackoff

func (b *LinearBackoff) NextBackoff(attempt int) time.Duration

NextBackoff 获取下一次重试的等待时间

type LoggingMiddleware

type LoggingMiddleware struct {
	// contains filtered or unexported fields
}

LoggingMiddleware 日志中间件 记录查询的 SQL、参数、执行时间等信息

func (*LoggingMiddleware) GetLevel

func (m *LoggingMiddleware) GetLevel() string

GetLevel 获取日志级别

func (*LoggingMiddleware) Handle

func (m *LoggingMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*LoggingMiddleware) Name

func (m *LoggingMiddleware) Name() string

Name 返回中间件名称

func (*LoggingMiddleware) SetLevel

func (m *LoggingMiddleware) SetLevel(level string)

SetLevel 设置日志级别

type MetricsMiddleware

type MetricsMiddleware struct {
	// contains filtered or unexported fields
}

MetricsMiddleware 指标中间件 收集查询的统计信息,如执行次数、总耗时、错误次数等

func (*MetricsMiddleware) GetMetrics

func (m *MetricsMiddleware) GetMetrics() QueryMetrics

GetMetrics 获取统计指标

func (*MetricsMiddleware) Handle

func (m *MetricsMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*MetricsMiddleware) Name

func (m *MetricsMiddleware) Name() string

Name 返回中间件名称

func (*MetricsMiddleware) Reset

func (m *MetricsMiddleware) Reset()

Reset 重置所有指标

type Middleware

type Middleware interface {
	// Name 返回中间件的名称
	Name() string

	// Handle 处理请求
	// 返回下一个中间件处理的 Next 函数
	Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error
}

Middleware 定义中间件接口 Middleware 在执行查询前后进行处理

func NewAdaptiveTimeoutMiddleware

func NewAdaptiveTimeoutMiddleware(baseTimeout time.Duration) Middleware

NewAdaptiveTimeoutMiddleware 创建自适应超时中间件

func NewCircuitBreakerRetryMiddleware

func NewCircuitBreakerRetryMiddleware(maxAttempts int) Middleware

NewCircuitBreakerRetryMiddleware 创建断路器重试中间件

func NewErrorHandlerMiddleware

func NewErrorHandlerMiddleware(
	name string,
	handler func(ctx context.Context, execCtx *executor.ExecutionContext, err error) error,
) Middleware

NewErrorHandlerMiddleware 创建错误处理中间件

func NewLoggingMiddleware

func NewLoggingMiddleware() Middleware

NewLoggingMiddleware 创建日志中间件

func NewLoggingMiddlewareWithLevel

func NewLoggingMiddlewareWithLevel(level string) Middleware

NewLoggingMiddlewareWithLevel 创建日志中间件,指定日志级别

func NewLoggingMiddlewareWithLogger

func NewLoggingMiddlewareWithLogger(l logger.Logger) Middleware

NewLoggingMiddlewareWithLogger 创建日志中间件,指定 logger

func NewMetricsMiddleware

func NewMetricsMiddleware() Middleware

NewMetricsMiddleware 创建指标中间件

func NewPredicateMiddleware

func NewPredicateMiddleware(
	name string,
	predicate func(ctx context.Context, execCtx *executor.ExecutionContext) bool,
	handle func(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error,
) Middleware

NewPredicateMiddleware 创建条件中间件 只有当 predicate 返回 true 时才执行 handle

func NewRatioMetricsMiddleware

func NewRatioMetricsMiddleware() Middleware

NewRatioMetricsMiddleware 创建比例指标中间件

func NewRetryMiddleware

func NewRetryMiddleware(maxAttempts int) Middleware

NewRetryMiddleware 创建重试中间件

func NewRetryMiddlewareWithConfig

func NewRetryMiddlewareWithConfig(maxAttempts int, backoff BackoffStrategy, retryable RetryableChecker) Middleware

NewRetryMiddlewareWithConfig 创建重试中间件,指定配置

func NewSQLLoggingMiddleware

func NewSQLLoggingMiddleware() Middleware

NewSQLLoggingMiddleware 创建 SQL 专用日志中间件

func NewSimpleMiddleware

func NewSimpleMiddleware(name string, handle func(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error) Middleware

NewSimpleMiddleware 创建简单中间件

func NewSlowQueryLoggingMiddleware

func NewSlowQueryLoggingMiddleware(threshold time.Duration) Middleware

NewSlowQueryLoggingMiddleware 创建慢查询日志中间件 threshold: 超过此时长的查询会被记录为慢查询

func NewTimeoutMiddleware

func NewTimeoutMiddleware() Middleware

NewTimeoutMiddleware 创建超时中间件 使用默认超时时间(30 秒)

func NewTimeoutMiddlewareWithDuration

func NewTimeoutMiddlewareWithDuration(timeout time.Duration) Middleware

NewTimeoutMiddlewareWithDuration 创建超时中间件,指定超时时间

func NewValidationMiddleware

func NewValidationMiddleware() Middleware

NewValidationMiddleware 创建验证中间件

func WrapMiddleware

func WrapMiddleware(name string, handle func(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error) Middleware

WrapMiddleware 将简单的处理函数包装为中间件

type Next

type Next func(ctx context.Context) error

Next 定义下一个中间件处理函数

type PatternValidator

type PatternValidator struct {
	// contains filtered or unexported fields
}

PatternValidator 模式验证器 检查 SQL 是否匹配预定义的模式

func NewPatternValidator

func NewPatternValidator(allow bool) *PatternValidator

NewPatternValidator 创建模式验证器 allow: true 表示只允许匹配的模式,false 表示拒绝匹配的模式

func (*PatternValidator) AddPattern

func (v *PatternValidator) AddPattern(pattern string) error

AddPattern 添加模式

func (*PatternValidator) Validate

func (v *PatternValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 验证模式

type PredicateMiddleware

type PredicateMiddleware struct {
	// contains filtered or unexported fields
}

PredicateMiddleware 条件中间件

func (*PredicateMiddleware) Handle

func (m *PredicateMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*PredicateMiddleware) Name

func (m *PredicateMiddleware) Name() string

Name 返回中间件名称

type QueryMetrics

type QueryMetrics struct {
	TotalQueries  int64
	TotalErrors   int64
	SuccessCount  int64
	TotalTime     time.Duration
	AverageTime   time.Duration
	MinTime       time.Duration
	MaxTime       time.Duration
	ErrorRate     float64
	QueriesPerSec float64
}

QueryMetrics 查询指标

type QueryStatistics

type QueryStatistics struct {
	TotalQueries int64
	SelectCount  int64
	InsertCount  int64
	UpdateCount  int64
	DeleteCount  int64
	OtherCount   int64
	SelectRatio  float64
	InsertRatio  float64
	UpdateRatio  float64
	DeleteRatio  float64
	OtherRatio   float64
}

QueryStatistics 查询统计信息

type RatioMetricsMiddleware

type RatioMetricsMiddleware struct {
	// contains filtered or unexported fields
}

RatioMetricsMiddleware 比例指标中间件 统计不同查询类型的比例

func (*RatioMetricsMiddleware) GetStatistics

func (m *RatioMetricsMiddleware) GetStatistics() QueryStatistics

GetStatistics 获取统计信息

func (*RatioMetricsMiddleware) Handle

func (m *RatioMetricsMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*RatioMetricsMiddleware) Name

func (m *RatioMetricsMiddleware) Name() string

Name 返回中间件名称

func (*RatioMetricsMiddleware) Reset

func (m *RatioMetricsMiddleware) Reset()

Reset 重置所有统计

type RetryMiddleware

type RetryMiddleware struct {
	// contains filtered or unexported fields
}

RetryMiddleware 重试中间件 当查询失败时自动重试

func (*RetryMiddleware) Handle

func (m *RetryMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*RetryMiddleware) Name

func (m *RetryMiddleware) Name() string

Name 返回中间件名称

type RetryableChecker

type RetryableChecker interface {
	// IsRetryable 检查给定的错误是否应该重试
	IsRetryable(err error) bool
}

RetryableChecker 检查错误是否可重试

type SQLInjectionValidator

type SQLInjectionValidator struct {
	// contains filtered or unexported fields
}

SQLInjectionValidator SQL 注入防护验证器

func (*SQLInjectionValidator) Validate

Validate 验证 SQL 注入

type SQLLoggingMiddleware

type SQLLoggingMiddleware struct {
	// contains filtered or unexported fields
}

SQLLoggingMiddleware SQL 专用日志中间件 只记录 SQL 和执行时间,不记录其他信息

func (*SQLLoggingMiddleware) Handle

func (m *SQLLoggingMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*SQLLoggingMiddleware) Name

func (m *SQLLoggingMiddleware) Name() string

Name 返回中间件名称

type SQLValidator

type SQLValidator struct {
	// contains filtered or unexported fields
}

SQLValidator SQL 验证器

func (*SQLValidator) Validate

func (v *SQLValidator) Validate(ctx context.Context, execCtx *executor.ExecutionContext) error

Validate 验证 SQL

type SimpleMiddleware

type SimpleMiddleware struct {
	// contains filtered or unexported fields
}

SimpleMiddleware 定义简单的中间件实现

func (*SimpleMiddleware) Handle

func (m *SimpleMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*SimpleMiddleware) Name

func (m *SimpleMiddleware) Name() string

Name 返回中间件名称

type SlowQueryLoggingMiddleware

type SlowQueryLoggingMiddleware struct {
	// contains filtered or unexported fields
}

SlowQueryLoggingMiddleware 慢查询日志中间件 只记录执行时间超过阈值的查询

func (*SlowQueryLoggingMiddleware) GetThreshold

func (m *SlowQueryLoggingMiddleware) GetThreshold() time.Duration

GetThreshold 获取慢查询阈值

func (*SlowQueryLoggingMiddleware) Handle

Handle 处理请求

func (*SlowQueryLoggingMiddleware) Name

Name 返回中间件名称

func (*SlowQueryLoggingMiddleware) SetThreshold

func (m *SlowQueryLoggingMiddleware) SetThreshold(threshold time.Duration)

SetThreshold 设置慢查询阈值

type TimeoutMiddleware

type TimeoutMiddleware struct {
	// contains filtered or unexported fields
}

TimeoutMiddleware 超时中间件 限制查询执行时间,超时则取消查询

func (*TimeoutMiddleware) GetDuration

func (m *TimeoutMiddleware) GetDuration() time.Duration

GetDuration 获取超时时间(别名)

func (*TimeoutMiddleware) GetTimeout

func (m *TimeoutMiddleware) GetTimeout() time.Duration

GetTimeout 获取超时时间

func (*TimeoutMiddleware) Handle

func (m *TimeoutMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*TimeoutMiddleware) Name

func (m *TimeoutMiddleware) Name() string

Name 返回中间件名称

func (*TimeoutMiddleware) SetDuration

func (m *TimeoutMiddleware) SetDuration(duration time.Duration)

SetDuration 设置超时时间(别名)

func (*TimeoutMiddleware) SetTimeout

func (m *TimeoutMiddleware) SetTimeout(timeout time.Duration)

SetTimeout 设置超时时间

type TimeoutStatistics

type TimeoutStatistics struct {
	TotalExecutions   int64
	TimeoutExceeds    int64
	AverageDuration   time.Duration
	MaxDuration       time.Duration
	MinDuration       time.Duration
	CurrentTimeout    time.Duration
	TimeoutExceedRate float64
}

TimeoutStatistics 超时统计信息

type ValidationMiddleware

type ValidationMiddleware struct {
	// contains filtered or unexported fields
}

ValidationMiddleware 验证中间件 在执行查询前进行验证

func (*ValidationMiddleware) AddValidator

func (m *ValidationMiddleware) AddValidator(validator Validator)

AddValidator 添加验证器

func (*ValidationMiddleware) Handle

func (m *ValidationMiddleware) Handle(ctx context.Context, execCtx *executor.ExecutionContext, next Next) error

Handle 处理请求

func (*ValidationMiddleware) Name

func (m *ValidationMiddleware) Name() string

Name 返回中间件名称

type Validator

type Validator interface {
	// Validate 验证执行上下文
	Validate(ctx context.Context, execCtx *executor.ExecutionContext) error
}

Validator 验证器接口

func NewArgsValidator

func NewArgsValidator() Validator

NewArgsValidator 创建参数验证器

func NewCompositeValidator

func NewCompositeValidator(validators ...Validator) Validator

NewCompositeValidator 创建复合验证器

func NewCustomValidator

func NewCustomValidator(name string, validate func(ctx context.Context, execCtx *executor.ExecutionContext) error) Validator

NewCustomValidator 创建自定义验证器

func NewLengthValidator

func NewLengthValidator(maxLength int) Validator

NewLengthValidator 创建 SQL 长度验证器

func NewSQLInjectionValidator

func NewSQLInjectionValidator() Validator

NewSQLInjectionValidator 创建 SQL 注入防护验证器

func NewSQLValidator

func NewSQLValidator() Validator

NewSQLValidator 创建 SQL 验证器

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL