func New(path string) (*DB, error) {
	bolt, err := bbolt.Open(path, 0666, nil)
	if err != nil {
		return nil, errors.New("Unable to open DB file")
	}
	db := &DB{
		path:        path,
		collections: make(map[string]*Col),
		bolt:        bolt,
		mu:          &sync.Mutex{},
	}
	err = db.createBucket("main")
	if err != nil {
		return nil, err
	}
	return db, nil
}
New returns a new db object
package lyte
import (
	"bytes"
	"encoding/gob"
	"errors"
	"fmt"
	"reflect"
	"sync"
	"go.etcd.io/bbolt"
)
type DB struct {
	path        string
	collections map[string]*Col
	bolt        *bbolt.DB
	mu          *sync.Mutex
}