This is an automated email from the ASF dual-hosted git repository.

miaoliyao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shardingsphere-on-cloud.git


The following commit(s) were added to refs/heads/main by this push:
     new 4b0b135  feat(pitr): agent server api input parameter (#217)
4b0b135 is described below

commit 4b0b13593df07fb0a6c183eadd384fd4c02271ac
Author: lltgo <[email protected]>
AuthorDate: Tue Feb 21 15:33:47 2023 +0800

    feat(pitr): agent server api input parameter (#217)
---
 pitr/agent/internal/cons/error.go                  | 10 ++++
 pitr/agent/internal/cons/http_header.go            |  2 +-
 pitr/agent/internal/handler/backup.go              | 22 ++++++-
 .../internal/handler/{resotre.go => restore.go}    | 21 ++++++-
 pitr/agent/internal/handler/show.go                | 22 ++++++-
 pitr/agent/internal/handler/view/backup.go         | 69 ++++++++++++++++++++++
 .../internal/handler/{show.go => view/restore.go}  | 42 ++++++++++++-
 pitr/agent/internal/handler/{ => view}/show.go     | 42 ++++++++++++-
 pitr/agent/internal/pkg/opengauss_test.go          |  2 +-
 9 files changed, 218 insertions(+), 14 deletions(-)

diff --git a/pitr/agent/internal/cons/error.go 
b/pitr/agent/internal/cons/error.go
index a617dde..d3969c6 100644
--- a/pitr/agent/internal/cons/error.go
+++ b/pitr/agent/internal/cons/error.go
@@ -33,4 +33,14 @@ var (
        StartOpenGaussFailed   = xerror.New(10008, "Failed to start opengauss.")
        StopOpenGaussFailed    = xerror.New(10009, "Failed to stop opengauss.")
        RestoreFailed          = xerror.New(10010, "Failed to restore 
opengauss.")
+       InvalidDbPort          = xerror.New(10011, "Invalid dn port.")
+       MissingUsername        = xerror.New(10012, "Missing username")
+       MissingPassword        = xerror.New(10013, "Missing password.")
+       MissingDnBackupPath    = xerror.New(10014, "Missing dn backup path.")
+       InvalidDnThreadsNum    = xerror.New(10015, "Invalid dn threads num.")
+       MissingDnBackupMode    = xerror.New(10016, "Missing dn backup mode.")
+       InvalidDnBackupMode    = xerror.New(10017, "Invalid dn backup mode.")
+       MissingInstance        = xerror.New(10018, "Missing instance.")
+       MissingDnBackupId      = xerror.New(10019, "Missing dn backup id.")
+       BodyParseFailed        = xerror.New(10020, "Invalid http request body.")
 )
diff --git a/pitr/agent/internal/cons/http_header.go 
b/pitr/agent/internal/cons/http_header.go
index 17d3fa4..ef461b6 100644
--- a/pitr/agent/internal/cons/http_header.go
+++ b/pitr/agent/internal/cons/http_header.go
@@ -18,5 +18,5 @@
 package cons
 
 const (
-       RequestID string = "request-id"
+       RequestID string = "x-request-id"
 )
diff --git a/pitr/agent/internal/handler/backup.go 
b/pitr/agent/internal/handler/backup.go
index a736b6d..10d3006 100644
--- a/pitr/agent/internal/handler/backup.go
+++ b/pitr/agent/internal/handler/backup.go
@@ -17,8 +17,26 @@
 
 package handler
 
-import "github.com/gofiber/fiber/v2"
+import (
+       "fmt"
+
+       
"github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/handler/view"
+
+       "github.com/gofiber/fiber/v2"
+
+       "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
+)
 
 func Backup(ctx *fiber.Ctx) error {
-       return nil
+       in := &view.BackupIn{}
+
+       if err := ctx.BodyParser(in); err != nil {
+               return fmt.Errorf("body parse err=%s,wrap=%w", err, 
cons.BodyParseFailed)
+       }
+
+       if err := in.Validate(); err != nil {
+               return err
+       }
+
+       return ctx.JSON(in)
 }
diff --git a/pitr/agent/internal/handler/resotre.go 
b/pitr/agent/internal/handler/restore.go
similarity index 66%
rename from pitr/agent/internal/handler/resotre.go
rename to pitr/agent/internal/handler/restore.go
index bdf7a51..66f0043 100644
--- a/pitr/agent/internal/handler/resotre.go
+++ b/pitr/agent/internal/handler/restore.go
@@ -17,8 +17,25 @@
 
 package handler
 
-import "github.com/gofiber/fiber/v2"
+import (
+       "fmt"
+
+       "github.com/gofiber/fiber/v2"
+
+       "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
+       
"github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/handler/view"
+)
 
 func Restore(ctx *fiber.Ctx) error {
-       return nil
+       in := &view.RestoreIn{}
+
+       if err := ctx.BodyParser(in); err != nil {
+               return fmt.Errorf("body parse err=%s,wrap=%w", err, 
cons.BodyParseFailed)
+       }
+
+       if err := in.Validate(); err != nil {
+               return err
+       }
+
+       return ctx.JSON(in)
 }
diff --git a/pitr/agent/internal/handler/show.go 
b/pitr/agent/internal/handler/show.go
index e92efd7..da7bc17 100644
--- a/pitr/agent/internal/handler/show.go
+++ b/pitr/agent/internal/handler/show.go
@@ -17,8 +17,26 @@
 
 package handler
 
-import "github.com/gofiber/fiber/v2"
+import (
+       "fmt"
+
+       
"github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/handler/view"
+
+       "github.com/gofiber/fiber/v2"
+
+       "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
+)
 
 func Show(ctx *fiber.Ctx) error {
-       return nil
+       in := &view.ShowIn{}
+
+       if err := ctx.BodyParser(in); err != nil {
+               return fmt.Errorf("body parse err=%s,wrap=%w", err, 
cons.BodyParseFailed)
+       }
+
+       if err := in.Validate(); err != nil {
+               return err
+       }
+
+       return ctx.JSON(in)
 }
diff --git a/pitr/agent/internal/handler/view/backup.go 
b/pitr/agent/internal/handler/view/backup.go
new file mode 100644
index 0000000..d379e79
--- /dev/null
+++ b/pitr/agent/internal/handler/view/backup.go
@@ -0,0 +1,69 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+ */
+
+package view
+
+import "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
+
+type BackupIn struct {
+       DbPort       uint16 `json:"db_port"`
+       Username     string `json:"username"`
+       Password     string `json:"password"`
+       DnBackupPath string `json:"dn_backup_path"`
+       DnThreadsNum uint8  `json:"dn_threads_num"`
+       DnBackupMode string `json:"dn_backup_mode"`
+       Instance     string `json:"instance"`
+}
+
+func (in *BackupIn) Validate() error {
+       if in == nil {
+               return cons.Internal
+       }
+
+       if in.DbPort == 0 {
+               return cons.InvalidDbPort
+       }
+
+       if in.Username == "" {
+               return cons.MissingUsername
+       }
+
+       if in.Password == "" {
+               return cons.MissingPassword
+       }
+
+       if in.DnBackupPath == "" {
+               return cons.MissingDnBackupPath
+       }
+
+       if in.DnThreadsNum == 0 {
+               return cons.InvalidDnThreadsNum
+       }
+
+       if in.DnBackupMode == "" {
+               return cons.MissingDnBackupMode
+       }
+
+       if in.DnBackupMode != "FULL" && in.DnBackupMode != "PTRACK" {
+               return cons.InvalidDnBackupMode
+       }
+
+       if in.Instance == "" {
+               return cons.MissingInstance
+       }
+       return nil
+}
diff --git a/pitr/agent/internal/handler/show.go 
b/pitr/agent/internal/handler/view/restore.go
similarity index 50%
copy from pitr/agent/internal/handler/show.go
copy to pitr/agent/internal/handler/view/restore.go
index e92efd7..75d3ba5 100644
--- a/pitr/agent/internal/handler/show.go
+++ b/pitr/agent/internal/handler/view/restore.go
@@ -15,10 +15,46 @@
 * limitations under the License.
  */
 
-package handler
+package view
 
-import "github.com/gofiber/fiber/v2"
+import "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
 
-func Show(ctx *fiber.Ctx) error {
+type RestoreIn struct {
+       DbPort       uint16 `json:"db_port"`
+       Username     string `json:"username"`
+       Password     string `json:"password"`
+       Instance     string `json:"instance"`
+       DnBackupPath string `json:"dn_backup_path"`
+       DnBackupId   string `json:"dn_backup_id"`
+}
+
+func (in *RestoreIn) Validate() error {
+       if in == nil {
+               return cons.Internal
+       }
+
+       if in.DbPort == 0 {
+               return cons.InvalidDbPort
+       }
+
+       if in.Username == "" {
+               return cons.MissingUsername
+       }
+
+       if in.Password == "" {
+               return cons.MissingPassword
+       }
+
+       if in.DnBackupPath == "" {
+               return cons.MissingDnBackupPath
+       }
+
+       if in.DnBackupId == "" {
+               return cons.MissingDnBackupId
+       }
+
+       if in.Instance == "" {
+               return cons.MissingInstance
+       }
        return nil
 }
diff --git a/pitr/agent/internal/handler/show.go 
b/pitr/agent/internal/handler/view/show.go
similarity index 50%
copy from pitr/agent/internal/handler/show.go
copy to pitr/agent/internal/handler/view/show.go
index e92efd7..5551187 100644
--- a/pitr/agent/internal/handler/show.go
+++ b/pitr/agent/internal/handler/view/show.go
@@ -15,10 +15,46 @@
 * limitations under the License.
  */
 
-package handler
+package view
 
-import "github.com/gofiber/fiber/v2"
+import "github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/cons"
 
-func Show(ctx *fiber.Ctx) error {
+type ShowIn struct {
+       DbPort       uint16 `json:"db_port"`
+       Username     string `json:"username"`
+       Password     string `json:"password"`
+       DnBackupId   string `json:"dn_backup_id"`
+       DnBackupPath string `json:"dn_backup_path"`
+       Instance     string `json:"instance"`
+}
+
+func (in *ShowIn) Validate() error {
+       if in == nil {
+               return cons.Internal
+       }
+
+       if in.DbPort == 0 {
+               return cons.InvalidDbPort
+       }
+
+       if in.Username == "" {
+               return cons.MissingUsername
+       }
+
+       if in.Password == "" {
+               return cons.MissingPassword
+       }
+
+       if in.DnBackupPath == "" {
+               return cons.MissingDnBackupPath
+       }
+
+       if in.DnBackupId == "" {
+               return cons.MissingDnBackupId
+       }
+
+       if in.Instance == "" {
+               return cons.MissingInstance
+       }
        return nil
 }
diff --git a/pitr/agent/internal/pkg/opengauss_test.go 
b/pitr/agent/internal/pkg/opengauss_test.go
index fef26e8..ee451b7 100644
--- a/pitr/agent/internal/pkg/opengauss_test.go
+++ b/pitr/agent/internal/pkg/opengauss_test.go
@@ -153,7 +153,7 @@ var _ = Describe("OpenGauss,requires opengauss 
environment", func() {
                        Expect(err).To(BeNil())
 
                        err = og.Stop(pgData)
-            Expect(errors.Is(err, cons.StopOpenGaussFailed)).To(BeTrue())
+                       Expect(errors.Is(err, 
cons.StopOpenGaussFailed)).To(BeTrue())
 
                        err = og.Start(pgData)
                        Expect(err).To(BeNil())

Reply via email to