71 lines
2.1 KiB
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)
|
|
})
|
|
})
|
|
}
|