feat: complete template

This commit is contained in:
Rogee
2024-11-29 17:05:05 +08:00
parent aa7ad01ecc
commit 7bc082abea
36 changed files with 1336 additions and 252 deletions

View File

@@ -1 +0,0 @@
package users

View File

@@ -1 +0,0 @@
package modules

View File

@@ -0,0 +1,18 @@
package users
import "github.com/gofiber/fiber/v3"
// @provider
type Controller struct {
svc *Service
}
// List
func (c *Controller) List(ctx fiber.Ctx) error {
resp, err := c.svc.List(ctx.Context())
if err != nil {
return err
}
return ctx.JSON(resp)
}

View File

@@ -0,0 +1,53 @@
package users
import (
"backend/providers/http"
"database/sql"
"git.ipao.vip/rogeecn/atom"
"git.ipao.vip/rogeecn/atom/container"
"git.ipao.vip/rogeecn/atom/contracts"
"git.ipao.vip/rogeecn/atom/utils/opt"
)
func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func(
svc *Service,
) (*Controller, error) {
obj := &Controller{
svc: svc,
}
return obj, nil
}); err != nil {
return err
}
if err := container.Container.Provide(func(
controller *Controller,
http *http.Service,
) (contracts.HttpRoute, error) {
obj := &Router{
controller: controller,
http: http,
}
return obj, nil
}, atom.GroupRoutes); err != nil {
return err
}
if err := container.Container.Provide(func(
db *sql.DB,
) (*Service, error) {
obj := &Service{
db: db,
}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}); err != nil {
return err
}
return nil
}

25
backend/modules/users/router.go Executable file
View File

@@ -0,0 +1,25 @@
package users
import (
"backend/providers/http"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
)
// @provider:except contracts.HttpRoute atom.GroupRoutes
type Router struct {
http *http.Service
controller *Controller
}
func (r *Router) Register() error {
group := r.http.Engine.Group("users")
log.Infof("register route group: %s", group.(*fiber.Group).Prefix)
group.Get("", r.controller.List)
return nil
}

View File

@@ -0,0 +1,36 @@
package users
import (
"context"
"database/sql"
"backend/database/models/qvyun/public/model"
"backend/database/models/qvyun/public/table"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
// @provider:except
type Service struct {
db *sql.DB
log *logrus.Entry `inject:"false"`
}
func (svc *Service) Prepare() error {
svc.log = logrus.WithField("module", "users.service")
return nil
}
// List
func (svc *Service) List(ctx context.Context) ([]model.Users, error) {
tbl := table.Users
stmt := tbl.SELECT(tbl.AllColumns)
svc.log.WithField("method", "List").Debug(stmt.DebugSql())
var items []model.Users
if err := stmt.QueryContext(ctx, svc.db, &items); err != nil {
return nil, errors.Wrap(err, "failed to query users")
}
return items, nil
}