mirror-nourybot/pkg/db/connect.go
2021-10-25 23:46:27 +02:00

81 lines
1.4 KiB
Go

package db
import (
"context"
"fmt"
"time"
"github.com/lyx0/nourybot/pkg/config"
log "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func Connect() {
conf := config.LoadConfig()
client, err := mongo.NewClient(options.Client().ApplyURI(conf.MongoURI))
if err != nil {
log.Fatal(err)
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
/*
List databases
*/
databases, err := client.ListDatabaseNames(ctx, bson.M{})
if err != nil {
log.Fatal(err)
}
fmt.Println(databases)
// Interact with data
type Channel struct {
Name string `bson:"name,omitempty"`
}
/*
Get my collection instance
*/
collection := client.Database("nourybot").Collection("channels")
/*
Insert channel
*/
chnl := []interface{}{
bson.D{{"channel", "nouryqt"}},
bson.D{{"channel", "nourybot"}},
}
res, insertErr := collection.InsertMany(ctx, chnl)
if insertErr != nil {
log.Fatal(insertErr)
}
log.Info(res)
/*
Iterate a cursor
*/
cur, currErr := collection.Find(ctx, bson.D{})
if currErr != nil {
panic(currErr)
}
defer cur.Close(ctx)
var channels []Channel
if err = cur.All(ctx, &channels); err != nil {
panic(err)
}
log.Info(channels)
}