contract

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Jul 11, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// EnvKey 是环境变量服务字符串凭证
	EnvKey = "ygo:env"
	// EnvProduction 代表生产环境
	EnvProduction = "production"
	// EnvTesting 代表测试环境
	EnvTesting = "testing"
	// EnvDevelopment 代表开发环境
	EnvDevelopment = "development"
)
View Source
const (
	TraceKeyTraceID  = "trace_id"
	TraceKeySpanID   = "span_id"
	TraceKeyCspanID  = "cspan_id"
	TraceKeyParentID = "parent_id"
	TraceKeyMethod   = "method"
	TraceKeyCaller   = "caller"
	TraceKeyTime     = "time"
)
View Source
const AppKey = "ygo:app"

AppKey 定义字符串凭证

View Source
const CacheKey = "ygo:cache"
View Source
const (
	// ConfigKey is config key in container
	ConfigKey = "ygo:config"
)
View Source
const DistributedKey = "ygo:distributed"

DistributedKey 定义字符串凭证

View Source
const IDKey = "ygo:id"
View Source
const KernelKey = "ygo:kernel"

KernelKey 提供 kenel 服务凭证

View Source
const LogKey = "ygo:log"
View Source
const ORMKey = "ygo:orm"

ORMKey 代表 ORM的服务

View Source
const RedisKey = "ygo:redis"
View Source
const SSHKey = "ygo:ssh"
View Source
const TraceKey = "ygo:trace"

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App interface {
	// BaseFolder 定义项目基础地址
	BaseFolder() string
	// AppFolder 定义项目源码地址
	AppFolder() string
	// ConfigFolder 定义了配置文件的路径
	ConfigFolder() string
	// LogFolder 定义了日志所在路径
	LogFolder() string
	// HttpFolder 定义了业务自己的http路径
	HttpFolder() string
	// HttpFolder 定义了业务自己的http路径
	HttpModuleFolder() string
	// ProviderFolder 定义业务自己的服务提供者地址
	ProviderFolder() string
	// MiddlewareFolder 定义业务自己定义的中间件
	MiddlewareFolder() string
	// CommandFolder 定义业务定义的命令
	CommandFolder() string
	// RuntimeFolder 定义业务的运行中间态信息
	RuntimeFolder() string
	// TestFolder 存放测试所需要的信息
	TestFolder() string
	// DeployFolder 存放部署的时候创建的文件夹
	DeployFolder() string
	// AppID 表示当前这个app的唯一id, 可以用于分布式锁等
	AppID() string
	// LoadAppConfig 加载新的AppConfig,key为对应的函数转为小写下划线,比如ConfigFolder => config_folder
	LoadAppConfig(kv map[string]string)
}

App 定义接口

type CacheService added in v1.0.0

type CacheService interface {
	// Get 获取某个key对应的值
	Get(ctx context.Context, key string) (string, error)
	// GetObj 获取某个key对应的对象, 对象必须实现 https://pkg.go.dev/encoding#BinaryUnMarshaler
	GetObj(ctx context.Context, key string, model interface{}) error
	// GetMany 获取某些key对应的值
	GetMany(ctx context.Context, keys []string) (map[string]string, error)

	// Set 设置某个key和值到缓存,带超时时间
	Set(ctx context.Context, key string, val string, timeout time.Duration) error
	// SetObj 设置某个key和对象到缓存, 对象必须实现 https://pkg.go.dev/encoding#BinaryMarshaler
	SetObj(ctx context.Context, key string, val interface{}, timeout time.Duration) error
	// SetMany 设置多个key和值到缓存
	SetMany(ctx context.Context, data map[string]string, timeout time.Duration) error
	// SetForever 设置某个key和值到缓存,不带超时时间
	SetForever(ctx context.Context, key string, val string) error
	// SetForeverObj 设置某个key和对象到缓存,不带超时时间,对象必须实现 https://pkg.go.dev/encoding#BinaryMarshaler
	SetForeverObj(ctx context.Context, key string, val interface{}) error

	// SetTTL 设置某个key的超时时间
	SetTTL(ctx context.Context, key string, timeout time.Duration) error
	// GetTTL 获取某个key的超时时间
	GetTTL(ctx context.Context, key string) (time.Duration, error)

	// Remember 实现缓存的Cache-Aside模式, 先去缓存中根据key获取对象,如果有的话,返回,如果没有,调用RememberFunc 生成
	Remember(ctx context.Context, key string, timeout time.Duration, rememberFunc RememberFunc, model interface{}) error

	// Calc 往key对应的值中增加step计数
	Calc(ctx context.Context, key string, step int64) (int64, error)
	// Increment 往key对应的值中增加1
	Increment(ctx context.Context, key string) (int64, error)
	// Decrement 往key对应的值中减去1
	Decrement(ctx context.Context, key string) (int64, error)

	// Del 删除某个key
	Del(ctx context.Context, key string) error
	// DelMany 删除某些key
	DelMany(ctx context.Context, keys []string) error
}

CacheService 缓存服务

type Config

