feat: update module

This commit is contained in:
rogeecn
2025-03-22 19:42:43 +08:00
parent f06073e89a
commit 1d66f95397
11 changed files with 156 additions and 48 deletions

View File

View File

View File

@@ -1,4 +1,4 @@
package http package admin
import ( import (
"quyun/app/models" "quyun/app/models"
@@ -11,7 +11,7 @@ import (
type medias struct{} type medias struct{}
// List medias // List medias
// @Router /v1/medias [get] // @Router /v1/admin/medias [get]
// @Bind pagination query // @Bind pagination query
func (ctl *medias) List(ctx fiber.Ctx, pagination *requests.Pagination) (*requests.Pager, error) { func (ctl *medias) List(ctx fiber.Ctx, pagination *requests.Pagination) (*requests.Pager, error) {
return models.Medias.List(ctx.Context(), pagination) return models.Medias.List(ctx.Context(), pagination)

48
app/http/admin/provider.gen.go Executable file
View File

@@ -0,0 +1,48 @@
package admin
import (
"quyun/providers/app"
"go.ipao.vip/atom"
"go.ipao.vip/atom/container"
"go.ipao.vip/atom/contracts"
"go.ipao.vip/atom/opt"
)
func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func() (*medias, error) {
obj := &medias{}
return obj, nil
}); err != nil {
return err
}
if err := container.Container.Provide(func(
medias *medias,
uploads *uploads,
) (contracts.HttpRoute, error) {
obj := &Routes{
medias: medias,
uploads: uploads,
}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupRoutes); err != nil {
return err
}
if err := container.Container.Provide(func(
app *app.Config,
) (*uploads, error) {
obj := &uploads{
app: app,
}
return obj, nil
}); err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,52 @@
// Code generated by the atomctl ; DO NOT EDIT.
package admin
import (
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
_ "go.ipao.vip/atom/contracts"
. "go.ipao.vip/atom/fen"
"mime/multipart"
"quyun/app/requests"
)
// @provider contracts.HttpRoute atom.GroupRoutes
type Routes struct {
log *log.Entry `inject:"false"`
medias *medias
uploads *uploads
}
func (r *Routes) Prepare() error {
r.log = log.WithField("module", "routes.admin")
return nil
}
func (r *Routes) Name() string {
return "admin"
}
func (r *Routes) Register(router fiber.Router) {
// 注册路由组: medias
router.Get("/v1/admin/medias", DataFunc1(
r.medias.List,
Query[requests.Pagination]("pagination"),
))
// 注册路由组: uploads
router.Post("/v1/admin/uploads/:md5/chunks/:idx", Func3(
r.uploads.Chunks,
PathParam[string]("md5"),
PathParam[string]("idx"),
File[multipart.FileHeader]("file"),
))
router.Post("/v1/admin/uploads/:md5/complete", Func2(
r.uploads.Complete,
PathParam[string]("md5"),
Body[UploadFileInfo]("body"),
))
}

View File

@@ -1,4 +1,4 @@
package http package admin
import ( import (
"errors" "errors"
@@ -39,7 +39,7 @@ type UploadFileInfo struct {
} }
// Upload chunks // Upload chunks
// @Router /v1/uploads/:md5/chunks/:idx [post] // @Router /v1/admin/uploads/:md5/chunks/:idx [post]
// @Bind md5 path // @Bind md5 path
// @Bind idx path // @Bind idx path
// @Bind file file // @Bind file file
@@ -63,7 +63,7 @@ func (up *uploads) Chunks(ctx fiber.Ctx, md5, idx string, file *multipart.FileHe
} }
// Complete uploads // Complete uploads
// @Router /v1/uploads/:md5/complete [post] // @Router /v1/admin/uploads/:md5/complete [post]
// @Bind md5 path // @Bind md5 path
// @Bind body body // @Bind body body
func (up *uploads) Complete(ctx fiber.Ctx, md5 string, body *UploadFileInfo) error { func (up *uploads) Complete(ctx fiber.Ctx, md5 string, body *UploadFileInfo) error {

View File

@@ -8,20 +8,24 @@ import (
"github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3"
) )
type ListQuery struct {
Key *string `query:"key"`
}
// @provider // @provider
type posts struct{} type posts struct{}
// List posts // List posts
// @Router /v1/medias [get] // @Router /v1/posts [get]
// @Bind pagination query // @Bind pagination query
// @bind key query // @Bind query query
func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, key *string) (*requests.Pager, error) { func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *ListQuery) (*requests.Pager, error) {
cond := models.Posts.BuildConditionWithKey(key) cond := models.Posts.BuildConditionWithKey(query.Key)
return models.Posts.List(ctx.Context(), pagination, cond) return models.Posts.List(ctx.Context(), pagination, cond)
} }
// Show // Show
// @Router /v1/medias/:id [get] // @Router /v1/posts/:id [get]
// @Bind id path // @Bind id path
func (ctl *posts) Show(ctx fiber.Ctx, id int64) (*model.Posts, error) { func (ctl *posts) Show(ctx fiber.Ctx, id int64) (*model.Posts, error) {
return models.Posts.GetByID(ctx.Context(), id) return models.Posts.GetByID(ctx.Context(), id)

View File

@@ -1,8 +1,6 @@
package http package http
import ( import (
"quyun/providers/app"
"go.ipao.vip/atom" "go.ipao.vip/atom"
"go.ipao.vip/atom/container" "go.ipao.vip/atom/container"
"go.ipao.vip/atom/contracts" "go.ipao.vip/atom/contracts"
@@ -10,20 +8,18 @@ import (
) )
func Provide(opts ...opt.Option) error { func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func() (*medias, error) { if err := container.Container.Provide(func() (*posts, error) {
obj := &medias{} obj := &posts{}
return obj, nil return obj, nil
}); err != nil { }); err != nil {
return err return err
} }
if err := container.Container.Provide(func( if err := container.Container.Provide(func(
medias *medias, posts *posts,
uploads *uploads,
) (contracts.HttpRoute, error) { ) (contracts.HttpRoute, error) {
obj := &Routes{ obj := &Routes{
medias: medias, posts: posts,
uploads: uploads,
} }
if err := obj.Prepare(); err != nil { if err := obj.Prepare(); err != nil {
return nil, err return nil, err
@@ -33,16 +29,5 @@ func Provide(opts ...opt.Option) error {
}, atom.GroupRoutes); err != nil { }, atom.GroupRoutes); err != nil {
return err return err
} }
if err := container.Container.Provide(func(
app *app.Config,
) (*uploads, error) {
obj := &uploads{
app: app,
}
return obj, nil
}); err != nil {
return err
}
return nil return nil
} }

14
app/http/provider.manual.go Executable file
View File

@@ -0,0 +1,14 @@
package http
import (
"quyun/app/http/admin"
"go.ipao.vip/atom/container"
)
func Providers() []container.ProviderContainer {
return []container.ProviderContainer{
{Provider: Provide},
{Provider: admin.Provide},
}
}

View File

@@ -8,15 +8,13 @@ import (
_ "go.ipao.vip/atom" _ "go.ipao.vip/atom"
_ "go.ipao.vip/atom/contracts" _ "go.ipao.vip/atom/contracts"
. "go.ipao.vip/atom/fen" . "go.ipao.vip/atom/fen"
"mime/multipart"
"quyun/app/requests" "quyun/app/requests"
) )
// @provider contracts.HttpRoute atom.GroupRoutes // @provider contracts.HttpRoute atom.GroupRoutes
type Routes struct { type Routes struct {
log *log.Entry `inject:"false"` log *log.Entry `inject:"false"`
medias *medias posts *posts
uploads *uploads
} }
func (r *Routes) Prepare() error { func (r *Routes) Prepare() error {
@@ -29,24 +27,16 @@ func (r *Routes) Name() string {
} }
func (r *Routes) Register(router fiber.Router) { func (r *Routes) Register(router fiber.Router) {
// 注册路由组: medias // 注册路由组: posts
router.Get("/v1/medias", DataFunc1( router.Get("/v1/posts", DataFunc2(
r.medias.List, r.posts.List,
Query[requests.Pagination]("pagination"), Query[requests.Pagination]("pagination"),
Query[ListQuery]("query"),
)) ))
// 注册路由组: uploads router.Get("/v1/posts/:id", DataFunc1(
router.Post("/v1/uploads/:md5/chunks/:idx", Func3( r.posts.Show,
r.uploads.Chunks, PathParam[int64]("id"),
PathParam[string]("md5"),
PathParam[string]("idx"),
File[multipart.FileHeader]("file"),
))
router.Post("/v1/uploads/:md5/complete", Func2(
r.uploads.Complete,
PathParam[string]("md5"),
Body[UploadFileInfo]("body"),
)) ))
} }

View File

@@ -24,11 +24,13 @@ func Provide(opts ...opt.Option) error {
db *sql.DB, db *sql.DB,
medias *mediasModel, medias *mediasModel,
posts *postsModel, posts *postsModel,
users *usersModel,
) (contracts.Initial, error) { ) (contracts.Initial, error) {
obj := &models{ obj := &models{
db: db, db: db,
medias: medias, medias: medias,
posts: posts, posts: posts,
users: users,
} }
if err := obj.Prepare(); err != nil { if err := obj.Prepare(); err != nil {
return nil, err return nil, err
@@ -40,6 +42,19 @@ func Provide(opts ...opt.Option) error {
} }
if err := container.Container.Provide(func() (*postsModel, error) { if err := container.Container.Provide(func() (*postsModel, error) {
obj := &postsModel{} obj := &postsModel{}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}); err != nil {
return err
}
if err := container.Container.Provide(func() (*usersModel, error) {
obj := &usersModel{}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil return obj, nil
}); err != nil { }); err != nil {