diff --git a/cmd/api/__debug_bin b/cmd/api/__debug_bin new file mode 100755 index 0000000..14319ce Binary files /dev/null and b/cmd/api/__debug_bin differ diff --git a/pkg/controllers/api.go b/pkg/controllers/api.go index 35c586b..2598cfe 100644 --- a/pkg/controllers/api.go +++ b/pkg/controllers/api.go @@ -11,6 +11,7 @@ type ApiController struct { ApiService *services.ApiService } +// Initializes ApiController. func NewApiController(as *services.ApiService, s *gin.RouterGroup) *ApiController { ac := new(ApiController) ac.ApiService = as @@ -21,11 +22,15 @@ func NewApiController(as *services.ApiService, s *gin.RouterGroup) *ApiControlle return ac } +// ROUTE (GET /api). func (ac *ApiController) getFirst(c *gin.Context) { apiModel := ac.ApiService.GetFirst(c) c.JSON(200, apiModel) } +// ROUTE (POST /api/migrate). +// +// Requires "SECRET_CODE", "VERSION" (optional) from body. func (ac *ApiController) postMigrate(c *gin.Context) { migrateModel := c.MustGet("migrate") version := migrateModel.(middleware.SecretCodeModel).Version diff --git a/pkg/controllers/auth.go b/pkg/controllers/auth.go index b732974..d098dbf 100644 --- a/pkg/controllers/auth.go +++ b/pkg/controllers/auth.go @@ -13,6 +13,7 @@ type AuthController struct { UsersService *services.UsersService } +// Initializes AuthController. func NewAuthController(rs *services.UsersService, s *gin.RouterGroup) *AuthController { rc := new(AuthController) rc.UsersService = rs @@ -25,6 +26,7 @@ func NewAuthController(rs *services.UsersService, s *gin.RouterGroup) *AuthContr return rc } +// ROUTE (POST /auth/login). func (rc *AuthController) PostLogin(c *gin.Context) { body := new(models.Login) if err := c.ShouldBind(&body); err != nil { @@ -40,6 +42,7 @@ func (rc *AuthController) PostLogin(c *gin.Context) { } } +// ROUTE (POST /auth/register). func (rc *AuthController) PostRegister(c *gin.Context) { body := new(models.User) body.Init() @@ -56,6 +59,8 @@ func (rc *AuthController) PostRegister(c *gin.Context) { c.JSON(200, returnedUser.Payload()) } } + +// ROUTE (DELETE /auth/deactivate). func (rc *AuthController) Delete(c *gin.Context) { auth := new(models.Auth) authGet := c.MustGet("auth") @@ -70,6 +75,7 @@ func (rc *AuthController) Delete(c *gin.Context) { } } +// ROUTE (GET /auth/check-token). func (rc *AuthController) CheckToken(c *gin.Context) { token, _ := c.GetQuery("token") re := new(models.CheckToken) diff --git a/pkg/controllers/controllers.go b/pkg/controllers/controllers.go index b42cf6d..ebbbb55 100644 --- a/pkg/controllers/controllers.go +++ b/pkg/controllers/controllers.go @@ -10,6 +10,7 @@ import ( "github.com/gin-gonic/gin" ) +// Gets query parameters and populates FilteredResponse model. func FilteredResponse(c *gin.Context) *models.FilteredResponse { filtered := new(models.FilteredResponse) page, _ := c.GetQuery("page") diff --git a/pkg/controllers/subscriptionTypes.go b/pkg/controllers/subscriptionTypes.go index cf120fe..bd8c262 100644 --- a/pkg/controllers/subscriptionTypes.go +++ b/pkg/controllers/subscriptionTypes.go @@ -12,6 +12,7 @@ type SubscriptionTypeController struct { SubscriptionTypeService *services.SubscriptionTypeService } +// Initializes SubscriptionTypeController. func NewSubscriptionTypeController(as *services.SubscriptionTypeService, s *gin.RouterGroup) *SubscriptionTypeController { wc := new(SubscriptionTypeController) wc.SubscriptionTypeService = as @@ -22,6 +23,7 @@ func NewSubscriptionTypeController(as *services.SubscriptionTypeService, s *gin. return wc } +// ROUTE (POST /subscription-types) func (wc *SubscriptionTypeController) New(c *gin.Context) { body := new(models.NewSubscriptionTypeBody) if err := c.ShouldBind(body); err != nil { @@ -33,6 +35,7 @@ func (wc *SubscriptionTypeController) New(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /subscription-types) func (wc *SubscriptionTypeController) GetAll(c *gin.Context) { embed, _ := c.GetQuery("embed") diff --git a/pkg/controllers/subscriptions.go b/pkg/controllers/subscriptions.go index fd41880..849cacf 100644 --- a/pkg/controllers/subscriptions.go +++ b/pkg/controllers/subscriptions.go @@ -12,6 +12,7 @@ type SubscriptionController struct { SubscriptionService *services.SubscriptionService } +// Initializes SubscriptionController. func NewSubscriptionController(as *services.SubscriptionService, s *gin.RouterGroup) *SubscriptionController { wc := new(SubscriptionController) wc.SubscriptionService = as @@ -21,14 +22,15 @@ func NewSubscriptionController(as *services.SubscriptionService, s *gin.RouterGr s.GET("/:id", wc.Get) s.GET("", wc.GetAll) - se := s.Group("/end") + se := s.Group("/end") { - se.POST("", wc.End) + se.PUT("/:id", wc.End) } return wc } +// ROUTE (POST /subscription) func (wc *SubscriptionController) New(c *gin.Context) { body := new(models.NewSubscriptionBody) if err := c.ShouldBind(body); err != nil { @@ -40,6 +42,7 @@ func (wc *SubscriptionController) New(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (PUT /subscription/:id) func (wc *SubscriptionController) Edit(c *gin.Context) { body := new(models.SubscriptionEdit) if err := c.ShouldBind(body); err != nil { @@ -53,6 +56,7 @@ func (wc *SubscriptionController) Edit(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /subscription/:id) func (wc *SubscriptionController) Get(c *gin.Context) { body := new(models.Auth) params := new(models.Params) @@ -70,6 +74,7 @@ func (wc *SubscriptionController) Get(c *gin.Context) { c.JSON(200, fr) } +// ROUTE (PUT /subscription/end/:id) func (wc *SubscriptionController) End(c *gin.Context) { body := new(models.Auth) @@ -82,13 +87,14 @@ func (wc *SubscriptionController) End(c *gin.Context) { return } - id := end.Id + id := c.Param("id") fr := wc.SubscriptionService.End(c, id) c.JSON(200, fr) } +// ROUTE (GET /subscription) func (wc *SubscriptionController) GetAll(c *gin.Context) { body := new(models.Auth) auth := c.MustGet("auth") diff --git a/pkg/controllers/transactionTypes.go b/pkg/controllers/transactionTypes.go index f8d7288..4015700 100644 --- a/pkg/controllers/transactionTypes.go +++ b/pkg/controllers/transactionTypes.go @@ -12,6 +12,7 @@ type TransactionTypeController struct { TransactionTypeService *services.TransactionTypeService } +// Initializes TransactionTypeController. func NewTransactionTypeController(as *services.TransactionTypeService, s *gin.RouterGroup) *TransactionTypeController { wc := new(TransactionTypeController) wc.TransactionTypeService = as @@ -22,6 +23,7 @@ func NewTransactionTypeController(as *services.TransactionTypeService, s *gin.Ro return wc } +// ROUTE (POST /transaction-types) func (wc *TransactionTypeController) New(c *gin.Context) { body := new(models.NewTransactionTypeBody) if err := c.ShouldBind(body); err != nil { @@ -33,6 +35,7 @@ func (wc *TransactionTypeController) New(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /transaction-types) func (wc *TransactionTypeController) GetAll(c *gin.Context) { embed, _ := c.GetQuery("embed") diff --git a/pkg/controllers/transactions.go b/pkg/controllers/transactions.go index 540751d..b44f918 100644 --- a/pkg/controllers/transactions.go +++ b/pkg/controllers/transactions.go @@ -12,6 +12,7 @@ type TransactionController struct { TransactionService *services.TransactionService } +// Initializes TransactionController. func NewTransactionController(as *services.TransactionService, s *gin.RouterGroup) *TransactionController { wc := new(TransactionController) wc.TransactionService = as @@ -24,6 +25,7 @@ func NewTransactionController(as *services.TransactionService, s *gin.RouterGrou return wc } +// ROUTE (POST /transactions) func (wc *TransactionController) New(c *gin.Context) { body := new(models.NewTransactionBody) if err := c.ShouldBind(body); err != nil { @@ -35,6 +37,7 @@ func (wc *TransactionController) New(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /transactions) func (wc *TransactionController) GetAll(c *gin.Context) { body := new(models.Auth) auth := c.MustGet("auth") @@ -48,6 +51,7 @@ func (wc *TransactionController) GetAll(c *gin.Context) { c.JSON(200, fr) } +// ROUTE (PUT /transactions/:id) func (wc *TransactionController) Edit(c *gin.Context) { body := new(models.TransactionEdit) if err := c.ShouldBind(body); err != nil { @@ -61,6 +65,7 @@ func (wc *TransactionController) Edit(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /transactions/:id) func (wc *TransactionController) Get(c *gin.Context) { body := new(models.Auth) params := new(models.Params) diff --git a/pkg/controllers/wallets-header.go b/pkg/controllers/wallets-header.go index 638dbf4..5c2ef1a 100644 --- a/pkg/controllers/wallets-header.go +++ b/pkg/controllers/wallets-header.go @@ -11,6 +11,7 @@ type WalletsHeaderController struct { WalletService *services.WalletService } +// Initializes WalletsHeaderController. func NewWalletsHeaderController(as *services.WalletService, s *gin.RouterGroup) *WalletsHeaderController { wc := new(WalletsHeaderController) wc.WalletService = as @@ -20,6 +21,7 @@ func NewWalletsHeaderController(as *services.WalletService, s *gin.RouterGroup) return wc } +// ROUTE (GET /wallet/wallet-header) func (wc *WalletsHeaderController) Get(c *gin.Context) { body := new(models.Auth) diff --git a/pkg/controllers/wallets.go b/pkg/controllers/wallets.go index 12e865b..49890bd 100644 --- a/pkg/controllers/wallets.go +++ b/pkg/controllers/wallets.go @@ -12,6 +12,7 @@ type WalletsController struct { WalletService *services.WalletService } +// Initializes WalletsController. func NewWalletsController(as *services.WalletService, s *gin.RouterGroup) *WalletsController { wc := new(WalletsController) wc.WalletService = as @@ -24,6 +25,7 @@ func NewWalletsController(as *services.WalletService, s *gin.RouterGroup) *Walle return wc } +// ROUTE (POST /wallet) func (wc *WalletsController) New(c *gin.Context) { body := new(models.NewWalletBody) @@ -39,6 +41,7 @@ func (wc *WalletsController) New(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /wallet) func (wc *WalletsController) GetAll(c *gin.Context) { body := new(models.Auth) auth := c.MustGet("auth") @@ -51,6 +54,7 @@ func (wc *WalletsController) GetAll(c *gin.Context) { c.JSON(200, fr) } +// ROUTE (PUT /wallet/:id) func (wc *WalletsController) Edit(c *gin.Context) { body := new(models.WalletEdit) if err := c.ShouldBind(body); err != nil { @@ -64,6 +68,7 @@ func (wc *WalletsController) Edit(c *gin.Context) { c.JSON(200, wm) } +// ROUTE (GET /wallet/:id) func (wc *WalletsController) Get(c *gin.Context) { params := new(models.Params) diff --git a/pkg/middleware/auth.go b/pkg/middleware/auth.go index e6380d7..60cac0a 100644 --- a/pkg/middleware/auth.go +++ b/pkg/middleware/auth.go @@ -12,6 +12,9 @@ import ( "github.com/gin-gonic/gin" ) +// Auth Middleware. +// +// Checks if token from header is valid and extracts the id. func Auth(c *gin.Context) { exceptionReturn := new(models.Exception) tokenString := ExtractToken(c) @@ -34,6 +37,7 @@ func Auth(c *gin.Context) { c.Next() } +// Extracts token from header func ExtractToken(c *gin.Context) string { bearerToken := c.GetHeader("Authorization") tokenArr := strings.Split(bearerToken, " ") @@ -46,6 +50,7 @@ func ExtractToken(c *gin.Context) string { return "" } +// Checks if token is valid func CheckToken(tokenString string) (*jwt.Token, error) { secret := os.Getenv("ACCESS_SECRET") if secret == "" { diff --git a/pkg/middleware/cors.go b/pkg/middleware/cors.go index 23d62cc..68a5482 100644 --- a/pkg/middleware/cors.go +++ b/pkg/middleware/cors.go @@ -2,6 +2,9 @@ package middleware import "github.com/gin-gonic/gin" +// CORS Middleware. +// +// Add needed headers to make cors functioning. func CORSMiddleware() gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") diff --git a/pkg/middleware/secretCode.go b/pkg/middleware/secretCode.go index e74ca07..40ede1e 100644 --- a/pkg/middleware/secretCode.go +++ b/pkg/middleware/secretCode.go @@ -9,6 +9,9 @@ import ( "github.com/gin-gonic/gin" ) +// Secret Code Middleware. +// +// Checks if secret code from body is valid. func SecretCode(c *gin.Context) { exceptionReturn := new(models.Exception) secretCode := ExtractCode(c) @@ -26,6 +29,7 @@ func SecretCode(c *gin.Context) { c.Next() } +// Extracts the secret code from body func ExtractCode(c *gin.Context) SecretCodeModel { secret := new(SecretCodeModel) if err := c.ShouldBindJSON(&secret); err != nil { @@ -37,5 +41,5 @@ func ExtractCode(c *gin.Context) SecretCodeModel { type SecretCodeModel struct { SecretCode string `json:"secretCode"` - Version string `json:"version"` + Version string `json:"version"` } diff --git a/pkg/migrate/1_create_table_api.go b/pkg/migrate/1_create_table_api.go index a7911f9..79c0fef 100644 --- a/pkg/migrate/1_create_table_api.go +++ b/pkg/migrate/1_create_table_api.go @@ -2,13 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) +// Creates api table if it does not exist. func CreateTableApi(db pg.DB) error { models := []interface{}{ @@ -20,10 +22,10 @@ func CreateTableApi(db pg.DB) error { IfNotExists: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"api\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"api\" created successfully") } } return nil diff --git a/pkg/migrate/2_create_table_users.go b/pkg/migrate/2_create_table_users.go index 12e98c6..3379901 100644 --- a/pkg/migrate/2_create_table_users.go +++ b/pkg/migrate/2_create_table_users.go @@ -2,14 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) - +// Creates api users if it does not exist. func CreateTableUsers(db pg.DB) error { models := []interface{}{ (*models.User)(nil), @@ -20,10 +21,10 @@ func CreateTableUsers(db pg.DB) error { IfNotExists: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"users\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"users\" created successfully") } } return nil diff --git a/pkg/migrate/3_create_table_wallets.go b/pkg/migrate/3_create_table_wallets.go index 8b4b371..d368178 100644 --- a/pkg/migrate/3_create_table_wallets.go +++ b/pkg/migrate/3_create_table_wallets.go @@ -2,13 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) +// Creates wallets table if it does not exist. func CreateTableWallets(db pg.DB) error { models := []interface{}{ (*models.Wallet)(nil), @@ -20,10 +22,10 @@ func CreateTableWallets(db pg.DB) error { FKConstraints: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"wallets\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"wallets\" created successfully") } } return nil diff --git a/pkg/migrate/4_create_table_transaction_types.go b/pkg/migrate/4_create_table_transaction_types.go index 9572421..7192186 100644 --- a/pkg/migrate/4_create_table_transaction_types.go +++ b/pkg/migrate/4_create_table_transaction_types.go @@ -2,13 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) +// Creates transactionTypes table if it does not exist. func CreateTableTransactionTypes(db pg.DB) error { models := []interface{}{ (*models.TransactionType)(nil), @@ -20,10 +22,10 @@ func CreateTableTransactionTypes(db pg.DB) error { FKConstraints: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"api\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"api\" created successfully") } } return nil diff --git a/pkg/migrate/5_create_table_transactions.go b/pkg/migrate/5_create_table_transactions.go index 09a80e9..61c35c4 100644 --- a/pkg/migrate/5_create_table_transactions.go +++ b/pkg/migrate/5_create_table_transactions.go @@ -2,14 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) - +// Creates api transactions if it does not exist. func CreateTableTransactions(db pg.DB) error { models := []interface{}{ (*models.Transaction)(nil), @@ -21,10 +22,10 @@ func CreateTableTransactions(db pg.DB) error { FKConstraints: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"transactions\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"transactions\" created successfully") } } return nil diff --git a/pkg/migrate/6_create_table_subscription_types.go b/pkg/migrate/6_create_table_subscription_types.go index c2fe7a1..14791cd 100644 --- a/pkg/migrate/6_create_table_subscription_types.go +++ b/pkg/migrate/6_create_table_subscription_types.go @@ -2,13 +2,15 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" "log" "wallet-api/pkg/models" + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) +// Creates subscriptionTypes table if it does not exist. func CreateTableSubscriptionTypes(db pg.DB) error { models := []interface{}{ (*models.SubscriptionType)(nil), @@ -20,10 +22,10 @@ func CreateTableSubscriptionTypes(db pg.DB) error { FKConstraints: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"subscriptionTypes\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"subscriptionTypes\" created successfully") } } return nil diff --git a/pkg/migrate/7_create_table_subscriptions.go b/pkg/migrate/7_create_table_subscriptions.go index 6515fd4..7caf874 100644 --- a/pkg/migrate/7_create_table_subscriptions.go +++ b/pkg/migrate/7_create_table_subscriptions.go @@ -2,12 +2,14 @@ package migrate import ( "fmt" - "github.com/go-pg/pg/v10" - "github.com/go-pg/pg/v10/orm" "log" "wallet-api/pkg/models" + + "github.com/go-pg/pg/v10" + "github.com/go-pg/pg/v10/orm" ) +// Creates subscriptions table if it does not exist. func CreateTableSubscriptions(db pg.DB) error { models := []interface{}{ (*models.Subscription)(nil), @@ -19,10 +21,10 @@ func CreateTableSubscriptions(db pg.DB) error { FKConstraints: true, }) if err != nil { - log.Printf("Error Creating Table: %s", err) + log.Printf("Error creating table \"subscriptions\": %s", err) return err } else { - fmt.Println("Table created successfully") + fmt.Println("Table \"subscriptions\" created successfully") } } return nil diff --git a/pkg/migrate/8_populate_subscription_types.go b/pkg/migrate/8_populate_subscription_types.go index 1c4d594..6ccb68a 100644 --- a/pkg/migrate/8_populate_subscription_types.go +++ b/pkg/migrate/8_populate_subscription_types.go @@ -1,10 +1,14 @@ package migrate import ( - "github.com/go-pg/pg/v10" + "fmt" + "log" "wallet-api/pkg/models" + + "github.com/go-pg/pg/v10" ) +// Populates subscriptionTypes table if it does not exist. func PopulateSubscriptionTypes(db pg.DB) error { daily := new(models.SubscriptionType) weekly := new(models.SubscriptionType) @@ -28,12 +32,35 @@ func PopulateSubscriptionTypes(db pg.DB) error { yearly.Type = "yearly" _, err := db.Model(daily).Where("? = ?", pg.Ident("type"), daily.Type).SelectOrInsert() - + if err != nil { + log.Printf("Error inserting row into \"subscriptionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"subscriptionTypes\" table.") + } _, err = db.Model(weekly).Where("? = ?", pg.Ident("type"), weekly.Type).SelectOrInsert() + if err != nil { + log.Printf("Error inserting row into \"subscriptionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"subscriptionTypes\" table.") + } _, err = db.Model(monthly).Where("? = ?", pg.Ident("type"), monthly.Type).SelectOrInsert() + if err != nil { + log.Printf("Error inserting row into \"subscriptionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"subscriptionTypes\" table.") + } _, err = db.Model(yearly).Where("? = ?", pg.Ident("type"), yearly.Type).SelectOrInsert() + if err != nil { + log.Printf("Error inserting row into \"subscriptionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"subscriptionTypes\" table.") + } return err } diff --git a/pkg/migrate/9_populate_transaction_types.go b/pkg/migrate/9_populate_transaction_types.go index 4a8b2d5..f6adbe0 100644 --- a/pkg/migrate/9_populate_transaction_types.go +++ b/pkg/migrate/9_populate_transaction_types.go @@ -1,10 +1,14 @@ package migrate import ( - "github.com/go-pg/pg/v10" + "fmt" + "log" "wallet-api/pkg/models" + + "github.com/go-pg/pg/v10" ) +// Populates transactionTypes table if it does not exist. func PopulateTransactionTypes(db pg.DB) error { gain := new(models.TransactionType) expense := new(models.TransactionType) @@ -18,8 +22,20 @@ func PopulateTransactionTypes(db pg.DB) error { expense.Type = "expense" _, err := db.Model(gain).Where("? = ?", pg.Ident("type"), gain.Type).SelectOrInsert() + if err != nil { + log.Printf("Error inserting row into \"transactionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"transactionTypes\" table.") + } _, err = db.Model(expense).Where("? = ?", pg.Ident("type"), expense.Type).SelectOrInsert() + if err != nil { + log.Printf("Error inserting row into \"transactionTypes\" table: %s", err) + return err + } else { + fmt.Println("Row inserted successfully into \"transactionTypes\" table.") + } return err } diff --git a/pkg/migrate/migrate.go b/pkg/migrate/migrate.go index 005d57f..fcc464b 100644 --- a/pkg/migrate/migrate.go +++ b/pkg/migrate/migrate.go @@ -4,6 +4,7 @@ import ( "github.com/go-pg/pg/v10" ) +// Starts database migration. func Start(conn *pg.DB, version string) { migration001 := Migration{ Version: "001", @@ -43,7 +44,6 @@ func Start(conn *pg.DB, version string) { } type Migration struct { - Version string + Version string Migrations []interface{} } - diff --git a/pkg/services/api.go b/pkg/services/api.go index 37836f9..bec1780 100644 --- a/pkg/services/api.go +++ b/pkg/services/api.go @@ -12,6 +12,7 @@ type ApiService struct { Db *pg.DB } +// Gets first row from API table. func (as *ApiService) GetFirst(ctx context.Context) models.ApiModel { db := as.Db.WithContext(ctx) @@ -20,6 +21,9 @@ func (as *ApiService) GetFirst(ctx context.Context) models.ApiModel { return apiModel } +// Starts database migration. +// +// Takes migration version. func (as *ApiService) PostMigrate(ctx context.Context, version string) (*models.MessageResponse, *models.Exception) { db := as.Db.WithContext(ctx) diff --git a/pkg/services/services.go b/pkg/services/services.go index 0f84e73..62bd117 100644 --- a/pkg/services/services.go +++ b/pkg/services/services.go @@ -7,6 +7,7 @@ import ( "github.com/go-pg/pg/v10" ) +// Adds filters to query and executes it. func FilteredResponse(qry *pg.Query, mdl interface{}, filtered *models.FilteredResponse) { if filtered.Page == 0 { filtered.Page = 1 diff --git a/pkg/services/subscriptionTypes.go b/pkg/services/subscriptionTypes.go index 8bb50d6..3072545 100644 --- a/pkg/services/subscriptionTypes.go +++ b/pkg/services/subscriptionTypes.go @@ -12,6 +12,7 @@ type SubscriptionTypeService struct { Db *pg.DB } +// Inserts new row to subscription type table. func (as *SubscriptionTypeService) New(ctx context.Context, body *models.NewSubscriptionTypeBody) *models.SubscriptionType { db := as.Db.WithContext(ctx) @@ -26,6 +27,7 @@ func (as *SubscriptionTypeService) New(ctx context.Context, body *models.NewSubs return tm } +// Gets all rows from subscription type table. func (as *SubscriptionTypeService) GetAll(ctx context.Context, embed string) *[]models.SubscriptionType { db := as.Db.WithContext(ctx) diff --git a/pkg/services/subscriptions.go b/pkg/services/subscriptions.go index 3eb1c01..4211a9f 100644 --- a/pkg/services/subscriptions.go +++ b/pkg/services/subscriptions.go @@ -14,6 +14,7 @@ type SubscriptionService struct { Db *pg.DB } +// Inserts new row to subscription table. func (as *SubscriptionService) New(ctx context.Context, body *models.NewSubscriptionBody) *models.Subscription { db := as.Db.WithContext(ctx) @@ -48,6 +49,7 @@ func (as *SubscriptionService) New(ctx context.Context, body *models.NewSubscrip return tm } +// Gets row from subscription table by id. func (as *SubscriptionService) Get(ctx context.Context, am *models.Auth, id string, params *models.Params) *models.Subscription { db := as.Db.WithContext(ctx) @@ -69,6 +71,7 @@ func (as *SubscriptionService) Get(ctx context.Context, am *models.Auth, id stri return wm } +// Gets filtered rows from subscription table. func (as *SubscriptionService) GetAll(ctx context.Context, am *models.Auth, walletId string, filtered *models.FilteredResponse) { db := as.Db.WithContext(ctx) @@ -91,6 +94,7 @@ func (as *SubscriptionService) GetAll(ctx context.Context, am *models.Auth, wall tx.Commit() } +// Updates row from subscription table by id. func (as *SubscriptionService) Edit(ctx context.Context, body *models.SubscriptionEdit, id string) *models.Subscription { db := as.Db.WithContext(ctx) @@ -114,6 +118,9 @@ func (as *SubscriptionService) Edit(ctx context.Context, body *models.Subscripti return tm } +// Updates row in subscription table by id. +// +// Ends subscription with current date. func (as *SubscriptionService) End(ctx context.Context, id string) *models.Subscription { db := as.Db.WithContext(ctx) @@ -132,6 +139,7 @@ func (as *SubscriptionService) End(ctx context.Context, id string) *models.Subsc return tm } +// Generates and Inserts new Transaction rows from the subscription model. func (as *SubscriptionService) SubToTrans(subModel *models.Subscription, tx *pg.Tx) { now := time.Now() diff --git a/pkg/services/transactionTypes.go b/pkg/services/transactionTypes.go index eff9696..de8d517 100644 --- a/pkg/services/transactionTypes.go +++ b/pkg/services/transactionTypes.go @@ -12,6 +12,7 @@ type TransactionTypeService struct { Db *pg.DB } +// Inserts new row to transaction type table. func (as *TransactionTypeService) New(ctx context.Context, body *models.NewTransactionTypeBody) *models.TransactionType { db := as.Db.WithContext(ctx) @@ -26,6 +27,7 @@ func (as *TransactionTypeService) New(ctx context.Context, body *models.NewTrans return tm } +// Gets all rows from transaction type table. func (as *TransactionTypeService) GetAll(ctx context.Context, embed string) *[]models.TransactionType { db := as.Db.WithContext(ctx) diff --git a/pkg/services/transactions.go b/pkg/services/transactions.go index 0e04e9d..b4c4283 100644 --- a/pkg/services/transactions.go +++ b/pkg/services/transactions.go @@ -15,6 +15,7 @@ type TransactionService struct { Ss *SubscriptionService } +// Inserts new row to transaction table. func (as *TransactionService) New(ctx context.Context, body *models.NewTransactionBody) *models.Transaction { db := as.Db.WithContext(ctx) @@ -42,6 +43,7 @@ func (as *TransactionService) New(ctx context.Context, body *models.NewTransacti return tm } +// Gets filtered rows from transaction table. func (as *TransactionService) GetAll(ctx context.Context, am *models.Auth, walletId string, filtered *models.FilteredResponse) { db := as.Db.WithContext(ctx) @@ -73,6 +75,7 @@ func (as *TransactionService) GetAll(ctx context.Context, am *models.Auth, walle tx.Commit() } +// Updates row in transaction table by id. func (as *TransactionService) Edit(ctx context.Context, body *models.TransactionEdit, id string) *models.Transaction { db := as.Db.WithContext(ctx) @@ -96,6 +99,7 @@ func (as *TransactionService) Edit(ctx context.Context, body *models.Transaction return tm } +// Gets row from transaction table by id. func (as *TransactionService) Get(ctx context.Context, am *models.Auth, id string, params *models.Params) *models.Transaction { db := as.Db.WithContext(ctx) diff --git a/pkg/services/users.go b/pkg/services/users.go index b1388b0..f400e55 100644 --- a/pkg/services/users.go +++ b/pkg/services/users.go @@ -18,6 +18,7 @@ type UsersService struct { Db *pg.DB } +// Inserts new row to users table. func (us *UsersService) Create(ctx context.Context, registerBody *models.User) (*models.User, *models.Exception) { db := us.Db.WithContext(ctx) @@ -52,6 +53,7 @@ func (us *UsersService) Create(ctx context.Context, registerBody *models.User) ( return registerBody, exceptionReturn } +// Gets row from users table by email and valid password. func (us *UsersService) Login(ctx context.Context, loginBody *models.Login) (*models.Token, *models.Exception) { db := us.Db.WithContext(ctx) @@ -89,6 +91,9 @@ func (us *UsersService) Login(ctx context.Context, loginBody *models.Login) (*mo return tokenPayload, exceptionReturn } +// Updates row in users table. +// +// IsActive column is set to false func (us *UsersService) Deactivate(ctx context.Context, auth *models.Auth) (*models.MessageResponse, *models.Exception) { db := us.Db.WithContext(ctx) @@ -124,6 +129,9 @@ func (us *UsersService) Deactivate(ctx context.Context, auth *models.Auth) (*mod return mm, me } +// Generates new jwt token. +// +// It encodes the user id. Based on rememberMe it is valid through 48hours or 2hours. func CreateToken(user *models.User, rememberMe bool) (string, error) { atClaims := jwt.MapClaims{} atClaims["authorized"] = true diff --git a/pkg/services/wallets.go b/pkg/services/wallets.go index 6ab4e44..fcafe08 100644 --- a/pkg/services/wallets.go +++ b/pkg/services/wallets.go @@ -14,6 +14,7 @@ type WalletService struct { Ss *SubscriptionService } +// Inserts row to wallets table. func (as *WalletService) New(ctx context.Context, am *models.NewWalletBody) *models.Wallet { db := as.Db.WithContext(ctx) @@ -25,6 +26,7 @@ func (as *WalletService) New(ctx context.Context, am *models.NewWalletBody) *mod return walletModel } +// Updates row in wallets table by id. func (as *WalletService) Edit(ctx context.Context, body *models.WalletEdit, id string) *models.Wallet { db := as.Db.WithContext(ctx) @@ -42,6 +44,7 @@ func (as *WalletService) Edit(ctx context.Context, body *models.WalletEdit, id s return tm } +// Gets row in wallets table by id. func (as *WalletService) Get(ctx context.Context, id string, params *models.Params) *models.Wallet { db := as.Db.WithContext(ctx) @@ -59,6 +62,7 @@ func (as *WalletService) Get(ctx context.Context, id string, params *models.Para return wm } +// Gets filtered rows from wallets table. func (as *WalletService) GetAll(ctx context.Context, am *models.Auth, filtered *models.FilteredResponse) { db := as.Db.WithContext(ctx) wm := new([]models.Wallet) @@ -67,6 +71,9 @@ func (as *WalletService) GetAll(ctx context.Context, am *models.Auth, filtered * FilteredResponse(query, wm, filtered) } +// Gets row from wallets table. +// +// Calculates previous month, current and next month totals. func (as *WalletService) GetHeader(ctx context.Context, am *models.Auth, walletId string) *models.WalletHeader { db := as.Db.WithContext(ctx) @@ -174,6 +181,9 @@ func (as *WalletService) GetHeader(ctx context.Context, am *models.Auth, walletI return wm } +// Appends Transaction to the belonging walletId +// +// If missing, it creates the item list. func addWhere(s *[]models.WalletTransactions, walletId string, e models.Transaction) { var exists bool for a := range *s {