github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edge/pkg/common/dbm/db.go (about)

     1  package dbm
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/astaxie/beego/orm"
     7  
     8  	//Blank import to run only the init function
     9  	_ "github.com/mattn/go-sqlite3"
    10  	"k8s.io/klog"
    11  )
    12  
    13  // DBAccess is Ormer object interface for all transaction processing and switching database
    14  var DBAccess orm.Ormer
    15  var once sync.Once
    16  
    17  // InitDBConfig Init DB info
    18  func InitDBConfig(driverName, dbName, dataSource string) {
    19  	once.Do(func() {
    20  		if err := orm.RegisterDriver(driverName, orm.DRSqlite); err != nil {
    21  			klog.Fatalf("Failed to register driver: %v", err)
    22  		}
    23  		if err := orm.RegisterDataBase(
    24  			dbName,
    25  			driverName,
    26  			dataSource); err != nil {
    27  			klog.Fatalf("Failed to register db: %v", err)
    28  		}
    29  		// sync database schema
    30  		if err := orm.RunSyncdb(dbName, false, true); err != nil {
    31  			klog.Errorf("run sync db error %v", err)
    32  		}
    33  		// create orm
    34  		DBAccess = orm.NewOrm()
    35  		if err := DBAccess.Using(dbName); err != nil {
    36  			klog.Errorf("Using db access error %v", err)
    37  		}
    38  	})
    39  }