diff --git a/mongox/tempdb/tempdb.go b/mongox/tempdb/tempdb.go new file mode 100644 index 0000000..802396a --- /dev/null +++ b/mongox/tempdb/tempdb.go @@ -0,0 +1,35 @@ +package tempdb + +import ( + "context" + "math/rand" + "strconv" + + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + + "github.com/mainnika/mongox-go-driver/mongox" + "github.com/mainnika/mongox-go-driver/mongox/database" +) + +// TempDB is a temporary database connection that will be destroyed after close +type TempDB struct { + mongox.Database +} + +// NewTempDB creates new mongo connection +func NewTempDB(URI string) (tempdb *TempDB, err error) { + + name := strconv.Itoa(rand.Int()) + opts := options.Client().ApplyURI(URI) + client, err := mongo.Connect(context.Background(), opts) + + tempdb = &TempDB{Database: database.NewDatabase(client, name)} + + return +} + +// Close the connection and drop database +func (tdb *TempDB) Close() { + _ = tdb.Client().Database(tdb.Name()).Drop(tdb.Context()) +}