first commit

This commit is contained in:
2023-10-19 22:47:12 +09:00
commit 7873968e4d
35 changed files with 1710 additions and 0 deletions

53
internal/routers/auth.go Normal file
View File

@ -0,0 +1,53 @@
package routers
import (
"studioj/boilerplate_go/internal/controllers"
"studioj/boilerplate_go/internal/repositories"
"studioj/boilerplate_go/internal/services"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type AuthRouter interface {
SetRouter(db *gorm.DB, router *gin.Engine)
}
type authRouter struct {
db *gorm.DB
userRepository repositories.UserRepository
tokenRepository repositories.TokenRepository
service services.AuthService
tokenService services.TokenService
controller controllers.AuthController
router *gin.Engine
}
func InitAuthRouter(db *gorm.DB, router *gin.Engine) {
r := NewAuthRouter(db, router)
r.SetAuthRouter(db, router)
}
func NewAuthRouter(db *gorm.DB, router *gin.Engine) *authRouter {
userRepository := repositories.NewUserRepository(db)
tokenRepository := repositories.NewTokenRepository(db)
service := services.NewAuthService(userRepository, tokenRepository)
tokenService := services.NewTokenService(tokenRepository)
controller := controllers.NewAuthController(service)
return &authRouter{
db: db,
userRepository: userRepository,
tokenRepository: tokenRepository,
service: service,
tokenService: tokenService,
controller: controller,
router: router,
}
}
func (r *authRouter) SetAuthRouter(db *gorm.DB, router *gin.Engine) {
group := router.Group("/auth")
group.POST("login", r.controller.Login)
group.POST("register", r.controller.Register)
}

View File

@ -0,0 +1,19 @@
package routers
import (
"github.com/gin-gonic/gin"
"studioj/boilerplate_go/internal/database"
)
var Router *gin.Engine
func Init() {
gin.SetMode(gin.ReleaseMode)
Router = gin.Default()
maindb := database.GetDB()
InitAuthRouter(maindb, Router)
InitTokenRouter(maindb, Router)
InitUserRouter(maindb, Router)
}

46
internal/routers/token.go Normal file
View File

@ -0,0 +1,46 @@
package routers
import (
"studioj/boilerplate_go/internal/controllers"
"studioj/boilerplate_go/internal/repositories"
"studioj/boilerplate_go/internal/services"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type TokenRouter interface {
SetRouter(db *gorm.DB, router *gin.Engine)
}
type tokenRouter struct {
db *gorm.DB
repository repositories.TokenRepository
service services.TokenService
controller controllers.TokenController
router *gin.Engine
}
func InitTokenRouter(db *gorm.DB, router *gin.Engine) {
r := NewTokenRouter(db, router)
r.SetTokenRouter(db, router)
}
func NewTokenRouter(db *gorm.DB, router *gin.Engine) *tokenRouter {
repository := repositories.NewTokenRepository(db)
service := services.NewTokenService(repository)
controller := controllers.NewTokenController(service)
return &tokenRouter{
db: db,
repository: repository,
service: service,
controller: controller,
router: router,
}
}
func (r *tokenRouter) SetTokenRouter(db *gorm.DB, router *gin.Engine) {
// group := router.Group("/token")
// group.GET("refresh", middleware.Auth(), r.controller.Refresh)
}

50
internal/routers/user.go Normal file
View File

@ -0,0 +1,50 @@
package routers
import (
"studioj/boilerplate_go/internal/controllers"
"studioj/boilerplate_go/internal/middleware"
"studioj/boilerplate_go/internal/repositories"
"studioj/boilerplate_go/internal/services"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type UserRouter interface {
SetRouter(db *gorm.DB, router *gin.Engine)
}
type userRouter struct {
db *gorm.DB
repository repositories.UserRepository
service services.UserService
controller controllers.UserController
router *gin.Engine
}
func InitUserRouter(db *gorm.DB, router *gin.Engine) {
r := NewUserRouter(db, router)
r.SetUserRouter(db, router)
}
func NewUserRouter(db *gorm.DB, router *gin.Engine) *userRouter {
repository := repositories.NewUserRepository(db)
tokenRepository := repositories.NewTokenRepository(db)
service := services.NewUserService(repository, tokenRepository)
tokenService := services.NewTokenService(tokenRepository)
controller := controllers.NewUserController(service, tokenService)
return &userRouter{
db: db,
repository: repository,
service: service,
controller: controller,
router: router,
}
}
func (r *userRouter) SetUserRouter(db *gorm.DB, router *gin.Engine) {
group := router.Group("/user")
group.GET("/:id", middleware.Auth(), r.controller.Find)
}