Browse Source

refactor:(cert) migrate domains to json array

Jacky 1 day ago
parent
commit
06570b51db
4 changed files with 20 additions and 3 deletions
  1. 1 1
      go.mod
  2. 17 0
      internal/migrate/4.update_cert_domains.go
  3. 1 0
      internal/migrate/migrate.go
  4. 1 2
      model/cert.go

+ 1 - 1
go.mod

@@ -32,7 +32,6 @@ require (
 	github.com/golang-jwt/jwt/v5 v5.2.2
 	github.com/golang-jwt/jwt/v5 v5.2.2
 	github.com/google/uuid v1.6.0
 	github.com/google/uuid v1.6.0
 	github.com/gorilla/websocket v1.5.3
 	github.com/gorilla/websocket v1.5.3
-	github.com/lib/pq v1.10.9
 	github.com/mark3labs/mcp-go v0.32.0
 	github.com/mark3labs/mcp-go v0.32.0
 	github.com/minio/selfupdate v0.6.0
 	github.com/minio/selfupdate v0.6.0
 	github.com/nikoksr/notify v1.3.0
 	github.com/nikoksr/notify v1.3.0
@@ -206,6 +205,7 @@ require (
 	github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
 	github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
 	github.com/labbsr0x/goh v1.0.1 // indirect
 	github.com/labbsr0x/goh v1.0.1 // indirect
 	github.com/leodido/go-urn v1.4.0 // indirect
 	github.com/leodido/go-urn v1.4.0 // indirect
+	github.com/lib/pq v1.10.9 // indirect
 	github.com/libdns/alidns v1.0.4 // indirect
 	github.com/libdns/alidns v1.0.4 // indirect
 	github.com/libdns/cloudflare v0.2.1 // indirect
 	github.com/libdns/cloudflare v0.2.1 // indirect
 	github.com/libdns/huaweicloud v1.0.0-beta.2 // indirect
 	github.com/libdns/huaweicloud v1.0.0-beta.2 // indirect

+ 17 - 0
internal/migrate/4.update_cert_domains.go

@@ -0,0 +1,17 @@
+package migrate
+
+import (
+	"github.com/go-gormigrate/gormigrate/v2"
+	"gorm.io/gorm"
+)
+
+var UpdateCertDomains = &gormigrate.Migration{
+	ID: "20250706000001",
+	Migrate: func(tx *gorm.DB) error {
+		// Update domains field in certs table: replace { with [ and } with ]
+		if err := tx.Exec("UPDATE certs SET domains = REPLACE(REPLACE(domains, '{', '['), '}', ']')").Error; err != nil {
+			return err
+		}
+		return nil
+	},
+}

+ 1 - 0
internal/migrate/migrate.go

@@ -7,6 +7,7 @@ import (
 var Migrations = []*gormigrate.Migration{
 var Migrations = []*gormigrate.Migration{
 	SiteCategoryToEnvGroup,
 	SiteCategoryToEnvGroup,
 	RenameAuthsToUsers,
 	RenameAuthsToUsers,
+	UpdateCertDomains,
 }
 }
 
 
 var BeforeAutoMigrate = []*gormigrate.Migration{
 var BeforeAutoMigrate = []*gormigrate.Migration{

+ 1 - 2
model/cert.go

@@ -7,7 +7,6 @@ import (
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"github.com/go-acme/lego/v4/certcrypto"
 	"github.com/go-acme/lego/v4/certcrypto"
 	"github.com/go-acme/lego/v4/certificate"
 	"github.com/go-acme/lego/v4/certificate"
-	"github.com/lib/pq"
 	"gorm.io/gorm/clause"
 	"gorm.io/gorm/clause"
 )
 )
 
 
@@ -32,7 +31,7 @@ type CertificateResource struct {
 type Cert struct {
 type Cert struct {
 	Model
 	Model
 	Name                    string               `json:"name"`
 	Name                    string               `json:"name"`
-	Domains                 pq.StringArray       `json:"domains" gorm:"type:text[]"`
+	Domains                 []string             `json:"domains" gorm:"serializer:json"`
 	Filename                string               `json:"filename"`
 	Filename                string               `json:"filename"`
 	SSLCertificatePath      string               `json:"ssl_certificate_path"`
 	SSLCertificatePath      string               `json:"ssl_certificate_path"`
 	SSLCertificateKeyPath   string               `json:"ssl_certificate_key_path"`
 	SSLCertificateKeyPath   string               `json:"ssl_certificate_key_path"`