package models
|
|
|
|
import (
|
|
"LAPP_SJA_ME/conf"
|
|
"LAPP_SJA_ME/db"
|
|
"LAPP_SJA_ME/web/middleware/glog"
|
|
"context"
|
|
"fmt"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
//数据库
|
|
type Database struct {
|
|
ID int `bson:"id" json:"database-id"` //ID:uuid唯一字符串
|
|
DbName string `bson:"dbname" json:"database-dbname"` //数据库名称
|
|
DriverName string `bson:"drivername" json:"database-drivername"` //引擎类型
|
|
Host string `bson:"host" json:"database-host"` //链接地址
|
|
Port int `bson:"port" json:"database-port"` //端口号
|
|
User string `bson:"user" json:"database-user"` //用户名
|
|
Pwd string `bson:"pwd" json:"database-pwd"` //密码
|
|
Sourcetype string `bson:"sourcetype" json:"database-sourcetype"` //主库和从库
|
|
}
|
|
|
|
func (t *Database) TableName() string {
|
|
return "database"
|
|
}
|
|
|
|
func (t *Database) InsertRecord() (insertID primitive.ObjectID) {
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
insertRest, err := collect.InsertOne(context.TODO(), t)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
insertID = insertRest.InsertedID.(primitive.ObjectID)
|
|
return insertID
|
|
}
|
|
|
|
func (t *Database) UpdateData() error {
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
|
|
// 修改一条数据,如果不存在则插入
|
|
new := &Database{
|
|
ID: t.ID,
|
|
DbName: t.DbName,
|
|
DriverName: t.DriverName,
|
|
Host: t.Host,
|
|
Port: t.Port,
|
|
User: t.User,
|
|
Pwd: t.Pwd,
|
|
Sourcetype: t.Sourcetype,
|
|
}
|
|
update := bson.M{"$set": new}
|
|
_, err := collect.UpdateOne(context.Background(), bson.M{"dbname": new.DbName, "drivername": new.DriverName}, update)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (t *Database) FindList(logred SerchData, skip int64, limit int64) ([]*Database, int64) {
|
|
res := bson.M{}
|
|
// 创建需要过滤的条件
|
|
if logred.Key == "dbname" {
|
|
res = bson.M{"dbname": primitive.Regex{Pattern: logred.Val}}
|
|
}
|
|
if logred.Key == "drivername" {
|
|
res = bson.M{"drivername": primitive.Regex{Pattern: logred.Val}}
|
|
}
|
|
if logred.Key == "host" {
|
|
res = bson.M{"host": primitive.Regex{Pattern: logred.Val}}
|
|
}
|
|
res = bson.M{"sourcetype": primitive.Regex{Pattern: "Slave"}}
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
|
|
//var skip int64 = 0//从那个开始
|
|
//var limit int64 = 2//炼制几个输出字段
|
|
cursor, err := collect.Find(context.TODO(), res, &options.FindOptions{
|
|
Skip: &skip,
|
|
Limit: &limit,
|
|
Sort: bson.D{{"id", -1}},
|
|
})
|
|
|
|
if err != nil {
|
|
glog.InfoExtln("database", "database err1 is :", err)
|
|
return nil, 0
|
|
}
|
|
defer cursor.Close(context.TODO())
|
|
//创建需要反序列化成什么样子的结构体对象
|
|
records := make([]*Database, 0)
|
|
for cursor.Next(context.TODO()) {
|
|
record := &Database{}
|
|
//反序列化
|
|
err = cursor.Decode(record)
|
|
if err != nil {
|
|
glog.InfoExtln("database", "database err2 is :", err)
|
|
return nil, 0
|
|
}
|
|
//追加
|
|
records = append(records, record)
|
|
}
|
|
// 获取数据总数
|
|
count, err := collect.CountDocuments(context.Background(), bson.D{})
|
|
if err != nil {
|
|
glog.InfoExtln("database", "database err3 is :", err)
|
|
return nil, 0
|
|
}
|
|
return records, count
|
|
}
|
|
|
|
func (t *Database) FindData() []Database {
|
|
limit := int64(500)
|
|
skip := int64(0)
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
|
|
//var skip int64 = 0//从那个开始
|
|
//var limit int64 = 2//炼制几个输出字段
|
|
cursor, err := collect.Find(context.TODO(), bson.D{
|
|
}, &options.FindOptions{
|
|
Skip: &skip,
|
|
Limit: &limit,
|
|
Sort: bson.D{{"id", 1}},
|
|
})
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
defer cursor.Close(context.TODO())
|
|
//创建需要反序列化成什么样子的结构体对象
|
|
records := make([]Database, 0)
|
|
for cursor.Next(context.TODO()) {
|
|
var record Database
|
|
//反序列化
|
|
err = cursor.Decode(&record)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return nil
|
|
}
|
|
//追加
|
|
records = append(records, record)
|
|
}
|
|
return records
|
|
}
|
|
|
|
func (t *Database) FindOne() (Database, error) {
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
record := Database{}
|
|
err := collect.FindOne(context.Background(), bson.M{"dbname": t.DbName, "drivername": t.DriverName}).Decode(&record)
|
|
|
|
if err != nil {
|
|
return record, err
|
|
}
|
|
|
|
return record, nil
|
|
}
|
|
|
|
func (t *Database) DelData() error {
|
|
//1.初始化链接
|
|
client := db.MgoDb()
|
|
//2.选择数据库,数据表
|
|
collect := client.Database(conf.MongDbConfig.DbName).Collection("database")
|
|
|
|
// 修改一条数据,如果不存在则插入
|
|
new := &Database{
|
|
DbName: t.DbName,
|
|
DriverName: t.DriverName,
|
|
}
|
|
// 删除一条数据
|
|
_, err := collect.DeleteOne(context.Background(), bson.M{"dbname": new.DbName, "drivername": new.DriverName})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|