Documentation
¶
Index ¶
- func NewBillingRoutes(apiV1Group *gin.RouterGroup, billing usecase.Billing, l logger.Interface)
- func NewKafkaRoutes(apiV1Group *gin.RouterGroup, kafka usecase.Kafka, l logger.Interface)
- func NewNatsRoutes(apiV1Group *gin.RouterGroup, nats usecase.Nats, l logger.Interface)
- func NewRedisRoutes(apiV1Group *gin.RouterGroup, r usecase.Redis, l logger.Interface, ...)
- func NewTranslationRoutes(apiV1Group *gin.RouterGroup, t usecase.Translation, l logger.Interface)
- func NewUserRoutes(apiV1Group *gin.RouterGroup, u usecase.User, l logger.Interface)
- func NewVietQRRoutes(apiV1Group *gin.RouterGroup, vietqr usecase.VietQR, l logger.Interface)
- type BillingController
- type PaymentController
- type V1
- func (h *V1) CheckConsumerStatus(c *gin.Context)
- func (h *V1) CheckProducerStatus(c *gin.Context)
- func (h *V1) ConsumerReceiver(c *gin.Context)
- func (r *V1) CreateUser(c *gin.Context)
- func (r *V1) DeleteUser(c *gin.Context)
- func (h *V1) DisableConsumer(c *gin.Context)
- func (h *V1) DisableProducer(c *gin.Context)
- func (h *V1) EnableConsumer(c *gin.Context)
- func (h *V1) EnableProducer(c *gin.Context)
- func (h *V1) GetKafkaStatus(c *gin.Context)
- func (v1 *V1) GetShipperLocation(c *gin.Context)
- func (r *V1) GetUser(c *gin.Context)
- func (r *V1) ListUsers(c *gin.Context)
- func (r *V1) LoginUser(c *gin.Context)
- func (v1 *V1) NatsPublish(c *gin.Context)
- func (v1 *V1) NatsSubscribe(c *gin.Context)
- func (h *V1) ProducerRequest(c *gin.Context)
- func (v *V1) RegisterBillingRoutes(api *gin.RouterGroup)
- func (v *V1) RegisterPaymentRoutes(api *gin.RouterGroup)
- func (v1 *V1) UpdateShipperLocation(c *gin.Context)
- func (r *V1) UpdateUser(c *gin.Context)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewBillingRoutes ¶
NewBillingRoutes -.
func NewKafkaRoutes ¶
NewKafkaRoutes registers Kafka producer and consumer endpoints.
func NewNatsRoutes ¶
NewNatsRoutes -.
func NewRedisRoutes ¶
func NewRedisRoutes(apiV1Group *gin.RouterGroup, r usecase.Redis, l logger.Interface, shipperLocation usecase.ShipperLocation)
NewRedisRoutes -.
func NewTranslationRoutes ¶
func NewTranslationRoutes(apiV1Group *gin.RouterGroup, t usecase.Translation, l logger.Interface)
NewTranslationRoutes -.
func NewUserRoutes ¶
NewUserRoutes -.
func NewVietQRRoutes ¶
NewVietQRRoutes -.
Types ¶
type BillingController ¶
type BillingController struct {
// contains filtered or unexported fields
}
BillingController represents billing HTTP controller
func NewBillingController ¶
func NewBillingController(billingUseCase *billing.UseCase, logger *zerolog.Logger) *BillingController
NewBillingController creates new billing controller
func (*BillingController) GenerateInvoicePDF ¶
func (c *BillingController) GenerateInvoicePDF(ctx *gin.Context)
GenerateInvoicePDF generates a PDF invoice @Summary Generate Invoice PDF @Description Generate a billing payment PDF @Tags billing @Accept json @Produce json @Param request body request.GenerateInvoicePDFRequest true "Invoice data" @Success 200 {object} response.GenerateInvoicePDFResponse @Failure 400 {object} response.ErrorResponse @Failure 500 {object} response.ErrorResponse @Router /v1/billing/invoice [post]
type PaymentController ¶
type PaymentController struct {
// contains filtered or unexported fields
}
PaymentController represents payment HTTP controller
func NewPaymentController ¶
func NewPaymentController(paymentUseCase *payment.PaymentUseCase, logger *zerolog.Logger) *PaymentController
NewPaymentController creates new payment controller
func (*PaymentController) GetPaymentByID ¶
func (c *PaymentController) GetPaymentByID(ctx *gin.Context)
GetPaymentByID gets payment by ID @Summary Get payment by ID @Description Get payment details by ID @Tags payments @Accept json @Produce json @Param id path int true "Payment ID" @Success 200 {object} response.PaymentResponse @Failure 400 {object} response.ErrorResponse @Failure 404 {object} response.ErrorResponse @Failure 500 {object} response.ErrorResponse @Router /v1/payments/{id} [get]
func (*PaymentController) GetPaymentsByUserID ¶
func (c *PaymentController) GetPaymentsByUserID(ctx *gin.Context)
GetPaymentsByUserID gets payments by user ID @Summary Get payments by user ID @Description Get all payments for a specific user @Tags payments @Accept json @Produce json @Param user_id path int true "User ID" @Success 200 {array} response.PaymentResponse @Failure 400 {object} response.ErrorResponse @Failure 500 {object} response.ErrorResponse @Router /v1/users/{user_id}/payments [get]
func (*PaymentController) RegisterPayment ¶
func (c *PaymentController) RegisterPayment(ctx *gin.Context)
RegisterPayment registers a new payment @Summary Register a new payment @Description Register a new payment for electric bill and send to Kafka for processing @Tags payments @Accept json @Produce json @Param payment body request.PaymentRequest true "Payment request" @Success 201 {object} response.PaymentResponse @Failure 400 {object} response.ErrorResponse @Failure 500 {object} response.ErrorResponse @Router /v1/payments [post]
type V1 ¶
type V1 struct {
// contains filtered or unexported fields
}
V1 -.
func NewV1 ¶
func NewV1(l logger.Interface, t usecase.Translation, u usecase.User, k usecase.Kafka, r usecase.Redis, n usecase.Nats, v usecase.VietQR, billing usecase.Billing, shipperLocation usecase.ShipperLocation, paymentUseCase *payment.PaymentUseCase, billingUseCase *billing.UseCase) *V1
NewV1 creates new V1 controller
func (*V1) CheckConsumerStatus ¶
CheckConsumerStatus godoc @Summary Check consumer status @Description Check if Kafka consumer is enabled or disabled @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]interface{} @Router /v1/kafka/consumer/status [get]
func (*V1) CheckProducerStatus ¶
CheckProducerStatus godoc @Summary Check producer status @Description Check if Kafka producer is enabled or disabled @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]interface{} @Router /v1/kafka/producer/status [get]
func (*V1) ConsumerReceiver ¶
ConsumerReceiver godoc @Summary Receive a message from a Kafka topic and group @Description Receive a message from a Kafka topic and group @Tags kafka @Accept json @Produce json @Param topic query string true "Kafka topic" @Param group query string true "Kafka group" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]string @Failure 504 {object} map[string]string @Failure 500 {object} map[string]string @Router /v1/kafka/consumer/receiver [get]
func (*V1) CreateUser ¶
@Summary Create user @Description Create a new user @ID create-user @Tags user @Accept json @Produce json @Security BearerAuth @Param request body request.CreateUser true "Create user" @Success 201 {object} entity.User @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 500 {object} response.Error @Router /v1/user [post]
func (*V1) DeleteUser ¶
@Summary Delete user @Description Delete user by ID @ID delete-user @Tags user @Accept json @Produce json @Security BearerAuth @Param id path int true "User ID" @Success 200 {object} response.Success @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 404 {object} response.Error @Failure 500 {object} response.Error @Router /v1/user/{id} [delete]
func (*V1) DisableConsumer ¶
DisableConsumer godoc @Summary Disable Kafka consumer @Description Disable the Kafka consumer from receiving messages @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]string @Router /v1/kafka/consumer/disable [post]
func (*V1) DisableProducer ¶
DisableProducer godoc @Summary Disable Kafka producer @Description Disable the Kafka producer from sending messages @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]string @Router /v1/kafka/producer/disable [post]
func (*V1) EnableConsumer ¶
EnableConsumer godoc @Summary Enable Kafka consumer @Description Enable the Kafka consumer to receive messages @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]string @Router /v1/kafka/consumer/enable [post]
func (*V1) EnableProducer ¶
EnableProducer godoc @Summary Enable Kafka producer @Description Enable the Kafka producer to send messages @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]string @Router /v1/kafka/producer/enable [post]
func (*V1) GetKafkaStatus ¶
GetKafkaStatus godoc @Summary Get Kafka status @Description Get the current status of Kafka producer and consumer @Tags kafka @Accept json @Produce json @Success 200 {object} map[string]interface{} @Router /v1/kafka/status [get]
func (*V1) GetShipperLocation ¶
GetShipperLocation retrieves the latest location of a shipper @Summary Get shipper location @Description Get the latest location of a shipper from Redis @ID get-shipper-location @Tags redis @Accept json @Produce json @Security BearerAuth @Param shipper_id path string true "Shipper ID" @Success 200 {object} entity.ShipperLocation @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 404 {object} response.Error @Failure 500 {object} response.Error @Router /v1/redis/shipper/location/{shipper_id} [get]
func (*V1) GetUser ¶
@Summary Get user @Description Get user by ID @ID get-user @Tags user @Accept json @Produce json @Security BearerAuth @Param id path int true "User ID" @Success 200 {object} entity.User @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 404 {object} response.Error @Failure 500 {object} response.Error @Router /v1/user/{id} [get]
func (*V1) ListUsers ¶
@Summary List users @Description Get all users @ID list-users @Tags user @Accept json @Produce json @Security BearerAuth @Success 200 {object} entity.UserHistory @Failure 401 {object} response.Error @Failure 500 {object} response.Error @Router /v1/user [get]
func (*V1) LoginUser ¶
@Summary Login user @Description Login user with email and password @ID login-user @Tags auth @Accept json @Produce json @Param request body request.LoginUser true "Login user" @Success 200 {object} response.LoginResponse @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 500 {object} response.Error @Router /v1/auth/login [post]
func (*V1) NatsPublish ¶
@Summary Publish message @Description Publish a message to a NATS subject @ID nats-publish @Tags nats @Accept json @Produce json @Param subject path string true "NATS subject" @Param request body request.NatsPublishRequest true "Message data" @Success 200 {object} map[string]string @Failure 400 {object} map[string]string @Failure 500 {object} map[string]string @Router /v1/nats/publish/{subject} [post]
func (*V1) NatsSubscribe ¶
@Summary Subscribe to subject @Description Subscribe to a NATS subject (demo: returns first message) @ID nats-subscribe @Tags nats @Accept json @Produce json @Param subject path string true "NATS subject" @Success 200 {object} map[string]string @Failure 500 {object} map[string]string @Router /v1/nats/subscribe/{subject} [get]
func (*V1) ProducerRequest ¶
ProducerRequest godoc @Summary Send a message to a Kafka topic @Description Send a message to a Kafka topic @Tags kafka @Accept json @Produce json @Param request body request.KafkaMessage true "Kafka message" @Success 200 {object} map[string]string @Failure 400 {object} map[string]string @Failure 500 {object} map[string]string @Router /v1/kafka/producer/request [post]
func (*V1) RegisterBillingRoutes ¶
func (v *V1) RegisterBillingRoutes(api *gin.RouterGroup)
RegisterBillingRoutes registers billing routes
func (*V1) RegisterPaymentRoutes ¶
func (v *V1) RegisterPaymentRoutes(api *gin.RouterGroup)
RegisterPaymentRoutes registers payment routes
func (*V1) UpdateShipperLocation ¶
@Summary Update shipper location @Description Update the latest location of a shipper in Redis @ID update-shipper-location @Tags redis @Accept json @Produce json @Security BearerAuth @Param request body request.ShipperLocation true "Shipper location" @Success 200 {object} response.Success @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 500 {object} response.Error @Router /v1/redis/shipper/location [post]
func (*V1) UpdateUser ¶
@Summary Update user @Description Update user by ID @ID update-user @Tags user @Accept json @Produce json @Security BearerAuth @Param id path int true "User ID" @Param request body request.UpdateUser true "Update user" @Success 200 {object} response.Success @Failure 400 {object} response.Error @Failure 401 {object} response.Error @Failure 404 {object} response.Error @Failure 500 {object} response.Error @Router /v1/user/{id} [put]