From b04079a554b11cc93eee74cedf571b33d5c907e5 Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Fri, 18 Apr 2025 01:55:43 +0700 Subject: [PATCH] feat: update csrf header on all api, add subscription api, fixing update repo in all service --- app/database/entity/subscription.entity.go | 11 + app/database/index.database.go | 1 + .../controller/activity_logs.controller.go | 3 + .../controller/advertisement.controller.go | 5 + .../repository/advertisement.repository.go | 11 +- .../service/advertisement.service.go | 27 +- .../article_approvals.controller.go | 3 + .../article_approvals.repository.go | 7 +- .../article_categories.controller.go | 4 + .../article_categories.repository.go | 7 +- .../article_category_details.controller.go | 3 + .../controller/article_comments.controller.go | 4 + .../repository/article_comments.repository.go | 7 +- .../controller/article_files.controller.go | 3 + .../repository/article_files.repository.go | 7 +- .../controller/article_nulis_ai.controller.go | 4 + .../controller/articles.controller.go | 6 + .../repository/articles.repository.go | 7 +- .../custom_static_pages.controller.go | 3 + .../custom_static_pages.repository.go | 7 +- .../controller/feedbacks.controller.go | 3 + .../repository/feedbacks.repository.go | 7 +- .../controller/magazine_files.controller.go | 5 +- .../repository/magazine_files.repository.go | 7 +- .../controller/magazines.controller.go | 6 +- .../repository/magazines.repository.go | 7 +- .../controller/master_menus.controller.go | 3 + .../controller/master_modules.controller.go | 3 + .../subscription/controller/controller.go | 16 + .../controller/subscription.controller.go | 192 ++++ .../mapper/subscription.mapper.go | 19 + .../repository/subscription.repository.go | 89 ++ .../request/subscription.request.go | 53 ++ .../response/subscription.response.go | 11 + .../service/subscription.service.go | 82 ++ .../subscription/subscription.module.go | 53 ++ .../controller/user_levels.controller.go | 4 + .../repository/user_levels.repository.go | 7 +- .../user_role_accesses.controller.go | 3 + .../controller/user_roles.controller.go | 3 + .../repository/user_roles.repository.go | 7 +- .../users/controller/users.controller.go | 14 +- .../users/repository/users.repository.go | 24 +- app/router/api.go | 5 + docs/swagger/docs.go | 891 +++++++++++++++++- docs/swagger/swagger.json | 891 +++++++++++++++++- docs/swagger/swagger.yaml | 612 +++++++++++- main.go | 2 + 48 files changed, 3076 insertions(+), 73 deletions(-) create mode 100644 app/database/entity/subscription.entity.go create mode 100644 app/module/subscription/controller/controller.go create mode 100644 app/module/subscription/controller/subscription.controller.go create mode 100644 app/module/subscription/mapper/subscription.mapper.go create mode 100644 app/module/subscription/repository/subscription.repository.go create mode 100644 app/module/subscription/request/subscription.request.go create mode 100644 app/module/subscription/response/subscription.response.go create mode 100644 app/module/subscription/service/subscription.service.go create mode 100644 app/module/subscription/subscription.module.go diff --git a/app/database/entity/subscription.entity.go b/app/database/entity/subscription.entity.go new file mode 100644 index 0000000..ef9de18 --- /dev/null +++ b/app/database/entity/subscription.entity.go @@ -0,0 +1,11 @@ +package entity + +import "time" + +type Subscription struct { + ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` + Email string `json:"email" gorm:"type:varchar"` + IsActive bool `json:"is_active" gorm:"type:bool;default:true"` + CreatedAt time.Time `json:"created_at" gorm:"default:now()"` + UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` +} diff --git a/app/database/index.database.go b/app/database/index.database.go index 0b0eea2..32c46e3 100644 --- a/app/database/index.database.go +++ b/app/database/index.database.go @@ -108,6 +108,7 @@ func Models() []interface{} { entity.MasterApprovalStatuses{}, entity.Provinces{}, entity.OneTimePasswords{}, + entity.Subscription{}, entity.UserLevels{}, entity.UserRoles{}, entity.UserRoleAccesses{}, diff --git a/app/module/activity_logs/controller/activity_logs.controller.go b/app/module/activity_logs/controller/activity_logs.controller.go index 0f3002c..8f67046 100644 --- a/app/module/activity_logs/controller/activity_logs.controller.go +++ b/app/module/activity_logs/controller/activity_logs.controller.go @@ -105,6 +105,7 @@ func (_i *activityLogsController) Show(c *fiber.Ctx) error { // @Description API for create ActivityLogs // @Tags ActivityLogs // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string false "Insert your access token" default(Bearer ) // @Param payload body request.ActivityLogsCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -142,6 +143,7 @@ func (_i *activityLogsController) Save(c *fiber.Ctx) error { // @Description API for update ActivityLogs // @Tags ActivityLogs // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ActivityLogsUpdateRequest true "Required payload" // @Param id path int true "ActivityLogs ID" // @Success 200 {object} response.Response @@ -176,6 +178,7 @@ func (_i *activityLogsController) Update(c *fiber.Ctx) error { // @Description API for delete ActivityLogs // @Tags ActivityLogs // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ActivityLogs ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/advertisement/controller/advertisement.controller.go b/app/module/advertisement/controller/advertisement.controller.go index 5c24ec7..c9d8a60 100644 --- a/app/module/advertisement/controller/advertisement.controller.go +++ b/app/module/advertisement/controller/advertisement.controller.go @@ -110,6 +110,7 @@ func (_i *advertisementController) Show(c *fiber.Ctx) error { // @Description API for create Advertisement // @Tags Advertisement // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.AdvertisementCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -141,6 +142,7 @@ func (_i *advertisementController) Save(c *fiber.Ctx) error { // @Tags Advertisement // @Security Bearer // @Produce json +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param file formData file true "Upload file" multiple false // @Param id path int true "Advertisement ID" // @Success 200 {object} response.Response @@ -170,6 +172,7 @@ func (_i *advertisementController) Upload(c *fiber.Ctx) error { // @Description API for update Advertisement // @Tags Advertisement // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.AdvertisementUpdateRequest true "Required payload" // @Param id path int true "Advertisement ID" // @Success 200 {object} response.Response @@ -204,6 +207,7 @@ func (_i *advertisementController) Update(c *fiber.Ctx) error { // @Description API for Update Publish Advertisement // @Tags Advertisement // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param id path int true "Advertisement ID" // @Param isPublish query bool true "Advertisement Publish Status" @@ -239,6 +243,7 @@ func (_i *advertisementController) UpdatePublish(c *fiber.Ctx) error { // @Description API for delete Advertisement // @Tags Advertisement // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Advertisement ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/advertisement/repository/advertisement.repository.go b/app/module/advertisement/repository/advertisement.repository.go index ef68d38..e2f5580 100644 --- a/app/module/advertisement/repository/advertisement.repository.go +++ b/app/module/advertisement/repository/advertisement.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/advertisement/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -21,7 +22,7 @@ type AdvertisementRepository interface { FindOne(id uint) (advertisement *entity.Advertisement, err error) FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error) Create(advertisement *entity.Advertisement) (advertisementReturn *entity.Advertisement, err error) - Update(id uint, advertisement map[string]interface{}) (err error) + Update(id uint, advertisement *entity.Advertisement) (err error) Delete(id uint) (err error) } @@ -103,10 +104,14 @@ func (_i *advertisementRepository) Create(advertisement *entity.Advertisement) ( return advertisement, result.Error } -func (_i *advertisementRepository) Update(id uint, advertisement map[string]interface{}) (err error) { +func (_i *advertisementRepository) Update(id uint, advertisement *entity.Advertisement) (err error) { + advertisementMap, err := utilSvc.StructToMap(advertisement) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.Advertisement{}). Where(&entity.Advertisement{ID: id}). - Updates(advertisement).Error + Updates(advertisementMap).Error } func (_i *advertisementRepository) Delete(id uint) error { diff --git a/app/module/advertisement/service/advertisement.service.go b/app/module/advertisement/service/advertisement.service.go index 9a87222..f95dc99 100644 --- a/app/module/advertisement/service/advertisement.service.go +++ b/app/module/advertisement/service/advertisement.service.go @@ -15,7 +15,6 @@ import ( config "go-humas-be/config/config" minioStorage "go-humas-be/config/config" "go-humas-be/utils/paginator" - utilSvc "go-humas-be/utils/service" "io" "log" "math/rand" @@ -155,11 +154,7 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) { result.ContentFileName = &newFilename result.ContentFilePath = &objectName - resultMaps, err := utilSvc.StructToMap(result) - if err != nil { - return err - } - err = _i.Repo.Update(id, resultMaps) + err = _i.Repo.Update(id, result) if err != nil { return err } @@ -177,11 +172,7 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) { func (_i *advertisementService) Update(id uint, req request.AdvertisementUpdateRequest) (err error) { _i.Log.Info().Interface("data", req).Msg("") - resultMaps, err := utilSvc.StructToMap(req.ToEntity()) - if err != nil { - return err - } - return _i.Repo.Update(id, resultMaps) + return _i.Repo.Update(id, req.ToEntity()) } func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err error) { @@ -203,11 +194,7 @@ func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err erro Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish"). Interface("result", result).Msg("") - resultMaps, err := utilSvc.StructToMap(result) - if err != nil { - return err - } - return _i.Repo.Update(id, resultMaps) + return _i.Repo.Update(id, result) } func (_i *advertisementService) Delete(id uint) error { @@ -215,14 +202,8 @@ func (_i *advertisementService) Delete(id uint) error { if err != nil { return err } - result.IsActive = false - - resultMaps, err := utilSvc.StructToMap(result) - if err != nil { - return err - } - return _i.Repo.Update(id, resultMaps) + return _i.Repo.Update(id, result) } func (_i *advertisementService) Viewer(c *fiber.Ctx) (err error) { diff --git a/app/module/article_approvals/controller/article_approvals.controller.go b/app/module/article_approvals/controller/article_approvals.controller.go index d66f25a..6014895 100644 --- a/app/module/article_approvals/controller/article_approvals.controller.go +++ b/app/module/article_approvals/controller/article_approvals.controller.go @@ -107,6 +107,7 @@ func (_i *articleApprovalsController) Show(c *fiber.Ctx) error { // @Description API for create ArticleApprovals // @Tags ArticleApprovals // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.ArticleApprovalsCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -138,6 +139,7 @@ func (_i *articleApprovalsController) Save(c *fiber.Ctx) error { // @Description API for update ArticleApprovals // @Tags ArticleApprovals // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleApprovalsUpdateRequest true "Required payload" // @Param id path int true "ArticleApprovals ID" // @Success 200 {object} response.Response @@ -172,6 +174,7 @@ func (_i *articleApprovalsController) Update(c *fiber.Ctx) error { // @Description API for delete ArticleApprovals // @Tags ArticleApprovals // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleApprovals ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/article_approvals/repository/article_approvals.repository.go b/app/module/article_approvals/repository/article_approvals.repository.go index 44aa3f6..bb458cd 100644 --- a/app/module/article_approvals/repository/article_approvals.repository.go +++ b/app/module/article_approvals/repository/article_approvals.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/article_approvals/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -89,9 +90,13 @@ func (_i *articleApprovalsRepository) Create(articleApprovals *entity.ArticleApp } func (_i *articleApprovalsRepository) Update(id uint, articleApprovals *entity.ArticleApprovals) (err error) { + articleApprovalsMap, err := utilSvc.StructToMap(articleApprovals) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.ArticleApprovals{}). Where(&entity.ArticleApprovals{ID: id}). - Updates(articleApprovals).Error + Updates(articleApprovalsMap).Error } func (_i *articleApprovalsRepository) Delete(id uint) error { diff --git a/app/module/article_categories/controller/article_categories.controller.go b/app/module/article_categories/controller/article_categories.controller.go index baa4e54..b7826fd 100644 --- a/app/module/article_categories/controller/article_categories.controller.go +++ b/app/module/article_categories/controller/article_categories.controller.go @@ -166,6 +166,7 @@ func (_i *articleCategoriesController) ShowBySlug(c *fiber.Ctx) error { // @Description API for create ArticleCategories // @Tags Article Categories // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.ArticleCategoriesCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -198,6 +199,7 @@ func (_i *articleCategoriesController) Save(c *fiber.Ctx) error { // @Tags Article Categories // @Security Bearer // @Produce json +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param files formData file true "Upload thumbnail" // @Param id path int true "ArticleCategories ID" // @Success 200 {object} response.Response @@ -222,6 +224,7 @@ func (_i *articleCategoriesController) SaveThumbnail(c *fiber.Ctx) error { // @Description API for update ArticleCategories // @Tags Article Categories // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleCategoriesUpdateRequest true "Required payload" // @Param id path int true "ArticleCategories ID" // @Success 200 {object} response.Response @@ -256,6 +259,7 @@ func (_i *articleCategoriesController) Update(c *fiber.Ctx) error { // @Description API for delete ArticleCategories // @Tags Article Categories // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleCategories ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/article_categories/repository/article_categories.repository.go b/app/module/article_categories/repository/article_categories.repository.go index 23f2917..5b53014 100644 --- a/app/module/article_categories/repository/article_categories.repository.go +++ b/app/module/article_categories/repository/article_categories.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/article_categories/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -119,9 +120,13 @@ func (_i *articleCategoriesRepository) Create(articleCategories *entity.ArticleC } func (_i *articleCategoriesRepository) Update(id uint, articleCategories *entity.ArticleCategories) (err error) { + articleCategoriesMap, err := utilSvc.StructToMap(articleCategories) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.ArticleCategories{}). Where(&entity.ArticleCategories{ID: id}). - Updates(articleCategories).Error + Updates(articleCategoriesMap).Error } func (_i *articleCategoriesRepository) Delete(id uint) error { diff --git a/app/module/article_category_details/controller/article_category_details.controller.go b/app/module/article_category_details/controller/article_category_details.controller.go index 976f605..f4e2f33 100644 --- a/app/module/article_category_details/controller/article_category_details.controller.go +++ b/app/module/article_category_details/controller/article_category_details.controller.go @@ -95,6 +95,7 @@ func (_i *articleCategoryDetailsController) Show(c *fiber.Ctx) error { // @Description API for create ArticleCategoryDetails // @Tags Untags // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Body request.ArticleCategoryDetailsCreateRequest // @Success 200 {object} response.Response // @Failure 401 {object} response.Response @@ -123,6 +124,7 @@ func (_i *articleCategoryDetailsController) Save(c *fiber.Ctx) error { // @Description API for update ArticleCategoryDetails // @Tags Untags // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Body request.ArticleCategoryDetailsUpdateRequest // @Param id path int true "ArticleCategoryDetails ID" // @Success 200 {object} response.Response @@ -157,6 +159,7 @@ func (_i *articleCategoryDetailsController) Update(c *fiber.Ctx) error { // @Description API for delete ArticleCategoryDetails // @Tags Untags // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleCategoryDetails ID" // @Success 200 {object} response.Response // @Failure 401 {object} response.Response diff --git a/app/module/article_comments/controller/article_comments.controller.go b/app/module/article_comments/controller/article_comments.controller.go index 436ad3c..4f78b13 100644 --- a/app/module/article_comments/controller/article_comments.controller.go +++ b/app/module/article_comments/controller/article_comments.controller.go @@ -107,6 +107,7 @@ func (_i *articleCommentsController) Show(c *fiber.Ctx) error { // @Description API for create ArticleComments // @Tags ArticleComments // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.ArticleCommentsCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -138,6 +139,7 @@ func (_i *articleCommentsController) Save(c *fiber.Ctx) error { // @Description API for update ArticleComments // @Tags ArticleComments // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleCommentsUpdateRequest true "Required payload" // @Param id path int true "ArticleComments ID" // @Success 200 {object} response.Response @@ -172,6 +174,7 @@ func (_i *articleCommentsController) Update(c *fiber.Ctx) error { // @Description API for delete ArticleComments // @Tags ArticleComments // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleComments ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -200,6 +203,7 @@ func (_i *articleCommentsController) Delete(c *fiber.Ctx) error { // @Description API for Approval ArticleComments // @Tags ArticleComments // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleCommentsApprovalRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/article_comments/repository/article_comments.repository.go b/app/module/article_comments/repository/article_comments.repository.go index f7d3c79..03426e6 100644 --- a/app/module/article_comments/repository/article_comments.repository.go +++ b/app/module/article_comments/repository/article_comments.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/article_comments/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -91,9 +92,13 @@ func (_i *articleCommentsRepository) Create(articleComments *entity.ArticleComme } func (_i *articleCommentsRepository) Update(id uint, articleComments *entity.ArticleComments) (err error) { + articleCommentsMap, err := utilSvc.StructToMap(articleComments) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.ArticleComments{}). Where(&entity.ArticleComments{ID: id}). - Updates(articleComments).Error + Updates(articleCommentsMap).Error } func (_i *articleCommentsRepository) Delete(id uint) error { diff --git a/app/module/article_files/controller/article_files.controller.go b/app/module/article_files/controller/article_files.controller.go index 14d0c16..34dc3f8 100644 --- a/app/module/article_files/controller/article_files.controller.go +++ b/app/module/article_files/controller/article_files.controller.go @@ -106,6 +106,7 @@ func (_i *articleFilesController) Show(c *fiber.Ctx) error { // @Tags Article Files // @Security Bearer // @Produce json +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param files formData file true "Upload file" multiple true // @Param articleId path int true "Article ID" // @Success 200 {object} response.Response @@ -135,6 +136,7 @@ func (_i *articleFilesController) Save(c *fiber.Ctx) error { // @Description API for update ArticleFiles // @Tags Article Files // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleFilesUpdateRequest true "Required payload" // @Param id path int true "ArticleFiles ID" // @Success 200 {object} response.Response @@ -169,6 +171,7 @@ func (_i *articleFilesController) Update(c *fiber.Ctx) error { // @Description API for delete ArticleFiles // @Tags Article Files // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleFiles ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/article_files/repository/article_files.repository.go b/app/module/article_files/repository/article_files.repository.go index fa70906..85b5c4a 100644 --- a/app/module/article_files/repository/article_files.repository.go +++ b/app/module/article_files/repository/article_files.repository.go @@ -6,6 +6,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/article_files/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -103,9 +104,13 @@ func (_i *articleFilesRepository) Create(articleFiles *entity.ArticleFiles) (err } func (_i *articleFilesRepository) Update(id uint, articleFiles *entity.ArticleFiles) (err error) { + articleFilesMap, err := utilSvc.StructToMap(articleFiles) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.ArticleFiles{}). Where(&entity.ArticleFiles{ID: id}). - Updates(articleFiles).Error + Updates(articleFilesMap).Error } func (_i *articleFilesRepository) Delete(id uint) error { diff --git a/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go b/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go index 0901727..f81541d 100644 --- a/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go +++ b/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go @@ -113,6 +113,7 @@ func (_i *articleNulisAIController) Show(c *fiber.Ctx) error { // @Description API for create ArticleNulisAI // @Tags ArticleNulisAI // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleNulisAICreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -143,6 +144,7 @@ func (_i *articleNulisAIController) Save(c *fiber.Ctx) error { // @Description API for update ArticleNulisAI // @Tags ArticleNulisAI // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleNulisAIUpdateRequest true "Required payload" // @Param id path int true "ArticleNulisAI ID" // @Success 200 {object} response.Response @@ -177,6 +179,7 @@ func (_i *articleNulisAIController) Update(c *fiber.Ctx) error { // @Description API for publish ArticleNulisAI // @Tags ArticleNulisAI // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticleNulisAIUpdateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -206,6 +209,7 @@ func (_i *articleNulisAIController) Publish(c *fiber.Ctx) error { // @Description API for delete ArticleNulisAI // @Tags ArticleNulisAI // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "ArticleNulisAI ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/articles/controller/articles.controller.go b/app/module/articles/controller/articles.controller.go index 838e478..5004945 100644 --- a/app/module/articles/controller/articles.controller.go +++ b/app/module/articles/controller/articles.controller.go @@ -116,6 +116,7 @@ func (_i *articlesController) Show(c *fiber.Ctx) error { // @Description API for create Articles // @Tags Articles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.ArticlesCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -148,6 +149,7 @@ func (_i *articlesController) Save(c *fiber.Ctx) error { // @Tags Articles // @Security Bearer // @Produce json +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param files formData file true "Upload thumbnail" // @Param id path int true "Articles ID" // @Success 200 {object} response.Response @@ -172,6 +174,7 @@ func (_i *articlesController) SaveThumbnail(c *fiber.Ctx) error { // @Description API for update Articles // @Tags Articles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.ArticlesUpdateRequest true "Required payload" // @Param id path int true "Articles ID" // @Success 200 {object} response.Response @@ -206,6 +209,7 @@ func (_i *articlesController) Update(c *fiber.Ctx) error { // @Description API for Update Banner Articles // @Tags Articles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Articles ID" // @Param isBanner query bool true "Articles Banner Status" // @Success 200 {object} response.Response @@ -240,6 +244,7 @@ func (_i *articlesController) UpdateBanner(c *fiber.Ctx) error { // @Description API for delete Articles // @Tags Articles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Articles ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -371,6 +376,7 @@ func (_i *articlesController) ArticleMonthlyStats(c *fiber.Ctx) error { // @Description API for Publish Schedule of Article // @Tags Articles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param id query int false "article id" // @Param date query string false "publish date" diff --git a/app/module/articles/repository/articles.repository.go b/app/module/articles/repository/articles.repository.go index e974ec3..1d48de8 100644 --- a/app/module/articles/repository/articles.repository.go +++ b/app/module/articles/repository/articles.repository.go @@ -8,6 +8,7 @@ import ( "go-humas-be/app/module/articles/request" "go-humas-be/app/module/articles/response" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" "time" ) @@ -138,9 +139,13 @@ func (_i *articlesRepository) Create(articles *entity.Articles) (articleReturn * } func (_i *articlesRepository) Update(id uint, articles *entity.Articles) (err error) { + articlesMap, err := utilSvc.StructToMap(articles) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.Articles{}). Where(&entity.Articles{ID: id}). - Save(articles).Error + Updates(articlesMap).Error } func (_i *articlesRepository) UpdateSkipNull(id uint, articles *entity.Articles) (err error) { diff --git a/app/module/custom_static_pages/controller/custom_static_pages.controller.go b/app/module/custom_static_pages/controller/custom_static_pages.controller.go index 60ab34f..872e928 100644 --- a/app/module/custom_static_pages/controller/custom_static_pages.controller.go +++ b/app/module/custom_static_pages/controller/custom_static_pages.controller.go @@ -133,6 +133,7 @@ func (_i *customStaticPagesController) ShowBySlug(c *fiber.Ctx) error { // @Description API for create CustomStaticPages // @Tags CustomStaticPages // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.CustomStaticPagesCreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -163,6 +164,7 @@ func (_i *customStaticPagesController) Save(c *fiber.Ctx) error { // @Description API for update CustomStaticPages // @Tags CustomStaticPages // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.CustomStaticPagesUpdateRequest true "Required payload" // @Param id path int true "CustomStaticPages ID" // @Success 200 {object} response.Response @@ -197,6 +199,7 @@ func (_i *customStaticPagesController) Update(c *fiber.Ctx) error { // @Description API for delete CustomStaticPages // @Tags CustomStaticPages // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "CustomStaticPages ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/custom_static_pages/repository/custom_static_pages.repository.go b/app/module/custom_static_pages/repository/custom_static_pages.repository.go index 0161342..494f3a3 100644 --- a/app/module/custom_static_pages/repository/custom_static_pages.repository.go +++ b/app/module/custom_static_pages/repository/custom_static_pages.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/custom_static_pages/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -96,9 +97,13 @@ func (_i *customStaticPagesRepository) Create(customStaticPages *entity.CustomSt } func (_i *customStaticPagesRepository) Update(id uint, customStaticPages *entity.CustomStaticPages) (err error) { + customStaticPagesMap, err := utilSvc.StructToMap(customStaticPages) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.CustomStaticPages{}). Where(&entity.CustomStaticPages{ID: id}). - Updates(customStaticPages).Error + Updates(customStaticPagesMap).Error } func (_i *customStaticPagesRepository) Delete(id uint) error { diff --git a/app/module/feedbacks/controller/feedbacks.controller.go b/app/module/feedbacks/controller/feedbacks.controller.go index 5719610..12df4d0 100644 --- a/app/module/feedbacks/controller/feedbacks.controller.go +++ b/app/module/feedbacks/controller/feedbacks.controller.go @@ -106,6 +106,7 @@ func (_i *feedbacksController) Show(c *fiber.Ctx) error { // @Description API for create Feedbacks // @Tags Feedbacks // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.FeedbacksCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -137,6 +138,7 @@ func (_i *feedbacksController) Save(c *fiber.Ctx) error { // @Description API for update Feedbacks // @Tags Feedbacks // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.FeedbacksUpdateRequest true "Required payload" // @Param id path int true "Feedbacks ID" // @Success 200 {object} response.Response @@ -171,6 +173,7 @@ func (_i *feedbacksController) Update(c *fiber.Ctx) error { // @Description API for delete Feedbacks // @Tags Feedbacks // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Feedbacks ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/feedbacks/repository/feedbacks.repository.go b/app/module/feedbacks/repository/feedbacks.repository.go index 0db7ed8..cb3a09e 100644 --- a/app/module/feedbacks/repository/feedbacks.repository.go +++ b/app/module/feedbacks/repository/feedbacks.repository.go @@ -8,6 +8,7 @@ import ( "go-humas-be/app/module/feedbacks/request" "go-humas-be/app/module/feedbacks/response" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" "time" ) @@ -94,9 +95,13 @@ func (_i *feedbacksRepository) Create(feedbacks *entity.Feedbacks) (feedbacksRet } func (_i *feedbacksRepository) Update(id uint, feedbacks *entity.Feedbacks) (err error) { + feedbacksMap, err := utilSvc.StructToMap(feedbacks) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.Feedbacks{}). Where(&entity.Feedbacks{ID: id}). - Updates(feedbacks).Error + Updates(feedbacksMap).Error } func (_i *feedbacksRepository) Delete(id uint) error { diff --git a/app/module/magazine_files/controller/magazine_files.controller.go b/app/module/magazine_files/controller/magazine_files.controller.go index 8b56e08..9c6571c 100644 --- a/app/module/magazine_files/controller/magazine_files.controller.go +++ b/app/module/magazine_files/controller/magazine_files.controller.go @@ -101,6 +101,7 @@ func (_i *magazineFilesController) Show(c *fiber.Ctx) error { // @Description API for create MagazineFiles // @Tags Magazine Files // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param files formData file true "Upload file" multiple true // @Param title formData string true "Magazine file title" // @Param description formData string true "Magazine file description" @@ -134,8 +135,9 @@ func (_i *magazineFilesController) Save(c *fiber.Ctx) error { // @Description API for update MagazineFiles // @Tags Magazine Files // @Security Bearer -// @Body request.MagazineFilesUpdateRequest +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "MagazineFiles ID" +// @Body request.MagazineFilesUpdateRequest // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError // @Failure 401 {object} response.UnauthorizedError @@ -167,6 +169,7 @@ func (_i *magazineFilesController) Update(c *fiber.Ctx) error { // @Description API for delete MagazineFiles // @Tags Magazine Files // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "MagazineFiles ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/magazine_files/repository/magazine_files.repository.go b/app/module/magazine_files/repository/magazine_files.repository.go index b751b83..a328552 100644 --- a/app/module/magazine_files/repository/magazine_files.repository.go +++ b/app/module/magazine_files/repository/magazine_files.repository.go @@ -6,6 +6,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/magazine_files/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -106,9 +107,13 @@ func (_i *magazineFilesRepository) Create(magazineFiles *entity.MagazineFiles) ( } func (_i *magazineFilesRepository) Update(id uint, magazineFiles *entity.MagazineFiles) (err error) { + magazineFilesMap, err := utilSvc.StructToMap(magazineFiles) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.MagazineFiles{}). Where(&entity.MagazineFiles{ID: id}). - Updates(magazineFiles).Error + Updates(magazineFilesMap).Error } func (_i *magazineFilesRepository) Delete(id uint) error { diff --git a/app/module/magazines/controller/magazines.controller.go b/app/module/magazines/controller/magazines.controller.go index 70688cd..2f28371 100644 --- a/app/module/magazines/controller/magazines.controller.go +++ b/app/module/magazines/controller/magazines.controller.go @@ -104,6 +104,7 @@ func (_i *magazinesController) Show(c *fiber.Ctx) error { // @Description API for create Magazines // @Tags Magazines // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.MagazinesCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -135,6 +136,7 @@ func (_i *magazinesController) Save(c *fiber.Ctx) error { // @Description API for update Magazines // @Tags Magazines // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Magazines ID" // @Param payload body request.MagazinesUpdateRequest true "Required payload" // @Success 200 {object} response.Response @@ -169,8 +171,9 @@ func (_i *magazinesController) Update(c *fiber.Ctx) error { // @Tags Magazines // @Security Bearer // @Produce json -// @Param files formData file true "Upload thumbnail" +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Magazine ID" +// @Param files formData file true "Upload thumbnail" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError // @Failure 401 {object} response.UnauthorizedError @@ -208,6 +211,7 @@ func (_i *magazinesController) Viewer(c *fiber.Ctx) error { // @Description API for delete Magazines // @Tags Magazines // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Magazines ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/magazines/repository/magazines.repository.go b/app/module/magazines/repository/magazines.repository.go index cc9e885..4c309d3 100644 --- a/app/module/magazines/repository/magazines.repository.go +++ b/app/module/magazines/repository/magazines.repository.go @@ -6,6 +6,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/magazines/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -99,9 +100,13 @@ func (_i *magazinesRepository) Create(magazines *entity.Magazines) (magazineRetu } func (_i *magazinesRepository) Update(id uint, magazines *entity.Magazines) (err error) { + magazinesMap, err := utilSvc.StructToMap(magazines) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.Magazines{}). Where(&entity.Magazines{ID: id}). - Updates(magazines).Error + Updates(magazinesMap).Error } func (_i *magazinesRepository) Delete(id uint) error { diff --git a/app/module/master_menus/controller/master_menus.controller.go b/app/module/master_menus/controller/master_menus.controller.go index 5c5bee8..7cf394a 100644 --- a/app/module/master_menus/controller/master_menus.controller.go +++ b/app/module/master_menus/controller/master_menus.controller.go @@ -104,6 +104,7 @@ func (_i *masterMenusController) Show(c *fiber.Ctx) error { // @Description API for create MasterMenus // @Tags MasterMenus // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.MasterMenusCreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -132,6 +133,7 @@ func (_i *masterMenusController) Save(c *fiber.Ctx) error { // @Description API for update MasterMenus // @Tags MasterMenus // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Body request.MasterMenusUpdateRequest // @Param id path int true "MasterMenus ID" // @Success 200 {object} response.Response @@ -167,6 +169,7 @@ func (_i *masterMenusController) Update(c *fiber.Ctx) error { // @Description API for delete MasterMenus // @Tags MasterMenus // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "MasterMenus ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/master_modules/controller/master_modules.controller.go b/app/module/master_modules/controller/master_modules.controller.go index f7732c8..fe539bd 100644 --- a/app/module/master_modules/controller/master_modules.controller.go +++ b/app/module/master_modules/controller/master_modules.controller.go @@ -102,6 +102,7 @@ func (_i *masterModulesController) Show(c *fiber.Ctx) error { // @Description API for create MasterModules // @Tags MasterModules // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.MasterModulesCreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -130,6 +131,7 @@ func (_i *masterModulesController) Save(c *fiber.Ctx) error { // @Description API for update MasterModules // @Tags MasterModules // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "MasterModules ID" // @Param payload body request.MasterModulesUpdateRequest true "Required payload" // @Success 200 {object} response.Response @@ -164,6 +166,7 @@ func (_i *masterModulesController) Update(c *fiber.Ctx) error { // @Description API for delete MasterModules // @Tags MasterModules // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "MasterModules ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/subscription/controller/controller.go b/app/module/subscription/controller/controller.go new file mode 100644 index 0000000..6fcdf0d --- /dev/null +++ b/app/module/subscription/controller/controller.go @@ -0,0 +1,16 @@ +package controller + +import ( + "github.com/rs/zerolog" + "go-humas-be/app/module/subscription/service" +) + +type Controller struct { + Subscription SubscriptionController +} + +func NewController(SubscriptionService service.SubscriptionService, log zerolog.Logger) *Controller { + return &Controller{ + Subscription: NewSubscriptionController(SubscriptionService, log), + } +} diff --git a/app/module/subscription/controller/subscription.controller.go b/app/module/subscription/controller/subscription.controller.go new file mode 100644 index 0000000..ef9b6dd --- /dev/null +++ b/app/module/subscription/controller/subscription.controller.go @@ -0,0 +1,192 @@ +package controller + +import ( + "github.com/gofiber/fiber/v2" + "github.com/rs/zerolog" + "go-humas-be/app/module/subscription/request" + "go-humas-be/app/module/subscription/service" + "go-humas-be/utils/paginator" + utilRes "go-humas-be/utils/response" + utilVal "go-humas-be/utils/validator" + "strconv" +) + +type subscriptionController struct { + subscriptionService service.SubscriptionService + Log zerolog.Logger +} + +type SubscriptionController interface { + All(c *fiber.Ctx) error + Show(c *fiber.Ctx) error + Save(c *fiber.Ctx) error + Update(c *fiber.Ctx) error + Delete(c *fiber.Ctx) error +} + +func NewSubscriptionController(subscriptionService service.SubscriptionService, log zerolog.Logger) SubscriptionController { + return &subscriptionController{ + subscriptionService: subscriptionService, + Log: log, + } +} + +// All get all Subscription +// @Summary Get all Subscription +// @Description API for getting all Subscription +// @Tags Subscription +// @Security Bearer +// @Param req query request.SubscriptionQueryRequest false "query parameters" +// @Param req query paginator.Pagination false "pagination parameters" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /subscription [get] +func (_i *subscriptionController) All(c *fiber.Ctx) error { + paginate, err := paginator.Paginate(c) + if err != nil { + return err + } + + reqContext := request.SubscriptionQueryRequestContext{ + Email: c.Query("email"), + } + req := reqContext.ToParamRequest() + req.Pagination = paginate + + subscriptionData, paging, err := _i.subscriptionService.All(req) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Subscription list successfully retrieved"}, + Data: subscriptionData, + Meta: paging, + }) +} + +// Show get one Subscription +// @Summary Get one Subscription +// @Description API for getting one Subscription +// @Tags Subscription +// @Security Bearer +// @Param id path int true "Subscription ID" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /subscription/{id} [get] +func (_i *subscriptionController) Show(c *fiber.Ctx) error { + id, err := strconv.ParseUint(c.Params("id"), 10, 0) + if err != nil { + return err + } + + subscriptionData, err := _i.subscriptionService.Show(uint(id)) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Subscription successfully retrieved"}, + Data: subscriptionData, + }) +} + +// Save create Subscription +// @Summary Create Subscription +// @Description API for create Subscription +// @Tags Subscription +// @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" +// @Param payload body request.SubscriptionCreateRequest true "Required payload" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /subscription [post] +func (_i *subscriptionController) Save(c *fiber.Ctx) error { + req := new(request.SubscriptionCreateRequest) + if err := utilVal.ParseAndValidate(c, req); err != nil { + return err + } + + dataResult, err := _i.subscriptionService.Save(*req) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Subscription successfully created"}, + Data: dataResult, + }) +} + +// Update update Subscription +// @Summary update Subscription +// @Description API for update Subscription +// @Tags Subscription +// @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" +// @Param payload body request.SubscriptionUpdateRequest true "Required payload" +// @Param id path int true "Subscription ID" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /subscription/{id} [put] +func (_i *subscriptionController) Update(c *fiber.Ctx) error { + id, err := strconv.ParseUint(c.Params("id"), 10, 0) + if err != nil { + return err + } + + req := new(request.SubscriptionUpdateRequest) + if err := utilVal.ParseAndValidate(c, req); err != nil { + return err + } + + err = _i.subscriptionService.Update(uint(id), *req) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Subscription successfully updated"}, + }) +} + +// Delete delete Subscription +// @Summary delete Subscription +// @Description API for delete Subscription +// @Tags Subscription +// @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" +// @Param id path int true "Subscription ID" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /subscription/{id} [delete] +func (_i *subscriptionController) Delete(c *fiber.Ctx) error { + id, err := strconv.ParseUint(c.Params("id"), 10, 0) + if err != nil { + return err + } + + err = _i.subscriptionService.Delete(uint(id)) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Subscription successfully deleted"}, + }) +} diff --git a/app/module/subscription/mapper/subscription.mapper.go b/app/module/subscription/mapper/subscription.mapper.go new file mode 100644 index 0000000..828017b --- /dev/null +++ b/app/module/subscription/mapper/subscription.mapper.go @@ -0,0 +1,19 @@ +package mapper + +import ( + "go-humas-be/app/database/entity" + res "go-humas-be/app/module/subscription/response" +) + +func SubscriptionResponseMapper(subscriptionReq *entity.Subscription) (subscriptionRes *res.SubscriptionResponse) { + if subscriptionReq != nil { + subscriptionRes = &res.SubscriptionResponse{ + ID: subscriptionReq.ID, + Email: subscriptionReq.Email, + IsActive: subscriptionReq.IsActive, + CreatedAt: subscriptionReq.CreatedAt, + UpdatedAt: subscriptionReq.UpdatedAt, + } + } + return subscriptionRes +} diff --git a/app/module/subscription/repository/subscription.repository.go b/app/module/subscription/repository/subscription.repository.go new file mode 100644 index 0000000..3c3b9fb --- /dev/null +++ b/app/module/subscription/repository/subscription.repository.go @@ -0,0 +1,89 @@ +package repository + +import ( + "fmt" + "github.com/rs/zerolog" + "go-humas-be/app/database" + "go-humas-be/app/database/entity" + "go-humas-be/app/module/subscription/request" + "go-humas-be/utils/paginator" + "strings" +) + +type subscriptionRepository struct { + DB *database.Database + Log zerolog.Logger +} + +// SubscriptionRepository define interface of ISubscriptionRepository +type SubscriptionRepository interface { + GetAll(req request.SubscriptionQueryRequest) (subscriptions []*entity.Subscription, paging paginator.Pagination, err error) + FindOne(id uint) (subscription *entity.Subscription, err error) + Create(subscription *entity.Subscription) (subscriptionReturn *entity.Subscription, err error) + Update(id uint, subscription *entity.Subscription) (err error) + Delete(id uint) (err error) +} + +func NewSubscriptionRepository(db *database.Database, logger zerolog.Logger) SubscriptionRepository { + return &subscriptionRepository{ + DB: db, + Log: logger, + } +} + +// implement interface of ISubscriptionRepository +func (_i *subscriptionRepository) GetAll(req request.SubscriptionQueryRequest) (subscriptions []*entity.Subscription, paging paginator.Pagination, err error) { + var count int64 + + query := _i.DB.DB.Model(&entity.Subscription{}) + query = query.Where("is_active = ?", true) + + if req.Email != nil && *req.Email != "" { + email := strings.ToLower(*req.Email) + query = query.Where("LOWER(email) LIKE ?", "%"+strings.ToLower(email)+"%") + } + query.Count(&count) + + if req.Pagination.SortBy != "" { + direction := "ASC" + if req.Pagination.Sort == "desc" { + direction = "DESC" + } + query.Order(fmt.Sprintf("%s %s", req.Pagination.SortBy, direction)) + } + + req.Pagination.Count = count + req.Pagination = paginator.Paging(req.Pagination) + + err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&subscriptions).Error + if err != nil { + return + } + + paging = *req.Pagination + + return +} + +func (_i *subscriptionRepository) FindOne(id uint) (subscription *entity.Subscription, err error) { + if err := _i.DB.DB.First(&subscription, id).Error; err != nil { + return nil, err + } + + return subscription, nil +} + +func (_i *subscriptionRepository) Create(subscription *entity.Subscription) (subscriptionReturn *entity.Subscription, err error) { + result := _i.DB.DB.Create(subscription) + return subscription, result.Error +} + +func (_i *subscriptionRepository) Update(id uint, subscription *entity.Subscription) (err error) { + return _i.DB.DB.Model(&entity.Subscription{}). + Where(&entity.Subscription{ID: id}). + Updates(subscription).Error +} + +func (_i *subscriptionRepository) Delete(id uint) error { + return _i.DB.DB.Delete(&entity.Subscription{}, id).Error +} diff --git a/app/module/subscription/request/subscription.request.go b/app/module/subscription/request/subscription.request.go new file mode 100644 index 0000000..8cac0d9 --- /dev/null +++ b/app/module/subscription/request/subscription.request.go @@ -0,0 +1,53 @@ +package request + +import ( + "go-humas-be/app/database/entity" + "go-humas-be/utils/paginator" + "time" +) + +type SubscriptionGeneric interface { + ToEntity() +} + +type SubscriptionQueryRequest struct { + Email *string `json:"email"` + Pagination *paginator.Pagination `json:"pagination"` +} + +type SubscriptionCreateRequest struct { + Email string `json:"email" validate:"required,email"` +} + +func (req SubscriptionCreateRequest) ToEntity() *entity.Subscription { + return &entity.Subscription{ + Email: req.Email, + } +} + +type SubscriptionUpdateRequest struct { + ID uint `json:"id" validate:"required"` + Email string `json:"email" validate:"required,email"` +} + +func (req SubscriptionUpdateRequest) ToEntity() *entity.Subscription { + return &entity.Subscription{ + ID: req.ID, + Email: req.Email, + UpdatedAt: time.Now(), + } +} + +type SubscriptionQueryRequestContext struct { + Email string `json:"email"` +} + +func (req SubscriptionQueryRequestContext) ToParamRequest() SubscriptionQueryRequest { + var request SubscriptionQueryRequest + + if email := req.Email; email != "" { + request.Email = &email + } + + return request +} diff --git a/app/module/subscription/response/subscription.response.go b/app/module/subscription/response/subscription.response.go new file mode 100644 index 0000000..b25d2d1 --- /dev/null +++ b/app/module/subscription/response/subscription.response.go @@ -0,0 +1,11 @@ +package response + +import "time" + +type SubscriptionResponse struct { + ID uint `json:"id"` + Email string `json:"email"` + IsActive bool `json:"isActive"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` +} diff --git a/app/module/subscription/service/subscription.service.go b/app/module/subscription/service/subscription.service.go new file mode 100644 index 0000000..44ae628 --- /dev/null +++ b/app/module/subscription/service/subscription.service.go @@ -0,0 +1,82 @@ +package service + +import ( + "github.com/rs/zerolog" + "go-humas-be/app/database/entity" + "go-humas-be/app/module/subscription/mapper" + "go-humas-be/app/module/subscription/repository" + "go-humas-be/app/module/subscription/request" + "go-humas-be/app/module/subscription/response" + usersRepository "go-humas-be/app/module/users/repository" + "go-humas-be/utils/paginator" +) + +// SubscriptionService +type subscriptionService struct { + Repo repository.SubscriptionRepository + UsersRepo usersRepository.UsersRepository + Log zerolog.Logger +} + +// SubscriptionService define interface of ISubscriptionService +type SubscriptionService interface { + All(req request.SubscriptionQueryRequest) (subscription []*response.SubscriptionResponse, paging paginator.Pagination, err error) + Show(id uint) (subscription *response.SubscriptionResponse, err error) + Save(req request.SubscriptionCreateRequest) (subscription *entity.Subscription, err error) + Update(id uint, req request.SubscriptionUpdateRequest) (err error) + Delete(id uint) error +} + +// NewSubscriptionService init SubscriptionService +func NewSubscriptionService(repo repository.SubscriptionRepository, log zerolog.Logger, usersRepo usersRepository.UsersRepository) SubscriptionService { + + return &subscriptionService{ + Repo: repo, + Log: log, + UsersRepo: usersRepo, + } +} + +// All implement interface of SubscriptionService +func (_i *subscriptionService) All(req request.SubscriptionQueryRequest) (subscriptions []*response.SubscriptionResponse, paging paginator.Pagination, err error) { + results, paging, err := _i.Repo.GetAll(req) + if err != nil { + return + } + + for _, result := range results { + subscriptions = append(subscriptions, mapper.SubscriptionResponseMapper(result)) + } + + return +} + +func (_i *subscriptionService) Show(id uint) (subscription *response.SubscriptionResponse, err error) { + result, err := _i.Repo.FindOne(id) + if err != nil { + return nil, err + } + + return mapper.SubscriptionResponseMapper(result), nil +} + +func (_i *subscriptionService) Save(req request.SubscriptionCreateRequest) (subscription *entity.Subscription, err error) { + _i.Log.Info().Interface("data", req).Msg("") + newReq := req.ToEntity() + return _i.Repo.Create(newReq) +} + +func (_i *subscriptionService) Update(id uint, req request.SubscriptionUpdateRequest) (err error) { + _i.Log.Info().Interface("data", req).Msg("") + return _i.Repo.Update(id, req.ToEntity()) +} + +func (_i *subscriptionService) Delete(id uint) error { + result, err := _i.Repo.FindOne(id) + if err != nil { + return err + } + + result.IsActive = true + return _i.Repo.Update(id, result) +} diff --git a/app/module/subscription/subscription.module.go b/app/module/subscription/subscription.module.go new file mode 100644 index 0000000..2c701d6 --- /dev/null +++ b/app/module/subscription/subscription.module.go @@ -0,0 +1,53 @@ +package subscription + +import ( + "github.com/gofiber/fiber/v2" + "go-humas-be/app/module/subscription/controller" + "go-humas-be/app/module/subscription/repository" + "go-humas-be/app/module/subscription/service" + "go.uber.org/fx" +) + +// struct of SubscriptionRouter +type SubscriptionRouter struct { + App fiber.Router + Controller *controller.Controller +} + +// register bulky of Subscription module +var NewSubscriptionModule = fx.Options( + // register repository of Subscription module + fx.Provide(repository.NewSubscriptionRepository), + + // register service of Subscription module + fx.Provide(service.NewSubscriptionService), + + // register controller of Subscription module + fx.Provide(controller.NewController), + + // register router of Subscription module + fx.Provide(NewSubscriptionRouter), +) + +// init SubscriptionRouter +func NewSubscriptionRouter(fiber *fiber.App, controller *controller.Controller) *SubscriptionRouter { + return &SubscriptionRouter{ + App: fiber, + Controller: controller, + } +} + +// register routes of Subscription module +func (_i *SubscriptionRouter) RegisterSubscriptionRoutes() { + // define controllers + subscriptionController := _i.Controller.Subscription + + // define routes + _i.App.Route("/subscription", func(router fiber.Router) { + router.Get("/", subscriptionController.All) + router.Get("/:id", subscriptionController.Show) + router.Post("/", subscriptionController.Save) + router.Put("/:id", subscriptionController.Update) + router.Delete("/:id", subscriptionController.Delete) + }) +} diff --git a/app/module/user_levels/controller/user_levels.controller.go b/app/module/user_levels/controller/user_levels.controller.go index 291fd1f..59ccafe 100644 --- a/app/module/user_levels/controller/user_levels.controller.go +++ b/app/module/user_levels/controller/user_levels.controller.go @@ -128,6 +128,7 @@ func (_i *userLevelsController) ShowByAlias(c *fiber.Ctx) error { // @Description API for create UserLevels // @Tags UserLevels // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserLevelsCreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -157,6 +158,7 @@ func (_i *userLevelsController) Save(c *fiber.Ctx) error { // @Description API for update UserLevels // @Tags UserLevels // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserLevelsUpdateRequest true "Required payload" // @Param id path int true "UserLevels ID" // @Success 200 {object} response.Response @@ -191,6 +193,7 @@ func (_i *userLevelsController) Update(c *fiber.Ctx) error { // @Description API for delete UserLevels // @Tags UserLevels // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "UserLevels ID" // @Success 200 {object} response.Response // @Failure 401 {object} response.Response @@ -220,6 +223,7 @@ func (_i *userLevelsController) Delete(c *fiber.Ctx) error { // @Description API for Enable Approval of Article // @Tags UserLevels // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string false "Insert your access token" default(Bearer ) // @Param payload body request.UserLevelsApprovalRequest true "Required payload" // @Success 200 {object} response.Response diff --git a/app/module/user_levels/repository/user_levels.repository.go b/app/module/user_levels/repository/user_levels.repository.go index e1e120d..ff86cf4 100644 --- a/app/module/user_levels/repository/user_levels.repository.go +++ b/app/module/user_levels/repository/user_levels.repository.go @@ -6,6 +6,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/user_levels/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -94,9 +95,13 @@ func (_i *userLevelsRepository) Create(userLevels *entity.UserLevels) (userLevel } func (_i *userLevelsRepository) Update(id uint, userLevels *entity.UserLevels) (err error) { + userLevelsMap, err := utilSvc.StructToMap(userLevels) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.UserLevels{}). Where(&entity.UserLevels{ID: id}). - Updates(userLevels).Error + Updates(userLevelsMap).Error } func (_i *userLevelsRepository) Delete(id uint) error { diff --git a/app/module/user_role_accesses/controller/user_role_accesses.controller.go b/app/module/user_role_accesses/controller/user_role_accesses.controller.go index dd9d9e9..4ac26e4 100644 --- a/app/module/user_role_accesses/controller/user_role_accesses.controller.go +++ b/app/module/user_role_accesses/controller/user_role_accesses.controller.go @@ -100,6 +100,7 @@ func (_i *userRoleAccessesController) Show(c *fiber.Ctx) error { // @Description API for create UserRoleAccesses // @Tags UserRoleAccesses // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserRoleAccessesCreateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -128,6 +129,7 @@ func (_i *userRoleAccessesController) Save(c *fiber.Ctx) error { // @Description API for update UserRoleAccesses // @Tags UserRoleAccesses // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserRoleAccessesUpdateRequest true "Required payload" // @Param id path int true "UserRoleAccesses ID" // @Success 200 {object} response.Response @@ -163,6 +165,7 @@ func (_i *userRoleAccessesController) Update(c *fiber.Ctx) error { // @Description API for delete UserRoleAccesses // @Tags UserRoleAccesses // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "UserRoleAccesses ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/user_roles/controller/user_roles.controller.go b/app/module/user_roles/controller/user_roles.controller.go index 4271176..66e781a 100644 --- a/app/module/user_roles/controller/user_roles.controller.go +++ b/app/module/user_roles/controller/user_roles.controller.go @@ -106,6 +106,7 @@ func (_i *userRolesController) Show(c *fiber.Ctx) error { // @Description API for create UserRoles // @Tags UserRoles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.UserRolesCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -137,6 +138,7 @@ func (_i *userRolesController) Save(c *fiber.Ctx) error { // @Description API for update UserRoles // @Tags UserRoles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserRolesUpdateRequest true "Required payload" // @Param id path int true "UserRoles ID" // @Success 200 {object} response.Response @@ -171,6 +173,7 @@ func (_i *userRolesController) Update(c *fiber.Ctx) error { // @Description API for delete UserRoles // @Tags UserRoles // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "UserRoles ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/user_roles/repository/user_roles.repository.go b/app/module/user_roles/repository/user_roles.repository.go index a11e31c..148de42 100644 --- a/app/module/user_roles/repository/user_roles.repository.go +++ b/app/module/user_roles/repository/user_roles.repository.go @@ -7,6 +7,7 @@ import ( "go-humas-be/app/database/entity" "go-humas-be/app/module/user_roles/request" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "strings" ) @@ -90,9 +91,13 @@ func (_i *userRolesRepository) Create(userRoles *entity.UserRoles) (userRolesRet } func (_i *userRolesRepository) Update(id uint, userRoles *entity.UserRoles) (err error) { + userRolesMap, err := utilSvc.StructToMap(userRoles) + if err != nil { + return err + } return _i.DB.DB.Model(&entity.UserRoles{}). Where(&entity.UserRoles{ID: id}). - Updates(userRoles).Error + Updates(userRolesMap).Error } func (_i *userRolesRepository) Delete(id uint) error { diff --git a/app/module/users/controller/users.controller.go b/app/module/users/controller/users.controller.go index d8d02c4..cb63983 100644 --- a/app/module/users/controller/users.controller.go +++ b/app/module/users/controller/users.controller.go @@ -174,6 +174,7 @@ func (_i *usersController) ShowInfo(c *fiber.Ctx) error { // @Description API for create Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string false "Insert your access token" default(Bearer ) // @Param payload body request.UsersCreateRequest true "Required payload" // @Success 200 {object} response.Response @@ -206,8 +207,9 @@ func (_i *usersController) Save(c *fiber.Ctx) error { // @Description API for update Users // @Tags Users // @Security Bearer -// @Param payload body request.UsersUpdateRequest true "Required payload" +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Users ID" +// @Param payload body request.UsersUpdateRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError // @Failure 401 {object} response.UnauthorizedError @@ -240,6 +242,7 @@ func (_i *usersController) Update(c *fiber.Ctx) error { // @Description API for Login Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserLogin true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -273,6 +276,7 @@ func (_i *usersController) Login(c *fiber.Ctx) error { // @Description API for ParetoLogin Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserLogin true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -306,6 +310,7 @@ func (_i *usersController) ParetoLogin(c *fiber.Ctx) error { // @Description API for delete Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param id path int true "Users ID" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -334,6 +339,7 @@ func (_i *usersController) Delete(c *fiber.Ctx) error { // @Description API for SavePassword Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param Authorization header string true "Insert your access token" default(Bearer ) // @Param payload body request.UserSavePassword true "Required payload" // @Success 200 {object} response.Response @@ -365,6 +371,7 @@ func (_i *usersController) SavePassword(c *fiber.Ctx) error { // @Description API for ResetPassword Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserResetPassword true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -393,6 +400,7 @@ func (_i *usersController) ResetPassword(c *fiber.Ctx) error { // @Description API for ForgotPassword Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserForgotPassword true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -421,6 +429,7 @@ func (_i *usersController) ForgotPassword(c *fiber.Ctx) error { // @Description API for OtpRequest Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserOtpRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -449,6 +458,7 @@ func (_i *usersController) OtpRequest(c *fiber.Ctx) error { // @Description API for OtpValidation Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserOtpValidation true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -477,6 +487,7 @@ func (_i *usersController) OtpValidation(c *fiber.Ctx) error { // @Description API for Email Validation Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserEmailValidationRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError @@ -505,6 +516,7 @@ func (_i *usersController) EmailValidation(c *fiber.Ctx) error { // @Description API for Setup Email Users // @Tags Users // @Security Bearer +// @Param X-Csrf-Token header string true "Insert the X-Csrf-Token" // @Param payload body request.UserEmailValidationRequest true "Required payload" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError diff --git a/app/module/users/repository/users.repository.go b/app/module/users/repository/users.repository.go index 1c3c95b..e10e8d3 100644 --- a/app/module/users/repository/users.repository.go +++ b/app/module/users/repository/users.repository.go @@ -1,6 +1,7 @@ package repository import ( + "encoding/json" "fmt" "github.com/rs/zerolog" "go-humas-be/app/database" @@ -137,10 +138,14 @@ func (_i *usersRepository) Create(users *users.Users) (userReturn *users.Users, return users, result.Error } -func (_i *usersRepository) Update(id uint, usersReturn *users.Users) (err error) { +func (_i *usersRepository) Update(id uint, userReturn *users.Users) (err error) { + userReturnMap, err := StructToMap(userReturn) + if err != nil { + return err + } return _i.DB.DB.Model(&users.Users{}). Where(&users.Users{ID: id}). - Updates(usersReturn).Error + Updates(userReturnMap).Error } func (_i *usersRepository) Delete(id uint) error { @@ -189,3 +194,18 @@ func (_i *usersRepository) FindOtpByIdentity(identity string, code string) (otp return otp, nil } + +func StructToMap(obj interface{}) (map[string]interface{}, error) { + var result map[string]interface{} + jsonData, err := json.Marshal(obj) + if err != nil { + return nil, err + } + + err = json.Unmarshal(jsonData, &result) + if err != nil { + return nil, err + } + + return result, nil +} diff --git a/app/router/api.go b/app/router/api.go index 85a53e4..bfd1295 100644 --- a/app/router/api.go +++ b/app/router/api.go @@ -21,6 +21,7 @@ import ( "go-humas-be/app/module/master_menus" "go-humas-be/app/module/master_modules" "go-humas-be/app/module/provinces" + "go-humas-be/app/module/subscription" "go-humas-be/app/module/user_levels" "go-humas-be/app/module/user_role_accesses" "go-humas-be/app/module/user_roles" @@ -51,6 +52,7 @@ type Router struct { MasterMenusRouter *master_menus.MasterMenusRouter MasterModulesRouter *master_modules.MasterModulesRouter ProvincesRouter *provinces.ProvincesRouter + SubscriptionRouter *subscription.SubscriptionRouter UserLevelsRouter *user_levels.UserLevelsRouter UserRoleAccessesRouter *user_role_accesses.UserRoleAccessesRouter UserRolesRouter *user_roles.UserRolesRouter @@ -79,6 +81,7 @@ func NewRouter( masterMenuRouter *master_menus.MasterMenusRouter, masterModuleRouter *master_modules.MasterModulesRouter, provincesRouter *provinces.ProvincesRouter, + subscriptionRouter *subscription.SubscriptionRouter, userLevelsRouter *user_levels.UserLevelsRouter, userRoleAccessesRouter *user_role_accesses.UserRoleAccessesRouter, userRolesRouter *user_roles.UserRolesRouter, @@ -105,6 +108,7 @@ func NewRouter( MasterMenusRouter: masterMenuRouter, MasterModulesRouter: masterModuleRouter, ProvincesRouter: provincesRouter, + SubscriptionRouter: subscriptionRouter, UserLevelsRouter: userLevelsRouter, UserRoleAccessesRouter: userRoleAccessesRouter, UserRolesRouter: userRolesRouter, @@ -141,6 +145,7 @@ func (r *Router) Register() { r.MasterMenusRouter.RegisterMasterMenusRoutes() r.MasterModulesRouter.RegisterMasterModulesRoutes() r.ProvincesRouter.RegisterProvincesRoutes() + r.SubscriptionRouter.RegisterSubscriptionRoutes() r.UserLevelsRouter.RegisterUserLevelsRoutes() r.UserRoleAccessesRouter.RegisterUserRoleAccessesRoutes() r.UsersRouter.RegisterUsersRoutes() diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index 93ac0bd..307f811 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -128,6 +128,13 @@ const docTemplate = `{ ], "summary": "Create ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -233,6 +240,13 @@ const docTemplate = `{ ], "summary": "update ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -289,6 +303,13 @@ const docTemplate = `{ ], "summary": "delete ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ActivityLogs ID", @@ -448,6 +469,13 @@ const docTemplate = `{ ], "summary": "Create Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -507,6 +535,13 @@ const docTemplate = `{ ], "summary": "Update Publish Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -574,6 +609,13 @@ const docTemplate = `{ ], "summary": "Upload Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -726,6 +768,13 @@ const docTemplate = `{ ], "summary": "update Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -782,6 +831,13 @@ const docTemplate = `{ ], "summary": "delete Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Advertisement ID", @@ -936,6 +992,13 @@ const docTemplate = `{ ], "summary": "Create ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -1042,6 +1105,13 @@ const docTemplate = `{ ], "summary": "update ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -1098,6 +1168,13 @@ const docTemplate = `{ ], "summary": "delete ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleApprovals ID", @@ -1270,6 +1347,13 @@ const docTemplate = `{ ], "summary": "Create ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -1479,6 +1563,13 @@ const docTemplate = `{ ], "summary": "Upload ArticleCategories Thumbnail", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload thumbnail", @@ -1582,6 +1673,13 @@ const docTemplate = `{ ], "summary": "update ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -1638,6 +1736,13 @@ const docTemplate = `{ ], "summary": "delete ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategories ID", @@ -1730,6 +1835,15 @@ const docTemplate = `{ "Untags" ], "summary": "Create ArticleCategoryDetails", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + } + ], "responses": { "200": { "description": "OK", @@ -1830,6 +1944,13 @@ const docTemplate = `{ ], "summary": "update ArticleCategoryDetails", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategoryDetails ID", @@ -1883,6 +2004,13 @@ const docTemplate = `{ ], "summary": "delete ArticleCategoryDetails", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategoryDetails ID", @@ -2043,6 +2171,13 @@ const docTemplate = `{ ], "summary": "Create ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -2102,6 +2237,13 @@ const docTemplate = `{ ], "summary": "Approval ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2200,6 +2342,13 @@ const docTemplate = `{ ], "summary": "update ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2256,6 +2405,13 @@ const docTemplate = `{ ], "summary": "delete ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleComments ID", @@ -2508,6 +2664,13 @@ const docTemplate = `{ ], "summary": "Upload ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -2611,6 +2774,13 @@ const docTemplate = `{ ], "summary": "Update ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2667,6 +2837,13 @@ const docTemplate = `{ ], "summary": "Delete ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleFiles ID", @@ -2836,6 +3013,13 @@ const docTemplate = `{ ], "summary": "Create ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2887,6 +3071,13 @@ const docTemplate = `{ ], "summary": "publish ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2985,6 +3176,13 @@ const docTemplate = `{ ], "summary": "update ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -3041,6 +3239,13 @@ const docTemplate = `{ ], "summary": "delete ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleNulisAI ID", @@ -3225,6 +3430,13 @@ const docTemplate = `{ ], "summary": "Create Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -3284,6 +3496,13 @@ const docTemplate = `{ ], "summary": "Update Banner Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Articles ID", @@ -3340,6 +3559,13 @@ const docTemplate = `{ ], "summary": "PublishScheduling Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -3622,6 +3848,13 @@ const docTemplate = `{ ], "summary": "Save Thumbnail Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload thumbnail", @@ -3725,6 +3958,13 @@ const docTemplate = `{ ], "summary": "Update Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -3781,6 +4021,13 @@ const docTemplate = `{ ], "summary": "Delete Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Articles ID", @@ -4207,6 +4454,13 @@ const docTemplate = `{ ], "summary": "Create CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -4354,6 +4608,13 @@ const docTemplate = `{ ], "summary": "update CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -4410,6 +4671,13 @@ const docTemplate = `{ ], "summary": "delete CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "CustomStaticPages ID", @@ -4820,6 +5088,13 @@ const docTemplate = `{ ], "summary": "Create Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -4982,6 +5257,13 @@ const docTemplate = `{ ], "summary": "update Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -5038,6 +5320,13 @@ const docTemplate = `{ ], "summary": "delete Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Feedbacks ID", @@ -5223,6 +5512,13 @@ const docTemplate = `{ ], "summary": "Update MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MagazineFiles ID", @@ -5270,6 +5566,13 @@ const docTemplate = `{ ], "summary": "delete MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MagazineFiles ID", @@ -5319,6 +5622,13 @@ const docTemplate = `{ ], "summary": "Create MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -5509,6 +5819,13 @@ const docTemplate = `{ ], "summary": "Create Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -5621,10 +5938,10 @@ const docTemplate = `{ "summary": "Save Thumbnail Magazines", "parameters": [ { - "type": "file", - "description": "Upload thumbnail", - "name": "files", - "in": "formData", + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", "required": true }, { @@ -5633,6 +5950,13 @@ const docTemplate = `{ "name": "id", "in": "path", "required": true + }, + { + "type": "file", + "description": "Upload thumbnail", + "name": "files", + "in": "formData", + "required": true } ], "responses": { @@ -5723,6 +6047,13 @@ const docTemplate = `{ ], "summary": "Update Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Magazines ID", @@ -5779,6 +6110,13 @@ const docTemplate = `{ ], "summary": "Delete Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Magazines ID", @@ -5933,6 +6271,13 @@ const docTemplate = `{ ], "summary": "Create MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -6031,6 +6376,13 @@ const docTemplate = `{ ], "summary": "Update MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterMenus ID", @@ -6084,6 +6436,13 @@ const docTemplate = `{ ], "summary": "Delete MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterMenus ID", @@ -6228,6 +6587,13 @@ const docTemplate = `{ ], "summary": "Create MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -6326,6 +6692,13 @@ const docTemplate = `{ ], "summary": "Update MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterModules ID", @@ -6382,6 +6755,13 @@ const docTemplate = `{ ], "summary": "Delete MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterModules ID", @@ -6920,6 +7300,315 @@ const docTemplate = `{ } } }, + "/subscription": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting all Subscription", + "tags": [ + "Subscription" + ], + "summary": "Get all Subscription", + "parameters": [ + { + "type": "string", + "name": "email", + "in": "query" + }, + { + "type": "integer", + "name": "count", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "name": "nextPage", + "in": "query" + }, + { + "type": "integer", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "name": "previousPage", + "in": "query" + }, + { + "type": "string", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "name": "sortBy", + "in": "query" + }, + { + "type": "integer", + "name": "totalPage", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "post": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for create Subscription", + "tags": [ + "Subscription" + ], + "summary": "Create Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SubscriptionCreateRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, + "/subscription/{id}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one Subscription", + "tags": [ + "Subscription" + ], + "summary": "Get one Subscription", + "parameters": [ + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "put": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for update Subscription", + "tags": [ + "Subscription" + ], + "summary": "update Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SubscriptionUpdateRequest" + } + }, + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "delete": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for delete Subscription", + "tags": [ + "Subscription" + ], + "summary": "delete Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, "/user-levels": { "get": { "security": [ @@ -7033,6 +7722,13 @@ const docTemplate = `{ ], "summary": "Create UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7133,6 +7829,13 @@ const docTemplate = `{ ], "summary": "EnableApproval Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -7238,6 +7941,13 @@ const docTemplate = `{ ], "summary": "update UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7294,6 +8004,13 @@ const docTemplate = `{ ], "summary": "delete UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserLevels ID", @@ -7407,6 +8124,13 @@ const docTemplate = `{ ], "summary": "Create UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7505,6 +8229,13 @@ const docTemplate = `{ ], "summary": "update UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7561,6 +8292,13 @@ const docTemplate = `{ ], "summary": "delete UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserRoleAccesses ID", @@ -7966,6 +8704,13 @@ const docTemplate = `{ ], "summary": "Create UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8072,6 +8817,13 @@ const docTemplate = `{ ], "summary": "update UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8128,6 +8880,13 @@ const docTemplate = `{ ], "summary": "delete UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserRoles ID", @@ -8317,6 +9076,13 @@ const docTemplate = `{ ], "summary": "Create Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8424,6 +9190,13 @@ const docTemplate = `{ ], "summary": "EmailValidation Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8475,6 +9248,13 @@ const docTemplate = `{ ], "summary": "ForgotPassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8576,6 +9356,13 @@ const docTemplate = `{ ], "summary": "Login Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8627,6 +9414,13 @@ const docTemplate = `{ ], "summary": "OtpRequest Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8678,6 +9472,13 @@ const docTemplate = `{ ], "summary": "OtpValidation Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8729,6 +9530,13 @@ const docTemplate = `{ ], "summary": "ParetoLogin Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8780,6 +9588,13 @@ const docTemplate = `{ ], "summary": "ResetPassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8831,6 +9646,13 @@ const docTemplate = `{ ], "summary": "SavePassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8890,6 +9712,13 @@ const docTemplate = `{ ], "summary": "SetupEmail Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8991,13 +9820,11 @@ const docTemplate = `{ "summary": "update Users", "parameters": [ { - "description": "Required payload", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/request.UsersUpdateRequest" - } + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true }, { "type": "integer", @@ -9005,6 +9832,15 @@ const docTemplate = `{ "name": "id", "in": "path", "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UsersUpdateRequest" + } } ], "responses": { @@ -9046,6 +9882,13 @@ const docTemplate = `{ ], "summary": "delete Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Users ID", @@ -9917,6 +10760,32 @@ const docTemplate = `{ } } }, + "request.SubscriptionCreateRequest": { + "type": "object", + "required": [ + "email" + ], + "properties": { + "email": { + "type": "string" + } + } + }, + "request.SubscriptionUpdateRequest": { + "type": "object", + "required": [ + "email", + "id" + ], + "properties": { + "email": { + "type": "string" + }, + "id": { + "type": "integer" + } + } + }, "request.UserEmailValidationRequest": { "type": "object", "properties": { diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index f211eae..056d713 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -117,6 +117,13 @@ ], "summary": "Create ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -222,6 +229,13 @@ ], "summary": "update ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -278,6 +292,13 @@ ], "summary": "delete ActivityLogs", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ActivityLogs ID", @@ -437,6 +458,13 @@ ], "summary": "Create Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -496,6 +524,13 @@ ], "summary": "Update Publish Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -563,6 +598,13 @@ ], "summary": "Upload Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -715,6 +757,13 @@ ], "summary": "update Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -771,6 +820,13 @@ ], "summary": "delete Advertisement", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Advertisement ID", @@ -925,6 +981,13 @@ ], "summary": "Create ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -1031,6 +1094,13 @@ ], "summary": "update ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -1087,6 +1157,13 @@ ], "summary": "delete ArticleApprovals", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleApprovals ID", @@ -1259,6 +1336,13 @@ ], "summary": "Create ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -1468,6 +1552,13 @@ ], "summary": "Upload ArticleCategories Thumbnail", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload thumbnail", @@ -1571,6 +1662,13 @@ ], "summary": "update ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -1627,6 +1725,13 @@ ], "summary": "delete ArticleCategories", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategories ID", @@ -1719,6 +1824,15 @@ "Untags" ], "summary": "Create ArticleCategoryDetails", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + } + ], "responses": { "200": { "description": "OK", @@ -1819,6 +1933,13 @@ ], "summary": "update ArticleCategoryDetails", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategoryDetails ID", @@ -1872,6 +1993,13 @@ ], "summary": "delete ArticleCategoryDetails", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleCategoryDetails ID", @@ -2032,6 +2160,13 @@ ], "summary": "Create ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -2091,6 +2226,13 @@ ], "summary": "Approval ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2189,6 +2331,13 @@ ], "summary": "update ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2245,6 +2394,13 @@ ], "summary": "delete ArticleComments", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleComments ID", @@ -2497,6 +2653,13 @@ ], "summary": "Upload ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -2600,6 +2763,13 @@ ], "summary": "Update ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2656,6 +2826,13 @@ ], "summary": "Delete ArticleFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleFiles ID", @@ -2825,6 +3002,13 @@ ], "summary": "Create ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2876,6 +3060,13 @@ ], "summary": "publish ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -2974,6 +3165,13 @@ ], "summary": "update ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -3030,6 +3228,13 @@ ], "summary": "delete ArticleNulisAI", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "ArticleNulisAI ID", @@ -3214,6 +3419,13 @@ ], "summary": "Create Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -3273,6 +3485,13 @@ ], "summary": "Update Banner Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Articles ID", @@ -3329,6 +3548,13 @@ ], "summary": "PublishScheduling Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -3611,6 +3837,13 @@ ], "summary": "Save Thumbnail Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload thumbnail", @@ -3714,6 +3947,13 @@ ], "summary": "Update Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -3770,6 +4010,13 @@ ], "summary": "Delete Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Articles ID", @@ -4196,6 +4443,13 @@ ], "summary": "Create CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -4343,6 +4597,13 @@ ], "summary": "update CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -4399,6 +4660,13 @@ ], "summary": "delete CustomStaticPages", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "CustomStaticPages ID", @@ -4809,6 +5077,13 @@ ], "summary": "Create Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -4971,6 +5246,13 @@ ], "summary": "update Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -5027,6 +5309,13 @@ ], "summary": "delete Feedbacks", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Feedbacks ID", @@ -5212,6 +5501,13 @@ ], "summary": "Update MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MagazineFiles ID", @@ -5259,6 +5555,13 @@ ], "summary": "delete MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MagazineFiles ID", @@ -5308,6 +5611,13 @@ ], "summary": "Create MagazineFiles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "file", "description": "Upload file", @@ -5498,6 +5808,13 @@ ], "summary": "Create Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -5610,10 +5927,10 @@ "summary": "Save Thumbnail Magazines", "parameters": [ { - "type": "file", - "description": "Upload thumbnail", - "name": "files", - "in": "formData", + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", "required": true }, { @@ -5622,6 +5939,13 @@ "name": "id", "in": "path", "required": true + }, + { + "type": "file", + "description": "Upload thumbnail", + "name": "files", + "in": "formData", + "required": true } ], "responses": { @@ -5712,6 +6036,13 @@ ], "summary": "Update Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Magazines ID", @@ -5768,6 +6099,13 @@ ], "summary": "Delete Magazines", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Magazines ID", @@ -5922,6 +6260,13 @@ ], "summary": "Create MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -6020,6 +6365,13 @@ ], "summary": "Update MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterMenus ID", @@ -6073,6 +6425,13 @@ ], "summary": "Delete MasterMenus", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterMenus ID", @@ -6217,6 +6576,13 @@ ], "summary": "Create MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -6315,6 +6681,13 @@ ], "summary": "Update MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterModules ID", @@ -6371,6 +6744,13 @@ ], "summary": "Delete MasterModules", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "MasterModules ID", @@ -6909,6 +7289,315 @@ } } }, + "/subscription": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting all Subscription", + "tags": [ + "Subscription" + ], + "summary": "Get all Subscription", + "parameters": [ + { + "type": "string", + "name": "email", + "in": "query" + }, + { + "type": "integer", + "name": "count", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "name": "nextPage", + "in": "query" + }, + { + "type": "integer", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "name": "previousPage", + "in": "query" + }, + { + "type": "string", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "name": "sortBy", + "in": "query" + }, + { + "type": "integer", + "name": "totalPage", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "post": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for create Subscription", + "tags": [ + "Subscription" + ], + "summary": "Create Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SubscriptionCreateRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, + "/subscription/{id}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one Subscription", + "tags": [ + "Subscription" + ], + "summary": "Get one Subscription", + "parameters": [ + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "put": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for update Subscription", + "tags": [ + "Subscription" + ], + "summary": "update Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SubscriptionUpdateRequest" + } + }, + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + }, + "delete": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for delete Subscription", + "tags": [ + "Subscription" + ], + "summary": "delete Subscription", + "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, + { + "type": "integer", + "description": "Subscription ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, "/user-levels": { "get": { "security": [ @@ -7022,6 +7711,13 @@ ], "summary": "Create UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7122,6 +7818,13 @@ ], "summary": "EnableApproval Articles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -7227,6 +7930,13 @@ ], "summary": "update UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7283,6 +7993,13 @@ ], "summary": "delete UserLevels", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserLevels ID", @@ -7396,6 +8113,13 @@ ], "summary": "Create UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7494,6 +8218,13 @@ ], "summary": "update UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -7550,6 +8281,13 @@ ], "summary": "delete UserRoleAccesses", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserRoleAccesses ID", @@ -7955,6 +8693,13 @@ ], "summary": "Create UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8061,6 +8806,13 @@ ], "summary": "update UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8117,6 +8869,13 @@ ], "summary": "delete UserRoles", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "UserRoles ID", @@ -8306,6 +9065,13 @@ ], "summary": "Create Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8413,6 +9179,13 @@ ], "summary": "EmailValidation Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8464,6 +9237,13 @@ ], "summary": "ForgotPassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8565,6 +9345,13 @@ ], "summary": "Login Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8616,6 +9403,13 @@ ], "summary": "OtpRequest Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8667,6 +9461,13 @@ ], "summary": "OtpValidation Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8718,6 +9519,13 @@ ], "summary": "ParetoLogin Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8769,6 +9577,13 @@ ], "summary": "ResetPassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8820,6 +9635,13 @@ ], "summary": "SavePassword Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", @@ -8879,6 +9701,13 @@ ], "summary": "SetupEmail Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "description": "Required payload", "name": "payload", @@ -8980,13 +9809,11 @@ "summary": "update Users", "parameters": [ { - "description": "Required payload", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/request.UsersUpdateRequest" - } + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true }, { "type": "integer", @@ -8994,6 +9821,15 @@ "name": "id", "in": "path", "required": true + }, + { + "description": "Required payload", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UsersUpdateRequest" + } } ], "responses": { @@ -9035,6 +9871,13 @@ ], "summary": "delete Users", "parameters": [ + { + "type": "string", + "description": "Insert the X-Csrf-Token", + "name": "X-Csrf-Token", + "in": "header", + "required": true + }, { "type": "integer", "description": "Users ID", @@ -9906,6 +10749,32 @@ } } }, + "request.SubscriptionCreateRequest": { + "type": "object", + "required": [ + "email" + ], + "properties": { + "email": { + "type": "string" + } + } + }, + "request.SubscriptionUpdateRequest": { + "type": "object", + "required": [ + "email", + "id" + ], + "properties": { + "email": { + "type": "string" + }, + "id": { + "type": "integer" + } + } + }, "request.UserEmailValidationRequest": { "type": "object", "properties": { diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index e438202..cb68dca 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -573,6 +573,23 @@ definitions: - pathUrl - statusId type: object + request.SubscriptionCreateRequest: + properties: + email: + type: string + required: + - email + type: object + request.SubscriptionUpdateRequest: + properties: + email: + type: string + id: + type: integer + required: + - email + - id + type: object request.UserEmailValidationRequest: properties: newEmail: @@ -995,6 +1012,11 @@ paths: post: description: API for create ActivityLogs parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -1032,6 +1054,11 @@ paths: delete: description: API for delete ActivityLogs parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ActivityLogs ID in: path name: id @@ -1092,6 +1119,11 @@ paths: put: description: API for update ActivityLogs parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -1196,6 +1228,11 @@ paths: post: description: API for create Advertisement parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -1234,6 +1271,11 @@ paths: delete: description: API for delete Advertisement parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Advertisement ID in: path name: id @@ -1294,6 +1336,11 @@ paths: put: description: API for update Advertisement parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -1331,6 +1378,11 @@ paths: put: description: API for Update Publish Advertisement parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -1373,6 +1425,11 @@ paths: post: description: API for Upload File Advertisement parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Upload file in: formData name: file @@ -1506,6 +1563,11 @@ paths: post: description: API for create ArticleApprovals parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -1544,6 +1606,11 @@ paths: delete: description: API for delete ArticleApprovals parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleApprovals ID in: path name: id @@ -1604,6 +1671,11 @@ paths: put: description: API for update ArticleApprovals parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -1717,6 +1789,11 @@ paths: post: description: API for create ArticleCategories parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -1755,6 +1832,11 @@ paths: delete: description: API for delete ArticleCategories parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleCategories ID in: path name: id @@ -1815,6 +1897,11 @@ paths: put: description: API for update ArticleCategories parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -1914,6 +2001,11 @@ paths: post: description: API for Upload ArticleCategories Thumbnail parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Upload thumbnail in: formData name: files @@ -2010,6 +2102,12 @@ paths: - Untags post: description: API for create ArticleCategoryDetails + parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string responses: "200": description: OK @@ -2040,6 +2138,11 @@ paths: delete: description: API for delete ArticleCategoryDetails parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleCategoryDetails ID in: path name: id @@ -2108,6 +2211,11 @@ paths: put: description: API for update ArticleCategoryDetails parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleCategoryDetails ID in: path name: id @@ -2207,6 +2315,11 @@ paths: post: description: API for create ArticleComments parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -2245,6 +2358,11 @@ paths: delete: description: API for delete ArticleComments parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleComments ID in: path name: id @@ -2305,6 +2423,11 @@ paths: put: description: API for update ArticleComments parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2342,6 +2465,11 @@ paths: post: description: API for Approval ArticleComments parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2436,6 +2564,11 @@ paths: post: description: API for create ArticleFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Upload file in: formData name: files @@ -2474,6 +2607,11 @@ paths: delete: description: API for delete ArticleFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleFiles ID in: path name: id @@ -2534,6 +2672,11 @@ paths: put: description: API for update ArticleFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2706,6 +2849,11 @@ paths: post: description: API for create ArticleNulisAI parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2738,6 +2886,11 @@ paths: delete: description: API for delete ArticleNulisAI parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: ArticleNulisAI ID in: path name: id @@ -2798,6 +2951,11 @@ paths: put: description: API for update ArticleNulisAI parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2835,6 +2993,11 @@ paths: post: description: API for publish ArticleNulisAI parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -2949,6 +3112,11 @@ paths: post: description: API for create Articles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -2987,6 +3155,11 @@ paths: delete: description: API for delete Articles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Articles ID in: path name: id @@ -3047,6 +3220,11 @@ paths: put: description: API for update Articles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -3084,6 +3262,11 @@ paths: put: description: API for Update Banner Articles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Articles ID in: path name: id @@ -3120,6 +3303,11 @@ paths: post: description: API for Publish Schedule of Article parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -3268,6 +3456,11 @@ paths: post: description: API for Save Thumbnail of Articles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Upload thumbnail in: formData name: files @@ -3575,6 +3768,11 @@ paths: post: description: API for create CustomStaticPages parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -3607,6 +3805,11 @@ paths: delete: description: API for delete CustomStaticPages parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: CustomStaticPages ID in: path name: id @@ -3667,6 +3870,11 @@ paths: put: description: API for update CustomStaticPages parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -3962,6 +4170,11 @@ paths: post: description: API for create Feedbacks parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -4000,6 +4213,11 @@ paths: delete: description: API for delete Feedbacks parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Feedbacks ID in: path name: id @@ -4060,6 +4278,11 @@ paths: put: description: API for update Feedbacks parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -4158,6 +4381,11 @@ paths: delete: description: API for delete MagazineFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MagazineFiles ID in: path name: id @@ -4218,6 +4446,11 @@ paths: put: description: API for update MagazineFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MagazineFiles ID in: path name: id @@ -4249,6 +4482,11 @@ paths: post: description: API for create MagazineFiles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Upload file in: formData name: files @@ -4399,6 +4637,11 @@ paths: post: description: API for create Magazines parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -4437,6 +4680,11 @@ paths: delete: description: API for delete Magazines parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Magazines ID in: path name: id @@ -4497,6 +4745,11 @@ paths: put: description: API for update Magazines parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Magazines ID in: path name: id @@ -4534,16 +4787,21 @@ paths: post: description: API for Save Thumbnail of Magazines parameters: - - description: Upload thumbnail - in: formData - name: files + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token required: true - type: file + type: string - description: Magazine ID in: path name: id required: true type: integer + - description: Upload thumbnail + in: formData + name: files + required: true + type: file produces: - application/json responses: @@ -4667,6 +4925,11 @@ paths: post: description: API for create MasterMenus parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -4699,6 +4962,11 @@ paths: delete: description: API for delete MasterMenus parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MasterMenus ID in: path name: id @@ -4759,6 +5027,11 @@ paths: put: description: API for update MasterMenus parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MasterMenus ID in: path name: id @@ -4852,6 +5125,11 @@ paths: post: description: API for create MasterModules parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -4884,6 +5162,11 @@ paths: delete: description: API for delete MasterModules parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MasterModules ID in: path name: id @@ -4944,6 +5227,11 @@ paths: put: description: API for update MasterModules parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: MasterModules ID in: path name: id @@ -5297,6 +5585,202 @@ paths: summary: Update Provinces tags: - Untags + /subscription: + get: + description: API for getting all Subscription + parameters: + - in: query + name: email + type: string + - in: query + name: count + type: integer + - in: query + name: limit + type: integer + - in: query + name: nextPage + type: integer + - in: query + name: page + type: integer + - in: query + name: previousPage + type: integer + - in: query + name: sort + type: string + - in: query + name: sortBy + type: string + - in: query + name: totalPage + type: integer + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: Get all Subscription + tags: + - Subscription + post: + description: API for create Subscription + parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string + - description: Required payload + in: body + name: payload + required: true + schema: + $ref: '#/definitions/request.SubscriptionCreateRequest' + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: Create Subscription + tags: + - Subscription + /subscription/{id}: + delete: + description: API for delete Subscription + parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string + - description: Subscription ID + in: path + name: id + required: true + type: integer + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: delete Subscription + tags: + - Subscription + get: + description: API for getting one Subscription + parameters: + - description: Subscription ID + in: path + name: id + required: true + type: integer + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: Get one Subscription + tags: + - Subscription + put: + description: API for update Subscription + parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string + - description: Required payload + in: body + name: payload + required: true + schema: + $ref: '#/definitions/request.SubscriptionUpdateRequest' + - description: Subscription ID + in: path + name: id + required: true + type: integer + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: update Subscription + tags: + - Subscription /user-levels: get: description: API for getting all UserLevels @@ -5362,6 +5846,11 @@ paths: post: description: API for create UserLevels parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -5394,6 +5883,11 @@ paths: delete: description: API for delete UserLevels parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: UserLevels ID in: path name: id @@ -5458,6 +5952,11 @@ paths: put: description: API for update UserLevels parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -5526,6 +6025,11 @@ paths: post: description: API for Enable Approval of Article parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -5600,6 +6104,11 @@ paths: post: description: API for create UserRoleAccesses parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -5632,6 +6141,11 @@ paths: delete: description: API for delete UserRoleAccesses parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: UserRoleAccesses ID in: path name: id @@ -5692,6 +6206,11 @@ paths: put: description: API for update UserRoleAccesses parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -5953,6 +6472,11 @@ paths: post: description: API for create UserRoles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -5991,6 +6515,11 @@ paths: delete: description: API for delete UserRoles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: UserRoles ID in: path name: id @@ -6051,6 +6580,11 @@ paths: put: description: API for update UserRoles parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6173,6 +6707,11 @@ paths: post: description: API for create Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -6210,6 +6749,11 @@ paths: delete: description: API for delete Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Users ID in: path name: id @@ -6240,17 +6784,22 @@ paths: put: description: API for update Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string + - description: Users ID + in: path + name: id + required: true + type: integer - description: Required payload in: body name: payload required: true schema: $ref: '#/definitions/request.UsersUpdateRequest' - - description: Users ID - in: path - name: id - required: true - type: integer responses: "200": description: OK @@ -6308,6 +6857,11 @@ paths: post: description: API for Email Validation Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6340,6 +6894,11 @@ paths: post: description: API for ForgotPassword Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6404,6 +6963,11 @@ paths: post: description: API for Login Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6436,6 +7000,11 @@ paths: post: description: API for OtpRequest Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6468,6 +7037,11 @@ paths: post: description: API for OtpValidation Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6500,6 +7074,11 @@ paths: post: description: API for ParetoLogin Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6532,6 +7111,11 @@ paths: post: description: API for ResetPassword Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload @@ -6564,6 +7148,11 @@ paths: post: description: API for SavePassword Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - default: Bearer description: Insert your access token in: header @@ -6602,6 +7191,11 @@ paths: post: description: API for Setup Email Users parameters: + - description: Insert the X-Csrf-Token + in: header + name: X-Csrf-Token + required: true + type: string - description: Required payload in: body name: payload diff --git a/main.go b/main.go index ed6a7ee..f666cd2 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,7 @@ import ( "go-humas-be/app/module/master_menus" "go-humas-be/app/module/master_modules" "go-humas-be/app/module/provinces" + "go-humas-be/app/module/subscription" "go-humas-be/app/module/user_levels" "go-humas-be/app/module/user_role_accesses" "go-humas-be/app/module/user_role_level_details" @@ -77,6 +78,7 @@ func main() { master_menus.NewMasterMenusModule, master_modules.NewMasterModulesModule, provinces.NewProvincesModule, + subscription.NewSubscriptionModule, user_levels.NewUserLevelsModule, user_roles.NewUserRolesModule, user_role_accesses.NewUserRoleAccessesModule,