Merge "mecm-mepm uninstall playbook added"
[ealt-edge.git] / mecm / mepm / applcm / broker / pkg / handlers / adapter / dbAdapter / dbAdapter.go
index 2e527ec..23fb49e 100644 (file)
@@ -19,80 +19,111 @@ import (
        "broker/pkg/handlers/model"
        "fmt"
        "github.com/jinzhu/gorm"
-       "net/http"
+       _ "github.com/jinzhu/gorm/dialects/postgres"
+       "github.com/sirupsen/logrus"
+       "os"
 )
 
-func InsertAppInstanceInfo(db *gorm.DB, n model.AppInstanceInfo) {
-       fmt.Printf("Insert App Instance Info (%v, %T)\n", n, n)
-       db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
+var (
+       username = os.Getenv("POSTGRES_USER")
+       password = os.Getenv("POSTGRES_PASSWORD")
+       dbName = os.Getenv("POSTGRES_DATABASE")
+       dbHost = os.Getenv("DBHOST")
+
+)
+
+// Database adapter
+type DbAdapter struct {
+       logger *logrus.Logger
+       db     *gorm.DB
+}
+
+func NewDbAdapter(logger *logrus.Logger) *DbAdapter {
+       return &DbAdapter{logger: logger}
+}
+
+// Creates database
+func (adapter *DbAdapter) CreateDatabase() {
+       adapter.logger.Infof("creating Database...")
+
+       dbUri := fmt.Sprintf("host=%s user=%s dbname=%s sslmode=disable password=%s", dbHost, username, dbName, password) //Build connection string
+
+       conn, err := gorm.Open("postgres", dbUri)
+       if err != nil {
+               fmt.Print(err)
+       }
+
+       db := conn
+       db.AutoMigrate(&model.AppPackageInfo{})
+       db.AutoMigrate(&model.AppInstanceInfo{})
+       adapter.db = db
+}
+
+func (adapter *DbAdapter) InsertAppInstanceInfo(n model.AppInstanceInfo) {
+       adapter.logger.Infof("Insert App Instance Info (%v, %T)\n", n, n)
+       adapter.db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
                AppDID: n.AppDID, AppProvider: n.AppProvider, AppName: n.AppName, AppSoftVersion: n.AppSoftVersion, AppDVersion: n.AppDVersion, AppPkgID: n.AppPkgID, InstantiationState: n.InstantiationState})
 
-       fmt.Printf("Inserting Done")
+       adapter.logger.Infof("Inserting Done")
 }
 
-func GetAppInstanceInfo(db *gorm.DB, key string) (appInstInfo model.AppInstanceInfo) {
-       fmt.Printf("Get App Instance Info %s", key)
+func (adapter *DbAdapter) GetAppInstanceInfo(key string) (appInstInfo model.AppInstanceInfo) {
+       adapter.logger.Infof("Get App Instance Info %s", key)
        var appInstanceInfo model.AppInstanceInfo
-       returnVal := db.First(&appInstanceInfo, "id=?", key).Error
-       if returnVal !=  nil {
+       returnVal := adapter.db.First(&appInstanceInfo, "id=?", key).Error
+       if returnVal != nil {
                return
        }
 
        return appInstanceInfo
 }
 
-func UpdateAppInstanceInfoInstStatusHostAndWorkloadId(db *gorm.DB, id string, instantiationState string, host string, workloadId string) {
-       fmt.Printf("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
+func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusHostAndWorkloadId(id string, instantiationState string, host string, workloadId string) {
+       adapter.logger.Infof("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
 
        var appInstInfo model.AppInstanceInfo
-       db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
-       fmt.Printf("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
+       adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
+       adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
                appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
 
-       fmt.Printf("Update Done")
+       adapter.logger.Infof("Update Done")
 }
 
-func UpdateAppInstanceInfoInstStatusAndWorkload(db *gorm.DB, id string, instantiationState string, workloadId string) {
-       fmt.Printf("update DB (%v, %T)\n", id, instantiationState)
+func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusAndWorkload(id string, instantiationState string, workloadId string) {
+       adapter.logger.Infof("update DB (%v, %T)\n", id, instantiationState)
 
        var appInstInfo model.AppInstanceInfo
-       db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
-       fmt.Printf("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
+       adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
+       adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
                appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
-       fmt.Printf("Update Done")
+       adapter.logger.Infof("Update Done")
 }
 
-func UpdateAppInstanceInfoHost(db *gorm.DB, w http.ResponseWriter, id string, host string) {
+func (adapter *DbAdapter) DeleteAppInstanceInfo(key string) {
+       adapter.db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
+       adapter.logger.Infof("Delete App Instance Info: $s", key)
 }
 
-func DeleteAppInstanceInfo(db *gorm.DB, key string) {
-
-       db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
-
-       fmt.Println("Delete App Instance Info: $s", key)
-}
-
-func InsertAppPackageInfo(db *gorm.DB, n model.AppPackageInfo) {
-       fmt.Printf("Insert App Package Info (%v, %T)\n", n, n)
-       db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
+func (adapter *DbAdapter) InsertAppPackageInfo(n model.AppPackageInfo) {
+       adapter.logger.Infof("Insert App Package Info (%v, %T)\n", n, n)
+       adapter.db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
                AppName: n.AppName, AppSoftwareVersion: n.AppSoftwareVersion, AppDVersion: n.AppDVersion,
                OnboardingState: n.OnboardingState, DeployType: n.DeployType, AppPackage: n.AppPackage})
-
-       fmt.Printf("Inserting done")
+       adapter.logger.Infof("Inserting done")
 }
 
-func GetAppPackageInfo(db *gorm.DB, key string) (appPackageInfo model.AppPackageInfo) {
-       fmt.Printf("Get App Package Info: %s", key)
+func (adapter *DbAdapter) GetAppPackageInfo(key string) (appPackageInfo model.AppPackageInfo) {
+       adapter.logger.Infof("Get App Package Info: %s", key)
        var appPkgInfo model.AppPackageInfo
-       err := db.First(&appPkgInfo, "id=?", key).Error
-       if err !=  nil {
+       err := adapter.db.First(&appPkgInfo, "id=?", key).Error
+       if err != nil {
                return
        }
        return appPkgInfo
 }
 
-func DeleteAppPackageInfo(db *gorm.DB, key string) {
-       fmt.Printf("Delete App Package Info: %s", key)
-       db.Where("id=?", key).Delete(&model.AppPackageInfo{})
-       fmt.Println("Delete App Package Info: $s", key)
+func (adapter *DbAdapter) DeleteAppPackageInfo(key string) {
+       adapter.logger.Infof("Delete App Package Info: %s", key)
+       adapter.db.Where("id=?", key).Delete(&model.AppPackageInfo{})
+       adapter.logger.Infof("Delete App Package Info: $s", key)
 }