package orders import ( "database/sql" "backend/app/http/posts" "backend/app/http/tenants" "backend/app/http/users" "backend/providers/pay" "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( postSvc *posts.Service, svc *Service, tenantSvc *tenants.Service, userSvc *users.Service, ) (*OrderController, error) { obj := &OrderController{ postSvc: postSvc, svc: svc, tenantSvc: tenantSvc, userSvc: userSvc, } if err := obj.Prepare(); err != nil { return nil, err } return obj, nil }); err != nil { return err } if err := container.Container.Provide(func( pay *pay.Client, postSvc *posts.Service, svc *Service, tenantSvc *tenants.Service, userSvc *users.Service, ) (*PayController, error) { obj := &PayController{ pay: pay, postSvc: postSvc, svc: svc, tenantSvc: tenantSvc, userSvc: userSvc, } if err := obj.Prepare(); err != nil { return nil, err } return obj, nil }); err != nil { return err } if err := container.Container.Provide(func( orderController *OrderController, payController *PayController, ) (contracts.HttpRoute, error) { obj := &Routes{ orderController: orderController, payController: payController, } if err := obj.Prepare(); err != nil { return nil, err } 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 }