type Config interface {
	// IsExist 检查一个属性是否存在
	IsExist(key string) bool
	// Get 获取一个属性值
	Get(key string) interface{}
	// GetBool 获取一个bool属性
	GetBool(key string) bool
	// GetInt 获取一个int属性
	GetInt(key string) int
	// GetFloat64 获取一个float64属性
	GetFloat64(key string) float64
	// GetTime 获取一个time属性
	GetTime(key string) time.Time
	// GetString 获取一个string属性
	GetString(key string) string
	// GetIntSlice 获取一个int数组属性
	GetIntSlice(key string) []int
	// GetStringSlice 获取一个string数组
	GetStringSlice(key string) []string
	// GetStringMap 获取一个string为key,interface为val的map
	GetStringMap(key string) map[string]interface{}
	// GetStringMapString 获取一个string为key,string为val的map
	GetStringMapString(key string) map[string]string
	// GetStringMapStringSlice 获取一个string为key,数组string为val的map
	GetStringMapStringSlice(key string) map[string][]string

	// Load 加载配置到某个对象
	Load(key string, val interface{}) error
}

Config 定义了配置文件服务,读取配置文件,支持点分割的路径读取 例如: .Get("app.name") 表示从app文件中读取name属性 建议使用 yaml 属性, https://yaml.org/spec/1.2/spec.html

type CtxFielder

type CtxFielder func(ctx context.Context) map[string]interface{}

CtxFielder 定义了从context中获取信息的方法

type DBConfig added in v1.0.0

type DBConfig struct {
	// 以下配置关于dsn
	WriteTimeout string `yaml:"write_timeout"` // 写超时时间
	Loc          string `yaml:"loc"`           // 时区
	Port         int    `yaml:"port"`          // 端口
	ReadTimeout  string `yaml:"read_timeout"`  // 读超时时间
	Charset      string `yaml:"charset"`       // 字符集
	ParseTime    bool   `yaml:"parse_time"`    // 是否解析时间
	Protocol     string `yaml:"protocol"`      // 传输协议
	Dsn          string `yaml:"dsn"`           // 直接传递dsn,如果传递了,其他关于dsn的配置均无效
	Database     string `yaml:"database"`      // 数据库
	Collation    string `yaml:"collation"`     // 字符序
	Timeout      string `yaml:"timeout"`       // 连接超时时间
	Username     string `yaml:"username"`      // 用户名
	Password     string `yaml:"password"`      // 密码
	Driver       string `yaml:"driver"`        // 驱动
	Host         string `yaml:"host"`          // 数据库地址

	// 以下配置关于连接池
	ConnMaxIdle     int    `yaml:"conn_max_idle"`     // 最大空闲连接数
	ConnMaxOpen     int    `yaml:"conn_max_open"`     // 最大连接数
	ConnMaxLifetime string `yaml:"conn_max_lifetime"` // 连接最大生命周期
	ConnMaxIdletime string `yaml:"conn_max_idletime"` // 空闲最大生命周期

	// 以下配置关于gorm
	*gorm.Config // 集成gorm的配置
}

DBConfig 代表数据库连接的所有配置

func (*DBConfig) FormatDsn added in v1.0.0

func (conf *DBConfig) FormatDsn() (string, error)

FormatDsn 生成dsn

type DBOption added in v1.0.0

type DBOption func(container framework.Container, config *DBConfig) error

DBOption 代表初始化的时候的选项

type Distributed

type Distributed interface {
	// Select 分布式选择器, 所有节点对某个服务进行抢占,只选择其中一个节点
	// ServiceName 服务名字
	// appID 当前的AppID
	// holdTime 分布式选择器hold住的时间
	// 返回值
	// selectAppID 分布式选择器最终选择的App
	// err 异常才返回,如果没有被选择,不返回err
	Select(serviceName string, appID string, holdTime time.Duration) (selectAppID string, err error)
}

Distributed 分布式服务

type Env

type Env interface {
	// AppEnv 获取当前的环境,建议分为development/testing/production
	AppEnv() string

	// IsExist 判断一个环境变量是否有被设置
	IsExist(string) bool
	// Get 获取某个环境变量,如果没有设置,返回""
	Get(string) string
	// All 获取所有的环境变量,.env和运行环境变量融合后结果
	All() map[string]string
}

Env 定义环境变量的获取服务

type Formatter

type Formatter func(level LogLevel, t time.Time, msg string, fields map[string]interface{}) ([]byte, error)

Formatter 定义了将日志信息组织成字符串的通用方法

type IDService

type IDService interface {
	NewID() string
}

type Kernel

type Kernel interface {
	// HttpEngine http.Handler结构,作为net/http框架使用, 实际上是gin.Engine
	HttpEngine() http.Handler
}

Kernel 接口提供框架最核心的结构

type Log

