narasiahli-be/app/module/chat/chat.module.go

71 lines
2.1 KiB
Go

package chat
import (
"narasi-ahli-be/app/module/chat/controller"
"narasi-ahli-be/app/module/chat/repository"
"narasi-ahli-be/app/module/chat/service"
"github.com/gofiber/fiber/v2"
"go.uber.org/fx"
)
// struct of ChatRouter
type ChatRouter struct {
App fiber.Router
Controller *controller.Controller
}
// register bulky of Chat module
var NewChatModule = fx.Options(
// register repository of Chat module
fx.Provide(repository.NewChatRepository),
// register service of Chat module
fx.Provide(service.NewChatService),
// register controller of Chat module
fx.Provide(controller.NewController),
// register router of Chat module
fx.Provide(NewChatRouter),
)
// init ChatRouter
func NewChatRouter(fiber *fiber.App, controller *controller.Controller) *ChatRouter {
return &ChatRouter{
App: fiber,
Controller: controller,
}
}
// register routes of Chat module
func (_i *ChatRouter) RegisterChatRoutes() {
// define controllers
chatController := _i.Controller.Chat
// define routes
_i.App.Route("/chat", func(router fiber.Router) {
// Chat Session routes
router.Route("/sessions", func(sessionRouter fiber.Router) {
sessionRouter.Get("/", chatController.GetAllChatSessions)
sessionRouter.Get("/:id", chatController.GetChatSessionByID)
sessionRouter.Post("/", chatController.CreateChatSession)
sessionRouter.Put("/:id", chatController.UpdateChatSession)
sessionRouter.Delete("/:id", chatController.DeleteChatSession)
// Chat Participant routes
sessionRouter.Post("/:chatSessionId/participants", chatController.AddParticipantToChat)
sessionRouter.Delete("/:chatSessionId/participants", chatController.RemoveParticipantFromChat)
})
// Chat Message routes
router.Route("/messages", func(messageRouter fiber.Router) {
messageRouter.Get("/", chatController.GetAllChatMessages)
messageRouter.Get("/:id", chatController.GetChatMessageByID)
messageRouter.Post("/", chatController.CreateChatMessage)
messageRouter.Put("/:id", chatController.UpdateChatMessage)
messageRouter.Delete("/:id", chatController.DeleteChatMessage)
})
})
}