diff --git a/pkg/api/api.go b/pkg/api/api.go index 844d866..35f3864 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -5,6 +5,14 @@ import ( "github.com/go-pg/pg/v10" ) +/* +Init + +Initializes Web API Routes. + Args: + *gin.Engine: Gin Engine. + *pg.DB: Postgres Database Client. +*/ func Init(s *gin.Engine, db *pg.DB) { Routes(s, db) } diff --git a/pkg/api/routes.go b/pkg/api/routes.go index 2fdb9a1..23c19d4 100644 --- a/pkg/api/routes.go +++ b/pkg/api/routes.go @@ -10,6 +10,14 @@ import ( "github.com/go-pg/pg/v10" ) +/* +Routes + +Initializes web api controllers and its corresponding routes. + Args: + *gin.Engine: Gin Engine + *pg.DB: Postgres database client +*/ func Routes(s *gin.Engine, db *pg.DB) { ver := s.Group(configs.Prefix) diff --git a/pkg/controllers/api.go b/pkg/controllers/api.go index 2598cfe..d0bf007 100644 --- a/pkg/controllers/api.go +++ b/pkg/controllers/api.go @@ -11,7 +11,16 @@ type ApiController struct { ApiService *services.ApiService } -// Initializes ApiController. +/* +NewApiController + +Initializes ApiController. + Args: + *services.ApiService: API service + *gin.RouterGroup: Gin Router Group + Returns: + *ApiController: Controller for "api" interactions +*/ func NewApiController(as *services.ApiService, s *gin.RouterGroup) *ApiController { ac := new(ApiController) ac.ApiService = as @@ -22,15 +31,25 @@ func NewApiController(as *services.ApiService, s *gin.RouterGroup) *ApiControlle return ac } +/* +getFirst + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /api). func (ac *ApiController) getFirst(c *gin.Context) { apiModel := ac.ApiService.GetFirst(c) c.JSON(200, apiModel) } +/* +postMigrate + +Requires "SECRET_CODE", "VERSION" (optional) from body. + Args: + *gin.Context: Gin Application Context +*/ // 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 d098dbf..f4fcae6 100644 --- a/pkg/controllers/auth.go +++ b/pkg/controllers/auth.go @@ -13,7 +13,16 @@ type AuthController struct { UsersService *services.UsersService } -// Initializes AuthController. +/* +NewAuthController + +Initializes AuthController. + Args: + *services.UsersService: Users service + *gin.RouterGroup: Gin Router Group + Returns: + *AuthController: Controller for "auth" interactions +*/ func NewAuthController(rs *services.UsersService, s *gin.RouterGroup) *AuthController { rc := new(AuthController) rc.UsersService = rs @@ -26,6 +35,11 @@ func NewAuthController(rs *services.UsersService, s *gin.RouterGroup) *AuthContr return rc } +/* +PostLogin + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /auth/login). func (rc *AuthController) PostLogin(c *gin.Context) { body := new(models.Login) @@ -42,6 +56,11 @@ func (rc *AuthController) PostLogin(c *gin.Context) { } } +/* +PostRegister + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /auth/register). func (rc *AuthController) PostRegister(c *gin.Context) { body := new(models.User) @@ -60,6 +79,11 @@ func (rc *AuthController) PostRegister(c *gin.Context) { } } +/* +Delete + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (DELETE /auth/deactivate). func (rc *AuthController) Delete(c *gin.Context) { auth := new(models.Auth) @@ -75,6 +99,11 @@ func (rc *AuthController) Delete(c *gin.Context) { } } +/* +CheckToken + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /auth/check-token). func (rc *AuthController) CheckToken(c *gin.Context) { token, _ := c.GetQuery("token") diff --git a/pkg/controllers/controllers.go b/pkg/controllers/controllers.go index ebbbb55..083754b 100644 --- a/pkg/controllers/controllers.go +++ b/pkg/controllers/controllers.go @@ -10,7 +10,15 @@ import ( "github.com/gin-gonic/gin" ) -// Gets query parameters and populates FilteredResponse model. +/* +FilteredResponse + +Gets query parameters and populates FilteredResponse model. + Args: + *gin.Context: Gin Application Context + Returns: + *models.FilteredResponse: Filtered response +*/ 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 bd8c262..738d464 100644 --- a/pkg/controllers/subscriptionTypes.go +++ b/pkg/controllers/subscriptionTypes.go @@ -12,7 +12,16 @@ type SubscriptionTypeController struct { SubscriptionTypeService *services.SubscriptionTypeService } -// Initializes SubscriptionTypeController. +/* +NewSubscriptionTypeController + +Initializes SubscriptionTypeController. + Args: + *services.SubscriptionTypeService: Subscription type service + *gin.RouterGroup: Gin Router Group + Returns: + *SubscriptionTypeController: Controller for "subscription-types" route interactions +*/ func NewSubscriptionTypeController(as *services.SubscriptionTypeService, s *gin.RouterGroup) *SubscriptionTypeController { wc := new(SubscriptionTypeController) wc.SubscriptionTypeService = as @@ -23,6 +32,11 @@ func NewSubscriptionTypeController(as *services.SubscriptionTypeService, s *gin. return wc } +/* +New + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /subscription-types) func (wc *SubscriptionTypeController) New(c *gin.Context) { body := new(models.NewSubscriptionTypeBody) @@ -35,6 +49,11 @@ func (wc *SubscriptionTypeController) New(c *gin.Context) { c.JSON(200, wm) } +/* +GetAll + Args: + *gin.Context: Gin Application Context +*/ // 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 849cacf..b66624e 100644 --- a/pkg/controllers/subscriptions.go +++ b/pkg/controllers/subscriptions.go @@ -12,7 +12,16 @@ type SubscriptionController struct { SubscriptionService *services.SubscriptionService } -// Initializes SubscriptionController. +/* +NewSubscriptionController + +Initializes SubscriptionController. + Args: + *services.SubscriptionService: Subscription service + *gin.RouterGroup: Gin Router Group + Returns: + *SubscriptionController: Controller for "subscription" route interactions +*/ func NewSubscriptionController(as *services.SubscriptionService, s *gin.RouterGroup) *SubscriptionController { wc := new(SubscriptionController) wc.SubscriptionService = as @@ -30,6 +39,11 @@ func NewSubscriptionController(as *services.SubscriptionService, s *gin.RouterGr return wc } +/* +New + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /subscription) func (wc *SubscriptionController) New(c *gin.Context) { body := new(models.NewSubscriptionBody) @@ -42,6 +56,11 @@ func (wc *SubscriptionController) New(c *gin.Context) { c.JSON(200, wm) } +/* +Edit + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (PUT /subscription/:id) func (wc *SubscriptionController) Edit(c *gin.Context) { body := new(models.SubscriptionEdit) @@ -56,6 +75,11 @@ func (wc *SubscriptionController) Edit(c *gin.Context) { c.JSON(200, wm) } +/* +Get + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /subscription/:id) func (wc *SubscriptionController) Get(c *gin.Context) { body := new(models.Auth) @@ -94,6 +118,11 @@ func (wc *SubscriptionController) End(c *gin.Context) { c.JSON(200, fr) } +/* +GetAll + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /subscription) func (wc *SubscriptionController) GetAll(c *gin.Context) { body := new(models.Auth) diff --git a/pkg/controllers/transactionTypes.go b/pkg/controllers/transactionTypes.go index 4015700..a41faec 100644 --- a/pkg/controllers/transactionTypes.go +++ b/pkg/controllers/transactionTypes.go @@ -12,7 +12,16 @@ type TransactionTypeController struct { TransactionTypeService *services.TransactionTypeService } -// Initializes TransactionTypeController. +/* +NewTransactionTypeController + +Initializes TransactionTypeController. + Args: + *services.TransactionTypeService: Transaction Type service + *gin.RouterGroup: Gin Router Group + Returns: + *TransactionTypeController: Controller for "transaction-types" route interactions +*/ func NewTransactionTypeController(as *services.TransactionTypeService, s *gin.RouterGroup) *TransactionTypeController { wc := new(TransactionTypeController) wc.TransactionTypeService = as @@ -23,6 +32,11 @@ func NewTransactionTypeController(as *services.TransactionTypeService, s *gin.Ro return wc } +/* +New + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /transaction-types) func (wc *TransactionTypeController) New(c *gin.Context) { body := new(models.NewTransactionTypeBody) @@ -35,6 +49,11 @@ func (wc *TransactionTypeController) New(c *gin.Context) { c.JSON(200, wm) } +/* +GetAll + Args: + *gin.Context: Gin Application Context +*/ // 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 b44f918..6e2294d 100644 --- a/pkg/controllers/transactions.go +++ b/pkg/controllers/transactions.go @@ -12,7 +12,16 @@ type TransactionController struct { TransactionService *services.TransactionService } -// Initializes TransactionController. +/* +NewTransactionController + +Initializes TransactionController. + Args: + *services.TransactionService: Transaction service + *gin.RouterGroup: Gin Router Group + Returns: + *TransactionController: Controller for "transaction" route interactions +*/ func NewTransactionController(as *services.TransactionService, s *gin.RouterGroup) *TransactionController { wc := new(TransactionController) wc.TransactionService = as @@ -25,6 +34,11 @@ func NewTransactionController(as *services.TransactionService, s *gin.RouterGrou return wc } +/* +New + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /transactions) func (wc *TransactionController) New(c *gin.Context) { body := new(models.NewTransactionBody) @@ -37,6 +51,11 @@ func (wc *TransactionController) New(c *gin.Context) { c.JSON(200, wm) } +/* +GetAll + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /transactions) func (wc *TransactionController) GetAll(c *gin.Context) { body := new(models.Auth) @@ -51,6 +70,11 @@ func (wc *TransactionController) GetAll(c *gin.Context) { c.JSON(200, fr) } +/* +Edit + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (PUT /transactions/:id) func (wc *TransactionController) Edit(c *gin.Context) { body := new(models.TransactionEdit) @@ -65,6 +89,11 @@ func (wc *TransactionController) Edit(c *gin.Context) { c.JSON(200, wm) } +/* +Get + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /transactions/:id) func (wc *TransactionController) Get(c *gin.Context) { body := new(models.Auth) diff --git a/pkg/controllers/wallets-header.go b/pkg/controllers/wallets-header.go index 5c2ef1a..888ba9f 100644 --- a/pkg/controllers/wallets-header.go +++ b/pkg/controllers/wallets-header.go @@ -11,7 +11,16 @@ type WalletsHeaderController struct { WalletService *services.WalletService } -// Initializes WalletsHeaderController. +/* +NewWalletsHeaderController + +Initializes WalletsHeaderController. + Args: + *services.WalletService: Wallet service + *gin.RouterGroup: Gin Router Group + Returns: + *WalletsHeaderController: Controller for "wallet/wallet-header" route interactions +*/ func NewWalletsHeaderController(as *services.WalletService, s *gin.RouterGroup) *WalletsHeaderController { wc := new(WalletsHeaderController) wc.WalletService = as @@ -21,6 +30,11 @@ func NewWalletsHeaderController(as *services.WalletService, s *gin.RouterGroup) return wc } +/* +Get + Args: + *gin.Context: Gin Application Context +*/ // 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 49890bd..377e054 100644 --- a/pkg/controllers/wallets.go +++ b/pkg/controllers/wallets.go @@ -12,7 +12,16 @@ type WalletsController struct { WalletService *services.WalletService } -// Initializes WalletsController. +/* +NewWalletsController + +Initializes WalletsController. + Args: + *services.WalletService: Wallet service + *gin.RouterGroup: Gin Router Group + Returns: + *WalletsController: Controller for "wallet" route interactions +*/ func NewWalletsController(as *services.WalletService, s *gin.RouterGroup) *WalletsController { wc := new(WalletsController) wc.WalletService = as @@ -25,6 +34,11 @@ func NewWalletsController(as *services.WalletService, s *gin.RouterGroup) *Walle return wc } +/* +New + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (POST /wallet) func (wc *WalletsController) New(c *gin.Context) { body := new(models.NewWalletBody) @@ -41,6 +55,11 @@ func (wc *WalletsController) New(c *gin.Context) { c.JSON(200, wm) } +/* +GetAll + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (GET /wallet) func (wc *WalletsController) GetAll(c *gin.Context) { body := new(models.Auth) @@ -54,6 +73,11 @@ func (wc *WalletsController) GetAll(c *gin.Context) { c.JSON(200, fr) } +/* +Edit + Args: + *gin.Context: Gin Application Context +*/ // ROUTE (PUT /wallet/:id) func (wc *WalletsController) Edit(c *gin.Context) { body := new(models.WalletEdit) @@ -68,6 +92,11 @@ func (wc *WalletsController) Edit(c *gin.Context) { c.JSON(200, wm) } +/* +Get + Args: + *gin.Context: Gin Application Context +*/ // 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 60cac0a..afa7616 100644 --- a/pkg/middleware/auth.go +++ b/pkg/middleware/auth.go @@ -12,9 +12,13 @@ import ( "github.com/gin-gonic/gin" ) -// Auth Middleware. -// -// Checks if token from header is valid and extracts the id. +/* +Auth + +Checks if token from header is valid and extracts the id. + Args: + *gin.Context: Gin Application Context. +*/ func Auth(c *gin.Context) { exceptionReturn := new(models.Exception) tokenString := ExtractToken(c) @@ -37,7 +41,15 @@ func Auth(c *gin.Context) { c.Next() } -// Extracts token from header +/* +ExtractToken + +Extracts token from header + Args: + *gin.Context: Gin Application Context. + Returns: + string: Token extracted from context header +*/ func ExtractToken(c *gin.Context) string { bearerToken := c.GetHeader("Authorization") tokenArr := strings.Split(bearerToken, " ") @@ -50,7 +62,16 @@ func ExtractToken(c *gin.Context) string { return "" } -// Checks if token is valid +/* +CheckToken + +Checks if token is valid + Args: + string: Token to check + Returns: + *jwt.Token: Parsed token + error: Returns if token is invalid or there was an error inside jwt.Parse function +*/ 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 68a5482..a9d3782 100644 --- a/pkg/middleware/cors.go +++ b/pkg/middleware/cors.go @@ -2,9 +2,13 @@ package middleware import "github.com/gin-gonic/gin" -// CORS Middleware. -// -// Add needed headers to make cors functioning. +/* +CORSMiddleware + +Add needed headers to make cors functioning. + Args: + *gin.Context: Gin Application Context. +*/ 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 40ede1e..519996f 100644 --- a/pkg/middleware/secretCode.go +++ b/pkg/middleware/secretCode.go @@ -9,9 +9,13 @@ import ( "github.com/gin-gonic/gin" ) -// Secret Code Middleware. -// -// Checks if secret code from body is valid. +/* +SecretCode + +Checks if secret code from body is valid. + Args: + *gin.Context: Gin Application Context. +*/ func SecretCode(c *gin.Context) { exceptionReturn := new(models.Exception) secretCode := ExtractCode(c) @@ -29,7 +33,13 @@ func SecretCode(c *gin.Context) { c.Next() } -// Extracts the secret code from body +/* +ExtractCode + +Extracts the secret code from body. + Args: + *gin.Context: Gin Application Context. +*/ func ExtractCode(c *gin.Context) SecretCodeModel { secret := new(SecretCodeModel) if err := c.ShouldBindJSON(&secret); err != nil { diff --git a/pkg/migrate/1_create_table_api.go b/pkg/migrate/1_create_table_api.go index 79c0fef..0d07370 100644 --- a/pkg/migrate/1_create_table_api.go +++ b/pkg/migrate/1_create_table_api.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates api table if it does not exist. +/* +CreateTableApi + +Creates api table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableApi(db pg.DB) error { models := []interface{}{ diff --git a/pkg/migrate/2_create_table_users.go b/pkg/migrate/2_create_table_users.go index 3379901..164bb61 100644 --- a/pkg/migrate/2_create_table_users.go +++ b/pkg/migrate/2_create_table_users.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates api users if it does not exist. +/* +CreateTableUsers + +Creates users table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableUsers(db pg.DB) error { models := []interface{}{ (*models.User)(nil), diff --git a/pkg/migrate/3_create_table_wallets.go b/pkg/migrate/3_create_table_wallets.go index d368178..51f4ebb 100644 --- a/pkg/migrate/3_create_table_wallets.go +++ b/pkg/migrate/3_create_table_wallets.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates wallets table if it does not exist. +/* +CreateTableWallets + +Creates wallets table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableWallets(db pg.DB) error { models := []interface{}{ (*models.Wallet)(nil), diff --git a/pkg/migrate/4_create_table_transaction_types.go b/pkg/migrate/4_create_table_transaction_types.go index 7192186..6fd742e 100644 --- a/pkg/migrate/4_create_table_transaction_types.go +++ b/pkg/migrate/4_create_table_transaction_types.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates transactionTypes table if it does not exist. +/* +CreateTableTransactionTypes + +Creates transaction_types table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableTransactionTypes(db pg.DB) error { models := []interface{}{ (*models.TransactionType)(nil), diff --git a/pkg/migrate/5_create_table_transactions.go b/pkg/migrate/5_create_table_transactions.go index 61c35c4..d777869 100644 --- a/pkg/migrate/5_create_table_transactions.go +++ b/pkg/migrate/5_create_table_transactions.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates api transactions if it does not exist. +/* +CreateTableTransactions + +Creates transactions table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableTransactions(db pg.DB) error { models := []interface{}{ (*models.Transaction)(nil), diff --git a/pkg/migrate/6_create_table_subscription_types.go b/pkg/migrate/6_create_table_subscription_types.go index 14791cd..716ac63 100644 --- a/pkg/migrate/6_create_table_subscription_types.go +++ b/pkg/migrate/6_create_table_subscription_types.go @@ -10,7 +10,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates subscriptionTypes table if it does not exist. +/* +CreateTableSubscriptionTypes + +Creates subscription_types table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableSubscriptionTypes(db pg.DB) error { models := []interface{}{ (*models.SubscriptionType)(nil), diff --git a/pkg/migrate/7_create_table_subscriptions.go b/pkg/migrate/7_create_table_subscriptions.go index 7caf874..a7e5977 100644 --- a/pkg/migrate/7_create_table_subscriptions.go +++ b/pkg/migrate/7_create_table_subscriptions.go @@ -9,7 +9,15 @@ import ( "github.com/go-pg/pg/v10/orm" ) -// Creates subscriptions table if it does not exist. +/* +CreateTableSubscriptions + +Creates subscriptions table if it does not exist. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with table creation +*/ func CreateTableSubscriptions(db pg.DB) error { models := []interface{}{ (*models.Subscription)(nil), diff --git a/pkg/migrate/8_populate_subscription_types.go b/pkg/migrate/8_populate_subscription_types.go index 6ccb68a..c2703d4 100644 --- a/pkg/migrate/8_populate_subscription_types.go +++ b/pkg/migrate/8_populate_subscription_types.go @@ -8,7 +8,15 @@ import ( "github.com/go-pg/pg/v10" ) -// Populates subscriptionTypes table if it does not exist. +/* +PopulateSubscriptionTypes + +Populates subscription_types table if it exists. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with populating table +*/ func PopulateSubscriptionTypes(db pg.DB) error { daily := new(models.SubscriptionType) weekly := new(models.SubscriptionType) diff --git a/pkg/migrate/9_populate_transaction_types.go b/pkg/migrate/9_populate_transaction_types.go index f6adbe0..7b3a27f 100644 --- a/pkg/migrate/9_populate_transaction_types.go +++ b/pkg/migrate/9_populate_transaction_types.go @@ -8,7 +8,15 @@ import ( "github.com/go-pg/pg/v10" ) -// Populates transactionTypes table if it does not exist. +/* +PopulateTransactionTypes + +Populates transaction_types table if it exists. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with populating table +*/ func PopulateTransactionTypes(db pg.DB) error { gain := new(models.TransactionType) expense := new(models.TransactionType) diff --git a/pkg/migrate/migrate.go b/pkg/migrate/migrate.go index fcc464b..6134eb2 100644 --- a/pkg/migrate/migrate.go +++ b/pkg/migrate/migrate.go @@ -4,7 +4,15 @@ import ( "github.com/go-pg/pg/v10" ) -// Starts database migration. +/* +Start + +Starts database migration. + Args: + *pg.DB: Postgres database client + Returns: + error: Returns if there is an error with populating table +*/ func Start(conn *pg.DB, version string) { migration001 := Migration{ Version: "001", diff --git a/pkg/models/db.go b/pkg/models/db.go index fe1ac9c..f80637a 100644 --- a/pkg/models/db.go +++ b/pkg/models/db.go @@ -12,6 +12,11 @@ type BaseModel struct { DateUpdated time.Time `json:"dateUpdated" pg:"date_updated"` } +/* +Init + +Initializes base model with DateCreated, DateUpdated, and Id values. +*/ func (cm *BaseModel) Init() { date := time.Now() cm.Id = uuid.NewString() diff --git a/pkg/models/register.go b/pkg/models/register.go index 7ddef46..0a90960 100644 --- a/pkg/models/register.go +++ b/pkg/models/register.go @@ -16,6 +16,13 @@ type UserReturnInfo struct { Email string `json:"email"` } +/* +Payload + +Maps User object to UserReturnInfo object. + Returns: + *UserReturnInfo: mapped UserReturnInfo object +*/ func (um *User) Payload() *UserReturnInfo { payload := new(UserReturnInfo) payload.BaseModel = um.BaseModel diff --git a/pkg/models/subscriptions.go b/pkg/models/subscriptions.go index ce7f29f..e605a12 100644 --- a/pkg/models/subscriptions.go +++ b/pkg/models/subscriptions.go @@ -49,6 +49,13 @@ type SubscriptionEnd struct { Id string `json:"id" form:"id"` } +/* +ToTrans + +Maps Subscription object to Transaction object. + Returns: + *Transaction: mapped Transaction object +*/ func (cm *Subscription) ToTrans() *Transaction { trans := new(Transaction) trans.Init() @@ -63,6 +70,13 @@ func (cm *Subscription) ToTrans() *Transaction { return trans } +/* +HasNew + +Checks if Subscription reached new transaction interval. + Returns: + bool: Is new transaction interval reached +*/ func (cm *Subscription) HasNew() bool { trans := cm.TransactionType if trans != nil { diff --git a/pkg/services/api.go b/pkg/services/api.go index bec1780..16f42b7 100644 --- a/pkg/services/api.go +++ b/pkg/services/api.go @@ -12,7 +12,15 @@ type ApiService struct { Db *pg.DB } -// Gets first row from API table. +/* +GetFirst + +Gets first row from API table. + Args: + context.Context: Application context + Returns: + models.ApiModel: Api object from database. +*/ func (as *ApiService) GetFirst(ctx context.Context) models.ApiModel { db := as.Db.WithContext(ctx) @@ -21,9 +29,17 @@ func (as *ApiService) GetFirst(ctx context.Context) models.ApiModel { return apiModel } -// Starts database migration. -// -// Takes migration version. +/* +PostMigrate + +Starts database migration. + Args: + context.Context: Application context + string: Migration version + Returns: + *models.MessageResponse: Message response object. + *models.Exception: Exception response object. +*/ 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 62bd117..5c26047 100644 --- a/pkg/services/services.go +++ b/pkg/services/services.go @@ -7,7 +7,15 @@ import ( "github.com/go-pg/pg/v10" ) -// Adds filters to query and executes it. +/* +FilteredResponse + +Adds filters to query and executes it. + Args: + *pg.Query: postgres query + interface{}: model to be mapped from query execution. + *models.FilteredResponse: filter options. +*/ 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 3072545..1594558 100644 --- a/pkg/services/subscriptionTypes.go +++ b/pkg/services/subscriptionTypes.go @@ -12,7 +12,16 @@ type SubscriptionTypeService struct { Db *pg.DB } -// Inserts new row to subscription type table. +/* +New + +Inserts new row to subscription type table. + Args: + context.Context: Application context + *models.NewSubscriptionTypeBody: Values to create new row + Returns: + *models.SubscriptionType: Created row from database. +*/ func (as *SubscriptionTypeService) New(ctx context.Context, body *models.NewSubscriptionTypeBody) *models.SubscriptionType { db := as.Db.WithContext(ctx) @@ -27,7 +36,16 @@ func (as *SubscriptionTypeService) New(ctx context.Context, body *models.NewSubs return tm } -// Gets all rows from subscription type table. +/* +GetAll + +Gets all rows from subscription type table. + Args: + context.Context: Application context + string: Relations to embed + Returns: + *[]models.SubscriptionType: List of subscription type objects. +*/ 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 4211a9f..2fcbcec 100644 --- a/pkg/services/subscriptions.go +++ b/pkg/services/subscriptions.go @@ -14,7 +14,16 @@ type SubscriptionService struct { Db *pg.DB } -// Inserts new row to subscription table. +/* +New + +Inserts new row to subscription table. + Args: + context.Context: Application context + *models.NewSubscriptionBody: Request body + Returns: + *models.Subscription: Created Subscription row object from database. +*/ func (as *SubscriptionService) New(ctx context.Context, body *models.NewSubscriptionBody) *models.Subscription { db := as.Db.WithContext(ctx) @@ -49,7 +58,18 @@ func (as *SubscriptionService) New(ctx context.Context, body *models.NewSubscrip return tm } -// Gets row from subscription table by id. +/* +Get + +Gets row from subscription table by id. + Args: + context.Context: Application context + *models.Auth: Authentication model + string: subscription id to search + params: *models.Params + Returns: + *models.Subscription: Subscription row object from database. +*/ func (as *SubscriptionService) Get(ctx context.Context, am *models.Auth, id string, params *models.Params) *models.Subscription { db := as.Db.WithContext(ctx) @@ -71,7 +91,16 @@ func (as *SubscriptionService) Get(ctx context.Context, am *models.Auth, id stri return wm } -// Gets filtered rows from subscription table. +/* +GetAll + +Gets filtered rows from subscription table. + Args: + context.Context: Application context + *models.Auth: Authentication object + string: Wallet id to search + *models.FilteredResponse: filter options +*/ func (as *SubscriptionService) GetAll(ctx context.Context, am *models.Auth, walletId string, filtered *models.FilteredResponse) { db := as.Db.WithContext(ctx) @@ -94,7 +123,17 @@ func (as *SubscriptionService) GetAll(ctx context.Context, am *models.Auth, wall tx.Commit() } -// Updates row from subscription table by id. +/* +Edit + +Updates row from subscription table by id. + Args: + context.Context: Application context + *models.SubscriptionEdit: Values to edit + string: id to search + Returns: + *models.Subscription: Edited Subscription row object from database. +*/ func (as *SubscriptionService) Edit(ctx context.Context, body *models.SubscriptionEdit, id string) *models.Subscription { db := as.Db.WithContext(ctx) @@ -118,9 +157,18 @@ func (as *SubscriptionService) Edit(ctx context.Context, body *models.Subscripti return tm } -// Updates row in subscription table by id. -// -// Ends subscription with current date. +/* +End + +Updates row in subscription table by id. + +Ends subscription with current date. + Args: + context.Context: Application context + string: id to search + Returns: + *models.Subscription: Created Subscription row object from database. +*/ func (as *SubscriptionService) End(ctx context.Context, id string) *models.Subscription { db := as.Db.WithContext(ctx) @@ -139,7 +187,14 @@ func (as *SubscriptionService) End(ctx context.Context, id string) *models.Subsc return tm } -// Generates and Inserts new Transaction rows from the subscription model. +/* +SubToTrans + +Generates and Inserts new Transaction rows from the subscription model. + Args: + *models.Subscription: Subscription model to generate new transactions from + *pg.Tx: Postgres query context +*/ 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 de8d517..8f2cf9f 100644 --- a/pkg/services/transactionTypes.go +++ b/pkg/services/transactionTypes.go @@ -12,7 +12,16 @@ type TransactionTypeService struct { Db *pg.DB } -// Inserts new row to transaction type table. +/* +New + +Inserts new row to transaction type table. + Args: + context.Context: Application context + *models.NewTransactionTypeBody: object to create + Returns: + *models.TransactionType: Transaction Type object from database. +*/ func (as *TransactionTypeService) New(ctx context.Context, body *models.NewTransactionTypeBody) *models.TransactionType { db := as.Db.WithContext(ctx) @@ -27,7 +36,16 @@ func (as *TransactionTypeService) New(ctx context.Context, body *models.NewTrans return tm } -// Gets all rows from transaction type table. +/* +GetAll + +Gets all rows from transaction type table. + Args: + context.Context: Application context + string: Relations to embed + Returns: + *[]models.TransactionType: List of Transaction type objects from database. +*/ 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 b4c4283..86dba15 100644 --- a/pkg/services/transactions.go +++ b/pkg/services/transactions.go @@ -15,6 +15,16 @@ type TransactionService struct { Ss *SubscriptionService } +/* +GetAll + +Gets all rows from subscription type table. + Args: + context.Context: Application context + string: Relations to embed + Returns: + *[]models.SubscriptionType: List of subscription type objects. +*/ // Inserts new row to transaction table. func (as *TransactionService) New(ctx context.Context, body *models.NewTransactionBody) *models.Transaction { db := as.Db.WithContext(ctx) @@ -43,6 +53,16 @@ func (as *TransactionService) New(ctx context.Context, body *models.NewTransacti return tm } +/* +GetAll + +Gets all rows from subscription type table. + Args: + context.Context: Application context + string: Relations to embed + Returns: + *[]models.SubscriptionType: List of subscription type objects. +*/ // 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) @@ -75,7 +95,17 @@ func (as *TransactionService) GetAll(ctx context.Context, am *models.Auth, walle tx.Commit() } -// Updates row in transaction table by id. +/* +Edit + +Updates row in transaction table by id. + Args: + context.Context: Application context + *models.TransactionEdit: Object to edit + string: id to search + Returns: + *models.Transaction: Transaction object from database. +*/ func (as *TransactionService) Edit(ctx context.Context, body *models.TransactionEdit, id string) *models.Transaction { db := as.Db.WithContext(ctx) @@ -99,7 +129,18 @@ func (as *TransactionService) Edit(ctx context.Context, body *models.Transaction return tm } -// Gets row from transaction table by id. +/* +Get + +Gets row from transaction table by id. + Args: + context.Context: Application context + *models.Auth: Authentication object + string: id to search + *model.Params: url query parameters + Returns: + *models.Transaction: Transaction object from database. +*/ 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 f400e55..bb9bb61 100644 --- a/pkg/services/users.go +++ b/pkg/services/users.go @@ -18,7 +18,18 @@ type UsersService struct { Db *pg.DB } -// Inserts new row to users table. + +/* +Create + +Inserts new row to users table. + Args: + context.Context: Application context + *models.User: User object to create + Returns: + *models.User: User object from database + *models.Exception +*/ func (us *UsersService) Create(ctx context.Context, registerBody *models.User) (*models.User, *models.Exception) { db := us.Db.WithContext(ctx) @@ -53,7 +64,17 @@ func (us *UsersService) Create(ctx context.Context, registerBody *models.User) ( return registerBody, exceptionReturn } -// Gets row from users table by email and valid password. +/* +Login + +Gets row from users table by email and valid password. + Args: + context.Context: Application context + *models.Login: object to search + Returns: + *models.Token: new session token + *models.Exception +*/ func (us *UsersService) Login(ctx context.Context, loginBody *models.Login) (*models.Token, *models.Exception) { db := us.Db.WithContext(ctx) @@ -91,9 +112,19 @@ 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 +/* +Deactivate + +Updates row in users table. + +IsActive column is set to false + Args: + context.Context: Application context + *models.Auth: Authentication object + Returns: + *models.MessageResponse + *models.Exception +*/ func (us *UsersService) Deactivate(ctx context.Context, auth *models.Auth) (*models.MessageResponse, *models.Exception) { db := us.Db.WithContext(ctx) @@ -129,9 +160,19 @@ 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. +/* +CreateToken + +Generates new jwt token. + +It encodes the user id. Based on rememberMe it is valid through 48hours or 2hours. + Args: + *models.User: User object to encode + bool: Should function generate longer lasting token (48hrs) + Returns: + string: Generated token + error: Error that occured in the process +*/ 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 fcafe08..ecd0627 100644 --- a/pkg/services/wallets.go +++ b/pkg/services/wallets.go @@ -14,7 +14,16 @@ type WalletService struct { Ss *SubscriptionService } -// Inserts row to wallets table. +/* +New + +Inserts row to wallets table. + Args: + context.Context: Application context + *models.NewWalletBody: Object to be inserted + Returns: + *models.Wallet: Wallet object from database. +*/ func (as *WalletService) New(ctx context.Context, am *models.NewWalletBody) *models.Wallet { db := as.Db.WithContext(ctx) @@ -26,7 +35,17 @@ func (as *WalletService) New(ctx context.Context, am *models.NewWalletBody) *mod return walletModel } -// Updates row in wallets table by id. +/* +Edit + +Updates row in wallets table by id. + Args: + context.Context: Application context + *models.WalletEdit: Object to be edited + string: id to search + Returns: + *models.Wallet: Wallet object from database. +*/ func (as *WalletService) Edit(ctx context.Context, body *models.WalletEdit, id string) *models.Wallet { db := as.Db.WithContext(ctx) @@ -44,7 +63,17 @@ func (as *WalletService) Edit(ctx context.Context, body *models.WalletEdit, id s return tm } -// Gets row in wallets table by id. +/* +Get + +Gets row in wallets table by id. + Args: + context.Context: Application context + string: id to search + *models.Params: url query parameters + Returns: + *models.Wallet: Wallet object from database +*/ func (as *WalletService) Get(ctx context.Context, id string, params *models.Params) *models.Wallet { db := as.Db.WithContext(ctx) @@ -62,7 +91,15 @@ func (as *WalletService) Get(ctx context.Context, id string, params *models.Para return wm } -// Gets filtered rows from wallets table. +/* +GetAll + +Gets filtered rows from wallets table. + Args: + context.Context: Application context + *models.Auth: Authentication object + *models.FilteredResponse: filter options +*/ func (as *WalletService) GetAll(ctx context.Context, am *models.Auth, filtered *models.FilteredResponse) { db := as.Db.WithContext(ctx) wm := new([]models.Wallet) @@ -71,9 +108,19 @@ 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. +/* +GetHeader + +Gets row from wallets table. + +Calculates previous month, current and next month totals. + Args: + context.Context: Application context + *models.Auth: Authentication object + string: wallet id to search + Returns: + *models.WalletHeader: generated wallet header object +*/ func (as *WalletService) GetHeader(ctx context.Context, am *models.Auth, walletId string) *models.WalletHeader { db := as.Db.WithContext(ctx) @@ -181,9 +228,17 @@ 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. +/* +addWhere + +Appends Transaction to the belonging walletId. + +If missing, it creates the item list. + Args: + *[]models.WalletTransactions: list to append to + string: wallet id to check + models.Transaction: Transaction to append +*/ func addWhere(s *[]models.WalletTransactions, walletId string, e models.Transaction) { var exists bool for a := range *s {