v1

package
v0.0.0-...-19dc864 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2025 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBillingRoutes

func NewBillingRoutes(apiV1Group *gin.RouterGroup, billing usecase.Billing, l logger.Interface)

NewBillingRoutes -.

func NewKafkaRoutes

func NewKafkaRoutes(apiV1Group *gin.RouterGroup, kafka usecase.Kafka, l logger.Interface)

NewKafkaRoutes registers Kafka producer and consumer endpoints.

func NewNatsRoutes

func NewNatsRoutes(apiV1Group *gin.RouterGroup, nats usecase.Nats, l logger.Interface)

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

func NewUserRoutes(apiV1Group *gin.RouterGroup, u usecase.User, l logger.Interface)

NewUserRoutes -.

func NewVietQRRoutes

func NewVietQRRoutes(apiV1Group *gin.RouterGroup, vietqr usecase.VietQR, l logger.Interface)

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

func (h *V1) CheckConsumerStatus(c *gin.Context)

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

func (h *V1) CheckProducerStatus(c *gin.Context)

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

func (h *V1) ConsumerReceiver(c *gin.Context)

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

func (r *V1) CreateUser(c *gin.Context)

@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

func (r *V1) DeleteUser(c *gin.Context)

@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

func (h *V1) DisableConsumer(c *gin.Context)

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

func (h *V1) DisableProducer(c *gin.Context)

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

func (h *V1) EnableConsumer(c *gin.Context)

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

func (h *V1) EnableProducer(c *gin.Context)

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

func (h *V1) GetKafkaStatus(c *gin.Context)

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

func (v1 *V1) GetShipperLocation(c *gin.Context)

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

func (r *V1) GetUser(c *gin.Context)

@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

func (r *V1) ListUsers(c *gin.Context)

@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

func (r *V1) LoginUser(c *gin.Context)

@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

func (v1 *V1) NatsPublish(c *gin.Context)

@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

func (v1 *V1) NatsSubscribe(c *gin.Context)

@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

func (h *V1) ProducerRequest(c *gin.Context)

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

func (v1 *V1) UpdateShipperLocation(c *gin.Context)

@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

func (r *V1) UpdateUser(c *gin.Context)

@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]

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL