mirror of
https://github.com/acepanel/panel.git
synced 2026-02-07 10:37:14 +08:00
feat: 数据库管理优化2
This commit is contained in:
@@ -20,10 +20,12 @@ type Database struct {
|
||||
Server string `json:"server"`
|
||||
ServerID uint `json:"server_id"`
|
||||
Encoding string `json:"encoding"`
|
||||
Comment string `json:"comment"`
|
||||
}
|
||||
|
||||
type DatabaseRepo interface {
|
||||
List(page, limit uint) ([]*Database, int64, error)
|
||||
Create(req *request.DatabaseCreate) error
|
||||
Delete(serverID uint, name string) error
|
||||
Comment(req *request.DatabaseComment) error
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"slices"
|
||||
|
||||
@@ -53,6 +54,7 @@ func (r databaseRepo) List(page, limit uint) ([]*biz.Database, int64, error) {
|
||||
Server: server.Name,
|
||||
ServerID: server.ID,
|
||||
Encoding: item.Encoding,
|
||||
Comment: item.Comment,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -134,3 +136,23 @@ func (r databaseRepo) Delete(serverID uint, name string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r databaseRepo) Comment(req *request.DatabaseComment) error {
|
||||
server, err := NewDatabaseServerRepo().Get(req.ServerID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch server.Type {
|
||||
case biz.DatabaseTypeMysql:
|
||||
return errors.New("mysql not support database comment")
|
||||
case biz.DatabaseTypePostgresql:
|
||||
postgres, err := db.NewPostgres(server.Username, server.Password, server.Host, server.Port)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return postgres.DatabaseComment(req.Name, req.Comment)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -14,3 +14,9 @@ type DatabaseDelete struct {
|
||||
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
|
||||
Name string `form:"name" json:"name" validate:"required"`
|
||||
}
|
||||
|
||||
type DatabaseComment struct {
|
||||
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
|
||||
Name string `form:"name" json:"name" validate:"required"`
|
||||
Comment string `form:"comment" json:"comment"`
|
||||
}
|
||||
|
||||
@@ -67,6 +67,7 @@ func Http(r chi.Router) {
|
||||
r.Get("/", database.List)
|
||||
r.Post("/", database.Create)
|
||||
r.Delete("/", database.Delete)
|
||||
r.Post("/comment", database.Comment)
|
||||
})
|
||||
|
||||
r.Route("/databaseServer", func(r chi.Router) {
|
||||
|
||||
@@ -39,6 +39,7 @@ func Success(w http.ResponseWriter, data any) {
|
||||
func Error(w http.ResponseWriter, code int, format string, args ...any) {
|
||||
render := chix.NewRender(w)
|
||||
defer render.Release()
|
||||
render.Header(chix.HeaderContentType, chix.MIMEApplicationJSONCharsetUTF8) // must before Status()
|
||||
render.Status(code)
|
||||
render.JSON(&ErrorResponse{
|
||||
Message: fmt.Sprintf(format, args...),
|
||||
@@ -49,6 +50,7 @@ func Error(w http.ResponseWriter, code int, format string, args ...any) {
|
||||
func ErrorSystem(w http.ResponseWriter) {
|
||||
render := chix.NewRender(w)
|
||||
defer render.Release()
|
||||
render.Header(chix.HeaderContentType, chix.MIMEApplicationJSONCharsetUTF8) // must before Status()
|
||||
render.Status(http.StatusInternalServerError)
|
||||
render.JSON(&ErrorResponse{
|
||||
Message: "系统内部错误",
|
||||
|
||||
@@ -68,3 +68,18 @@ func (s *Database) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Success(w, nil)
|
||||
}
|
||||
|
||||
func (s *Database) Comment(w http.ResponseWriter, r *http.Request) {
|
||||
req, err := Bind[request.DatabaseComment](r)
|
||||
if err != nil {
|
||||
Error(w, http.StatusUnprocessableEntity, "%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = s.databaseRepo.Comment(req); err != nil {
|
||||
Error(w, http.StatusInternalServerError, "%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
Success(w, nil)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user