From 591771ce7733040d4cff2fea9e5ee132773bf491 Mon Sep 17 00:00:00 2001 From: Rogee Date: Tue, 14 Jan 2025 20:16:13 +0800 Subject: [PATCH] feat: add medias controller, service and dto --- backend/app/http/medias/controller.go | 24 ++++++++++++++++ backend/app/http/medias/dto.go | 18 ++++++++++++ backend/app/http/medias/service.go | 20 +++++++++++++ backend/app/http/medias/service_test.go | 37 +++++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 backend/app/http/medias/controller.go create mode 100644 backend/app/http/medias/dto.go create mode 100644 backend/app/http/medias/service.go create mode 100644 backend/app/http/medias/service_test.go diff --git a/backend/app/http/medias/controller.go b/backend/app/http/medias/controller.go new file mode 100644 index 0000000..c2f9d75 --- /dev/null +++ b/backend/app/http/medias/controller.go @@ -0,0 +1,24 @@ +package medias + +import ( + "github.com/gofiber/fiber" + log "github.com/sirupsen/logrus" +) + +// @provider +type Controller struct { + svc *Service + log *log.Entry `inject:"false"` +} + +func (ctl *Controller) Prepare() error { + ctl.log = log.WithField("module", "medias.Controller") + return nil +} + +// Upload +// @Router /api/v1/medias/upload [post] +// @Bind req body +func (ctl *Controller) Upload(ctx fiber.Ctx, req *UploadReq) (*UploadResp, error) { + return ctl.svc.Upload(ctx.Context(), req) +} diff --git a/backend/app/http/medias/dto.go b/backend/app/http/medias/dto.go new file mode 100644 index 0000000..3d1f14f --- /dev/null +++ b/backend/app/http/medias/dto.go @@ -0,0 +1,18 @@ +package medias + +type UploadReq struct { + Files []string `json:"files"` +} + +type UploadResp struct { + Files []UploadFile `json:"files"` +} + +type UploadFile struct { + HashID string `json:"hash_id"` + Name string `json:"name"` + Size int64 `json:"size"` + MimeType string `json:"type"` + Path string `json:"path"` + Preview string `json:"preview"` +} diff --git a/backend/app/http/medias/service.go b/backend/app/http/medias/service.go new file mode 100644 index 0000000..4fde980 --- /dev/null +++ b/backend/app/http/medias/service.go @@ -0,0 +1,20 @@ +package medias + +import ( + "database/sql" + + . "github.com/go-jet/jet/v2/postgres" + log "github.com/sirupsen/logrus" +) + +// @provider:except +type Service struct { + db *sql.DB + log *log.Entry `inject:"false"` +} + +func (svc *Service) Prepare() error { + svc.log = log.WithField("module", "medias.service") + _ = Int(1) + return nil +} diff --git a/backend/app/http/medias/service_test.go b/backend/app/http/medias/service_test.go new file mode 100644 index 0000000..de4b3c1 --- /dev/null +++ b/backend/app/http/medias/service_test.go @@ -0,0 +1,37 @@ +package medias + +import ( + "testing" + + "backend/app/service/testx" + + . "github.com/smartystreets/goconvey/convey" + "github.com/stretchr/testify/suite" + "go.uber.org/dig" +) + +type ServiceInjectParams struct { + dig.In + Svc *Service +} + +type ServiceTestSuite struct { + suite.Suite + ServiceInjectParams +} + +func Test_DiscoverMedias(t *testing.T) { + providers := testx.Default().With( + Provide, + ) + + testx.Serve(providers, t, func(params ServiceInjectParams) { + suite.Run(t, &ServiceTestSuite{ServiceInjectParams: params}) + }) +} + +func (s *ServiceTestSuite) Test_Service() { + Convey("Test Service", s.T(), func() { + So(s.Svc, ShouldNotBeNil) + }) +}