You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
3.4 KiB

package model
import (
"database/sql/driver"
"encoding/json"
mapset "github.com/deckarep/golang-set"
"time"
)
type ListenServer struct {
Port int `yaml:"Port"` //Server监听端口
ReadTimeOut time.Duration `yaml:"ReadTimeOut"` //Tcp 读超时时间
WriteTimeOut time.Duration `yaml:"WriteTimeOut"` //Tcp 写超时时间
}
type Redis struct {
Type string `yaml:"Type"`
Host string `yaml:"Host"`
Port string `yaml:"Port"`
PassWord string `yaml:"PassWord"`
Name int `yaml:"Name"`
MaxIdle int `yaml:"MaxIdle"`
MaxActive int `yaml:"MaxActive"`
ReadTimeout time.Duration `yaml:"ReadTimeout"`
WriteTimeout time.Duration `yaml:"WriteTimeout"`
ConnectTimeout time.Duration `yaml:"ConnectTimeout"`
IdleTimeout time.Duration `yaml:"IdleTimeout"`
}
type Rds struct {
Host string `yaml:"Host"`
Port int `yaml:"Port"`
User string `yaml:"User"`
Name string `yaml:"Name"`
PassWord string `yaml:"PassWord"`
CharSet string `yaml:"CharSet"`
MaxIdleConns int `yaml:"MaxIdleConns"`
MaxOpenConns int `yaml:"MaxOpenConns"`
SlowThreshold int `yaml:"SlowThreshold"`
}
//type RMq struct {
// Type string `yaml:"Type"`
// Host string `yaml:"Host"`
// Port int `yaml:"Port"`
// User string `yaml:"User"`
// PassWord string `yaml:"PassWord"`
//}
type Arry []int64
func (j *Arry) Scan(value interface{}) error {
return json.Unmarshal(value.([]byte), &j)
}
func (j Arry) Value() (driver.Value, error) {
return json.Marshal(j)
}
func (j Arry) Set() mapset.Set {
s1 := mapset.NewSet()
for _, item := range j {
s1.Add(item)
}
return s1
}
func (j Arry) SetToValue(s1 mapset.Set) Arry {
s2 := Arry{}
for _, item := range s1.ToSlice() {
s2 = append(s2, item.(int64))
}
return s2
}
func (j Arry) ToInt64() []int64 {
s1 := []int64{}
for _, item := range j {
s1 = append(s1, item)
}
return s1
}
func (j Arry) Of(id int64) bool {
for _, item := range j {
if item == id {
return true
}
}
return false
}
type ArryString []string
func (j *ArryString) Scan(value interface{}) error {
return json.Unmarshal(value.([]byte), &j)
}
func (j ArryString) Value() (driver.Value, error) {
return json.Marshal(j)
}
func (j ArryString) Set() mapset.Set {
s1 := mapset.NewSet()
for _, item := range j {
s1.Add(item)
}
return s1
}
func (j ArryString) SetToValue(s1 mapset.Set) ArryString {
s2 := ArryString{}
for _, item := range s1.ToSlice() {
s2 = append(s2, item.(string))
}
return s2
}
func (j ArryString) ToString() []string {
s1 := []string{}
for _, item := range j {
s1 = append(s1, item)
}
return s1
}
func (j ArryString) Of(id string) bool {
for _, item := range j {
if item == id {
return true
}
}
return false
}
func (j *ArryString) Add(id string) *ArryString {
*j = append(*j, id)
return j
}
func (j *ArryString) Remove(id string) *ArryString {
// 如果未找到要移除的元素,直接返回原数组
return j
}
type JSON map[string]interface{}
func (j *JSON) Scan(value interface{}) error {
return json.Unmarshal(value.([]byte), &j)
}
func (j JSON) Value() (driver.Value, error) {
return json.Marshal(j)
}
type RouterMethod struct {
Name string
Path string
Params interface{}
Method string
Leaf bool // 是否叶子节点
F interface{}
Child []*RouterMethod
}