From 8a9759f66e45741da4cedde37c9401b0f941a2a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Jurmanovi=C4=87?= Date: Tue, 25 May 2021 21:36:41 +0200 Subject: [PATCH] added migration route --- pkg/controllers/api.go | 12 ++++++++++++ pkg/migrate/migrate.go | 14 ++++++++------ pkg/migrate/migrations/api.go | 4 +++- pkg/migrate/migrations/transactionTypes.go | 4 +++- pkg/migrate/migrations/transactions.go | 4 +++- pkg/migrate/migrations/users.go | 4 +++- pkg/migrate/migrations/wallets.go | 4 +++- pkg/services/api.go | 15 +++++++++++++++ 8 files changed, 50 insertions(+), 11 deletions(-) diff --git a/pkg/controllers/api.go b/pkg/controllers/api.go index cc90334..5215a5c 100644 --- a/pkg/controllers/api.go +++ b/pkg/controllers/api.go @@ -1,6 +1,7 @@ package controllers import ( + "wallet-api/pkg/middleware" "wallet-api/pkg/services" "github.com/gin-gonic/gin" @@ -15,6 +16,7 @@ func NewApiController(as *services.ApiService, s *gin.RouterGroup) *ApiControlle ac.ApiService = as s.GET("", ac.getFirst) + s.POST("migrate", middleware.Auth, ac.postMigrate) return ac } @@ -23,3 +25,13 @@ func (ac *ApiController) getFirst(c *gin.Context) { apiModel := ac.ApiService.GetFirst() c.JSON(200, apiModel) } + +func (ac *ApiController) postMigrate(c *gin.Context) { + mr, er := ac.ApiService.PostMigrate() + + if er.Message != "" { + c.JSON(er.StatusCode, er) + } else { + c.JSON(200, mr) + } +} diff --git a/pkg/migrate/migrate.go b/pkg/migrate/migrate.go index 4730d6a..1444d6e 100644 --- a/pkg/migrate/migrate.go +++ b/pkg/migrate/migrate.go @@ -6,16 +6,18 @@ import ( "github.com/go-pg/pg/v10" ) -func Start(conn *pg.DB) { +func Start(conn *pg.DB) error { apiMigration := migrations.ApiMigration{Db: conn} usersMigration := migrations.UsersMigration{Db: conn} walletsMigration := migrations.WalletsMigration{Db: conn} transactionTypesMigration := migrations.TransactionTypesMigration{Db: conn} transactionsMigration := migrations.TransactionsMigration{Db: conn} - apiMigration.Create() - usersMigration.Create() - walletsMigration.Create() - transactionTypesMigration.Create() - transactionsMigration.Create() + err := apiMigration.Create() + err = usersMigration.Create() + err = walletsMigration.Create() + err = transactionTypesMigration.Create() + err = transactionsMigration.Create() + + return err } diff --git a/pkg/migrate/migrations/api.go b/pkg/migrate/migrations/api.go index 63aec51..cf4ff3c 100644 --- a/pkg/migrate/migrations/api.go +++ b/pkg/migrate/migrations/api.go @@ -13,7 +13,7 @@ type ApiMigration struct { Db *pg.DB } -func (am *ApiMigration) Create() { +func (am *ApiMigration) Create() error { models := []interface{}{ (*models.ApiModel)(nil), } @@ -24,8 +24,10 @@ func (am *ApiMigration) Create() { }) if err != nil { log.Printf("Error Creating Table: %s", err) + return err } else { fmt.Println("Table created successfully") } } + return nil } diff --git a/pkg/migrate/migrations/transactionTypes.go b/pkg/migrate/migrations/transactionTypes.go index 5e16c8b..2146178 100644 --- a/pkg/migrate/migrations/transactionTypes.go +++ b/pkg/migrate/migrations/transactionTypes.go @@ -13,7 +13,7 @@ type TransactionTypesMigration struct { Db *pg.DB } -func (am *TransactionTypesMigration) Create() { +func (am *TransactionTypesMigration) Create() error { models := []interface{}{ (*models.TransactionType)(nil), } @@ -25,8 +25,10 @@ func (am *TransactionTypesMigration) Create() { }) if err != nil { log.Printf("Error Creating Table: %s", err) + return err } else { fmt.Println("Table created successfully") } } + return nil } diff --git a/pkg/migrate/migrations/transactions.go b/pkg/migrate/migrations/transactions.go index 4df2047..e6163c8 100644 --- a/pkg/migrate/migrations/transactions.go +++ b/pkg/migrate/migrations/transactions.go @@ -13,7 +13,7 @@ type TransactionsMigration struct { Db *pg.DB } -func (am *TransactionsMigration) Create() { +func (am *TransactionsMigration) Create() error { models := []interface{}{ (*models.Transaction)(nil), } @@ -25,8 +25,10 @@ func (am *TransactionsMigration) Create() { }) if err != nil { log.Printf("Error Creating Table: %s", err) + return err } else { fmt.Println("Table created successfully") } } + return nil } diff --git a/pkg/migrate/migrations/users.go b/pkg/migrate/migrations/users.go index 467d108..5d079cb 100644 --- a/pkg/migrate/migrations/users.go +++ b/pkg/migrate/migrations/users.go @@ -13,7 +13,7 @@ type UsersMigration struct { Db *pg.DB } -func (am *UsersMigration) Create() { +func (am *UsersMigration) Create() error { models := []interface{}{ (*models.User)(nil), } @@ -24,8 +24,10 @@ func (am *UsersMigration) Create() { }) if err != nil { log.Printf("Error Creating Table: %s", err) + return err } else { fmt.Println("Table created successfully") } } + return nil } diff --git a/pkg/migrate/migrations/wallets.go b/pkg/migrate/migrations/wallets.go index e930034..d425002 100644 --- a/pkg/migrate/migrations/wallets.go +++ b/pkg/migrate/migrations/wallets.go @@ -13,7 +13,7 @@ type WalletsMigration struct { Db *pg.DB } -func (am *WalletsMigration) Create() { +func (am *WalletsMigration) Create() error { models := []interface{}{ (*models.Wallet)(nil), } @@ -25,8 +25,10 @@ func (am *WalletsMigration) Create() { }) if err != nil { log.Printf("Error Creating Table: %s", err) + return err } else { fmt.Println("Table created successfully") } } + return nil } diff --git a/pkg/services/api.go b/pkg/services/api.go index a2a58d7..77f8b5c 100644 --- a/pkg/services/api.go +++ b/pkg/services/api.go @@ -1,6 +1,7 @@ package services import ( + "wallet-api/pkg/migrate" "wallet-api/pkg/models" "github.com/go-pg/pg/v10" @@ -15,3 +16,17 @@ func (as *ApiService) GetFirst() models.ApiModel { as.Db.Model(&apiModel).First() return apiModel } + +func (as *ApiService) PostMigrate() (*models.MessageResponse, *models.Exception) { + mr := new(models.MessageResponse) + er := new(models.Exception) + + err := migrate.Start(as.Db) + if err != nil { + er.ErrorCode = "400999" + er.StatusCode = 400 + er.Message = err.Error() + } + + return mr, er +}