diff --git a/app/http/admin/posts.go b/app/http/admin/posts.go new file mode 100644 index 0000000..a8f3a42 --- /dev/null +++ b/app/http/admin/posts.go @@ -0,0 +1,40 @@ +package admin + +import ( + "quyun/app/models" + "quyun/app/requests" + "quyun/database/schemas/public/model" + + "github.com/gofiber/fiber/v3" +) + +type ListQuery struct { + Key *string `query:"key"` +} + +// @provider +type posts struct{} + +// List posts +// @Router /v1/admin/posts [get] +// @Bind pagination query +// @Bind query query +func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *ListQuery) (*requests.Pager, error) { + cond := models.Posts.BuildConditionWithKey(query.Key) + return models.Posts.List(ctx.Context(), pagination, cond) +} + +// Create +// @Router /v1/admin/posts [post] +// @Bind form body +func (ctl *posts) Create(ctx fiber.Ctx, form *model.Posts) error { + return nil +} + +// Update posts +// @Router /v1/admin/posts/:id [put] +// @Bind id path +// @Bind form body +func (ctl *posts) Update(ctx fiber.Ctx, id int64, form *model.Posts) error { + return nil +} diff --git a/app/http/admin/provider.gen.go b/app/http/admin/provider.gen.go index 68dd8f5..822f5bd 100755 --- a/app/http/admin/provider.gen.go +++ b/app/http/admin/provider.gen.go @@ -17,12 +17,21 @@ func Provide(opts ...opt.Option) error { }); err != nil { return err } + if err := container.Container.Provide(func() (*posts, error) { + obj := &posts{} + + return obj, nil + }); err != nil { + return err + } if err := container.Container.Provide(func( medias *medias, + posts *posts, uploads *uploads, ) (contracts.HttpRoute, error) { obj := &Routes{ medias: medias, + posts: posts, uploads: uploads, } if err := obj.Prepare(); err != nil { diff --git a/app/http/admin/routes.gen.go b/app/http/admin/routes.gen.go index 5dc9886..d3dc383 100644 --- a/app/http/admin/routes.gen.go +++ b/app/http/admin/routes.gen.go @@ -10,12 +10,14 @@ import ( . "go.ipao.vip/atom/fen" "mime/multipart" "quyun/app/requests" + "quyun/database/schemas/public/model" ) // @provider contracts.HttpRoute atom.GroupRoutes type Routes struct { log *log.Entry `inject:"false"` medias *medias + posts *posts uploads *uploads } @@ -35,6 +37,24 @@ func (r *Routes) Register(router fiber.Router) { Query[requests.Pagination]("pagination"), )) + // 注册路由组: posts + router.Get("/v1/admin/posts", DataFunc2( + r.posts.List, + Query[requests.Pagination]("pagination"), + Query[ListQuery]("query"), + )) + + router.Post("/v1/admin/posts", Func1( + r.posts.Create, + Body[model.Posts]("form"), + )) + + router.Put("/v1/admin/posts/:id", Func2( + r.posts.Update, + PathParam[int64]("id"), + Body[model.Posts]("form"), + )) + // 注册路由组: uploads router.Post("/v1/admin/uploads/:md5/chunks/:idx", Func3( r.uploads.Chunks, diff --git a/app/models/posts.go b/app/models/posts.go index 4f38e61..bce1d7d 100644 --- a/app/models/posts.go +++ b/app/models/posts.go @@ -150,7 +150,7 @@ func (m *postsModel) List(ctx context.Context, pagination *requests.Pagination, }, nil } -func (m *postsModel) IsUserBought(ctx context.Context, userId int64, postId int64) (bool, error) { +func (m *postsModel) IsUserBought(ctx context.Context, userId, postId int64) (bool, error) { tbl := table.UserPosts stmt := tbl. SELECT(tbl.ID). @@ -175,7 +175,7 @@ func (m *postsModel) IsUserBought(ctx context.Context, userId int64, postId int6 return userPost.ID > 0, nil } -func (m *postsModel) Buy(ctx context.Context, userId int64, postId int64) error { +func (m *postsModel) Buy(ctx context.Context, userId, postId int64) error { tbl := table.UserPosts post, err := m.GetByID(ctx, postId)