From ff67ace165f45c5bf057362428ff0baa0c8aeebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Tue, 26 Nov 2024 04:06:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0CLI=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/route/cli.go | 45 ++++++++++++++++++++++++++++++++++ internal/service/cli.go | 53 ++++++++++++++++++++++++++++------------- 2 files changed, 82 insertions(+), 16 deletions(-) diff --git a/internal/route/cli.go b/internal/route/cli.go index 443ddd6c..3d145cd5 100644 --- a/internal/route/cli.go +++ b/internal/route/cli.go @@ -173,6 +173,51 @@ func Cli() []*cli.Command { }, }, }, + { + Name: "database", + Usage: "数据库管理", + Commands: []*cli.Command{ + { + Name: "add-server", + Usage: "添加数据库服务器", + Action: cliService.DatabaseAddServer, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "type", + Usage: "服务器类型", + Required: true, + }, + &cli.StringFlag{ + Name: "name", + Usage: "服务器名称", + Required: true, + }, + &cli.StringFlag{ + Name: "host", + Usage: "服务器地址", + Required: true, + }, + &cli.UintFlag{ + Name: "port", + Usage: "服务器端口", + Required: true, + }, + &cli.StringFlag{ + Name: "username", + Usage: "服务器用户名", + }, + &cli.StringFlag{ + Name: "password", + Usage: "服务器密码", + }, + &cli.StringFlag{ + Name: "remark", + Usage: "服务器备注", + }, + }, + }, + }, + }, { Name: "backup", Usage: "数据备份", diff --git a/internal/service/cli.go b/internal/service/cli.go index 809bcf3c..8f04c430 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -31,26 +31,28 @@ import ( ) type CliService struct { - hr string - api *api.API - appRepo biz.AppRepo - userRepo biz.UserRepo - settingRepo biz.SettingRepo - backupRepo biz.BackupRepo - websiteRepo biz.WebsiteRepo - hash hash.Hasher + hr string + api *api.API + appRepo biz.AppRepo + userRepo biz.UserRepo + settingRepo biz.SettingRepo + backupRepo biz.BackupRepo + websiteRepo biz.WebsiteRepo + databaseServerRepo biz.DatabaseServerRepo + hash hash.Hasher } func NewCliService() *CliService { return &CliService{ - hr: `+----------------------------------------------------`, - api: api.NewAPI(app.Version), - appRepo: data.NewAppRepo(), - userRepo: data.NewUserRepo(), - settingRepo: data.NewSettingRepo(), - backupRepo: data.NewBackupRepo(), - websiteRepo: data.NewWebsiteRepo(), - hash: hash.NewArgon2id(), + hr: `+----------------------------------------------------`, + api: api.NewAPI(app.Version), + appRepo: data.NewAppRepo(), + userRepo: data.NewUserRepo(), + settingRepo: data.NewSettingRepo(), + backupRepo: data.NewBackupRepo(), + websiteRepo: data.NewWebsiteRepo(), + databaseServerRepo: data.NewDatabaseServerRepo(), + hash: hash.NewArgon2id(), } } @@ -479,6 +481,25 @@ func (s *CliService) WebsiteWrite(ctx context.Context, cmd *cli.Command) error { return nil } +func (s *CliService) DatabaseAddServer(ctx context.Context, cmd *cli.Command) error { + req := &request.DatabaseServerCreate{ + Type: cmd.String("type"), + Name: cmd.String("name"), + Host: cmd.String("host"), + Port: uint(cmd.Uint("port")), + Username: cmd.String("username"), + Password: cmd.String("password"), + Remark: cmd.String("remark"), + } + + if err := s.databaseServerRepo.Create(req); err != nil { + return err + } + + fmt.Printf("数据库服务器 %s 添加成功\n", cmd.String("name")) + return nil +} + func (s *CliService) BackupWebsite(ctx context.Context, cmd *cli.Command) error { fmt.Println(s.hr) fmt.Printf("★ 开始备份 [%s]\n", time.Now().Format(time.DateTime))