GAAS GFrame项目web后台
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.

195 lines
5.3 KiB

package models
import (
"LAPP_GAAS_GFrame_BACKEND/conf"
"LAPP_GAAS_GFrame_BACKEND/db"
"LAPP_GAAS_GFrame_BACKEND/utils"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"context"
)
//数据库
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.DbConfig.Mongdbname).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.DbConfig.Mongdbname).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.DbConfig.Mongdbname).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 {
fmt.Println(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 {
fmt.Println(err)
return nil, 0
}
//追加
records = append(records, record)
}
// 获取数据总数
count, err := collect.CountDocuments(context.Background(), bson.D{})
if err != nil {
log.Fatal(count)
}
return records, count
}
func (t *Database) FindData() []*Database {
res := bson.M{}
// 创建需要过滤的条件
if !utils.ValueIsEmpty(t.Sourcetype) {
res = bson.M{"sourcetype": primitive.Regex{Pattern: t.Sourcetype}}
}
limit := int64(500)
skip := int64(0)
//1.初始化链接
client := db.MgoDb()
//2.选择数据库,数据表
collect := client.Database(conf.DbConfig.Mongdbname).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}},
})
fmt.Println(cursor)
if err != nil {
return nil
}
defer cursor.Close(context.TODO())
//创建需要反序列化成什么样子的结构体对象
records := make([]*Database, 0)
for cursor.Next(context.TODO()) {
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.DbConfig.Mongdbname).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.DbConfig.Mongdbname).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
}