type Log interface {
	// Panic 表示会导致整个程序出现崩溃的日志信息
	Panic(ctx context.Context, msg string, fields map[string]interface{})
	// Fatal 表示会导致当前这个请求出现提前终止的错误信息
	Fatal(ctx context.Context, msg string, fields map[string]interface{})
	// Error 表示出现错误,但是不一定影响后续请求逻辑的错误信息
	Error(ctx context.Context, msg string, fields map[string]interface{})
	// Warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息
	Warn(ctx context.Context, msg string, fields map[string]interface{})
	// Info 表示正常的日志信息输出
	Info(ctx context.Context, msg string, fields map[string]interface{})
	// Debug 表示在调试状态下打印出来的日志信息
	Debug(ctx context.Context, msg string, fields map[string]interface{})
	// Trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息
	Trace(ctx context.Context, msg string, fields map[string]interface{})

	// SetLevel 设置日志级别
	SetLevel(level LogLevel)
	// SetCtxFielder 从context中获取上下文字段field
	SetCtxFielder(handler CtxFielder)
	// SetFormatter 设置输出格式
	SetFormatter(formatter Formatter)
	// SetOutput 设置输出管道
	SetOutput(out io.Writer)
}

Log 定义了日志服务协议

type LogLevel

type LogLevel uint32
const (
	// UnknownLevel 表示未知的日志级别
	UnknownLevel LogLevel = iota
	// PanicLevel level, panic 表示会导致整个程序出现崩溃的日志信息
	PanicLevel
	// FatalLevel level. fatal 表示会导致当前这个请求出现提前终止的错误信息
	FatalLevel
	// ErrorLevel level. error 表示出现错误,但是不一定影响后续请求逻辑的错误信息
	ErrorLevel
	// WarnLevel level. warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息
	WarnLevel
	// InfoLevel level. info 表示正常的日志信息输出
	InfoLevel
	// DebugLevel level. debug 表示在调试状态下打印出来的日志信息
	DebugLevel
	// TraceLevel level. trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息
	TraceLevel
)

type ORMService added in v1.0.0

type ORMService interface {
	GetDB(option ...DBOption) (*gorm.DB, error)

	// CanConnect 是否可以连接
	CanConnect(ctx context.Context, db *gorm.DB) (bool, error)

	// Table 相关
	GetTables(ctx context.Context, db *gorm.DB) ([]string, error)
	HasTable(ctx context.Context, db *gorm.DB, table string) (bool, error)
	GetTableColumns(ctx context.Context, db *gorm.DB, table string) ([]TableColumn, error)
}

ORMService 表示传入的参数

type RedisConfig added in v1.0.0

type RedisConfig struct {
	*redis.Options
}

RedisConfig 为ygo定义的Redis配置结构

func (*RedisConfig) UniqKey added in v1.0.0

func (config *RedisConfig) UniqKey() string

UniqKey 用来唯一标识一个RedisConfig配置

type RedisOption added in v1.0.0

type RedisOption func(container framework.Container, config *RedisConfig) error

RedisOption 代表初始化的时候的选项

type RedisService added in v1.0.0

type RedisService interface {
	// GetClient 获取redis连接实例
	GetClient(option ...RedisOption) (*redis.Client, error)
}

RedisService 表示一个redis服务

type RememberFunc added in v1.0.0

type RememberFunc func(ctx context.Context, container framework.Container) (interface{}, error)

RememberFunc 缓存的Remember方法使用,Cache-Aside模式对应的对象生成方法

type SSHConfig added in v1.0.0

type SSHConfig struct {
	NetWork string
	Host    string
	Port    string
	*ssh.ClientConfig
}

SSHConfig 为框架定义的SSH配置结构

func (*SSHConfig) UniqKey added in v1.0.0

func (config *SSHConfig) UniqKey() string

UniqKey 用来唯一标识一个SSHConfig配置

type SSHOption added in v1.0.0

type SSHOption func(container framework.Container, config *SSHConfig) error

SSHOption 代表初始化的时候的选项

type SSHService added in v1.0.0

type SSHService interface {
	// GetClient 获取ssh连接实例
	GetClient(option ...SSHOption) (*ssh.Client, error)
}

SSHService 表示一个ssh服务

type TableColumn added in v1.0.6

type TableColumn struct {
	Field   string `gorm:"column:Field"`
	Type    string `gorm:"column:Type"`
	Null    string `gorm:"column:Null"`
	Key     string `gorm:"column:key"`
	Default string `gorm:"column:Default"`
	Extra   string `gorm:"column:Extra"`
}

type Trace

type Trace interface {
	// WithContext register new trace to context
	WithTrace(c context.Context, trace *TraceContext) context.Context
	// GetTrace From trace context
	GetTrace(c context.Context) *TraceContext
	// NewTrace generate a new trace
	NewTrace() *TraceContext
	// StartSpan generate cspan for child call
	StartSpan(ctx context.Context) *TraceContext

	// traceContext to map for logger
	ToMap(trace *TraceContext) map[string]string

	// GetTrace By Http
	ExtractHTTP(req *http.Request) *TraceContext
	// Set Trace to Http
	InjectHTTP(req *http.Request, trace *TraceContext) *http.Request
}

type TraceContext

type TraceContext struct {
	TraceID  string // traceID global unique
	ParentID string // 父节点SpanID
	SpanID   string // 当前节点SpanID
	CspanID  string // 子节点调用的SpanID, 由调用方指定

	Annotation map[string]string // 标记各种信息
}

Trace define struct according Google Dapper

Jump to

Keyboard shortcuts

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