package biz import ( "context" "github.com/go-kratos/kratos/v2/log" "gokratos-base/app/service/demo/internal/model" ) // DemoRepo is a Greater repo. type DemoRepo interface { Save(ctx context.Context, m *model.Demo) error Update(ctx context.Context, m *model.Demo) error GetByID(ctx context.Context, id int) (res *model.Demo, err error) List(ctx context.Context, limit, offset int) (res []*model.Demo, err error) DeleteByID(ctx context.Context, id int) (err error) } // DemoUseCase is a Demo useCase. type DemoUseCase struct { repo DemoRepo log *log.Helper } type ListReq struct { Page int Size int } // NewDemoUseCase new a Demo useCase. func NewDemoUseCase(repo DemoRepo) *DemoUseCase { return &DemoUseCase{ repo: repo, log: log.NewHelper(log.GetLogger()), } } // CreateDemo creates a Demo, and returns the new Demo. func (uc *DemoUseCase) CreateDemo(ctx context.Context, m *model.Demo) error { return uc.repo.Save(ctx, m) } func (uc *DemoUseCase) UpdateDemo(ctx context.Context, m *model.Demo) error { return uc.repo.Update(ctx, m) } func (uc *DemoUseCase) GetDemo(ctx context.Context, id int) (*model.Demo, error) { uc.log.WithContext(ctx).Info("qqqqqqqqqqqqqqqq") m, err := uc.repo.GetByID(ctx, id) if err != nil { return nil, err } return m, nil } func (uc *DemoUseCase) ListDemo(ctx context.Context, req *ListReq) ([]*model.Demo, error) { if req.Page <= 0 { req.Page = 1 } if req.Size <= 0 { req.Size = 20 } if req.Size >= 100 { req.Size = 100 } offset := (req.Page - 1) * req.Size return uc.repo.List(ctx, req.Size, offset) } func (uc *DemoUseCase) DeleteDemo(ctx context.Context, id int) error { return uc.repo.DeleteByID(ctx, int(id)) }