Files
mp-qvyun/backend/common/service/tenants/tenants.go
2024-12-07 18:48:05 +08:00

74 lines
1.8 KiB
Go

package tenants
import (
"time"
"backend/modules/commands/tenant"
"backend/modules/medias"
"backend/modules/users"
"backend/providers/app"
"backend/providers/postgres"
"backend/providers/storage"
"git.ipao.vip/rogeecn/atom"
"git.ipao.vip/rogeecn/atom/container"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
func defaultProviders(providers ...container.ProviderContainer) container.Providers {
return append(container.Providers{
app.DefaultProvider(),
storage.DefaultProvider(),
postgres.DefaultProvider(),
}, providers...)
}
func Command() atom.Option {
return atom.Command(
atom.Name("tenants"),
atom.Short("run tenants"),
atom.Command(
atom.Name("create"),
atom.Providers(defaultProviders().With(
medias.Provide,
users.Provide,
tenant.Provide,
)),
atom.Arguments(func(cmd *cobra.Command) {
cmd.Flags().String("slug", "", "slug")
}),
atom.RunE(func(cmd *cobra.Command, args []string) error {
return container.Container.Invoke(func(t *tenant.Create) error {
slug := cmd.Flag("slug").Value.String()
return t.RunE(args[0], slug)
})
}),
),
atom.Command(
atom.Name("expire"),
atom.Long("expire [slug] [2024-01-01]"),
atom.Providers(defaultProviders().With(
medias.Provide,
users.Provide,
tenant.Provide,
)),
atom.Arguments(func(cmd *cobra.Command) {
}),
atom.RunE(func(cmd *cobra.Command, args []string) error {
return container.Container.Invoke(func(t *tenant.Expire) error {
slug := args[0]
expireStr := args[1] // format 2024-01-01
// parse expire string as time.Time
expire, err := time.Parse("2006-01-02", expireStr)
if err != nil {
return errors.Wrapf(err, "parse expire time failed: %s", expireStr)
}
return t.RunE(slug, expire)
})
}),
),
)
}