From 16fceec8e78b24466b5bde07d959502d9b79aa21 Mon Sep 17 00:00:00 2001 From: zenfun Date: Wed, 17 Dec 2025 00:51:02 +0800 Subject: [PATCH] style(core): align struct tags and fields Standardize alignment of struct tags in models and field assignments in services for better readability. Additionally, include the Binding model in the test database auto-migration. --- internal/api/binding_handler.go | 1 - internal/api/provider_handler_test.go | 2 +- internal/dto/binding.go | 1 - internal/model/models.go | 32 +++++++++++++-------------- internal/service/master.go | 32 +++++++++++++-------------- internal/service/sync.go | 20 ++++++++--------- 6 files changed, 43 insertions(+), 45 deletions(-) diff --git a/internal/api/binding_handler.go b/internal/api/binding_handler.go index a5269de..f8f187f 100644 --- a/internal/api/binding_handler.go +++ b/internal/api/binding_handler.go @@ -157,4 +157,3 @@ func (h *Handler) UpdateBinding(c *gin.Context) { c.JSON(http.StatusOK, existing) } - diff --git a/internal/api/provider_handler_test.go b/internal/api/provider_handler_test.go index af57edb..1d24f29 100644 --- a/internal/api/provider_handler_test.go +++ b/internal/api/provider_handler_test.go @@ -28,7 +28,7 @@ func newTestHandler(t *testing.T) (*Handler, *gorm.DB) { if err != nil { t.Fatalf("open sqlite: %v", err) } - if err := db.AutoMigrate(&model.Provider{}); err != nil { + if err := db.AutoMigrate(&model.Provider{}, &model.Binding{}); err != nil { t.Fatalf("migrate: %v", err) } diff --git a/internal/dto/binding.go b/internal/dto/binding.go index e3b5d15..5e36f6f 100644 --- a/internal/dto/binding.go +++ b/internal/dto/binding.go @@ -10,4 +10,3 @@ type BindingDTO struct { SelectorValue string `json:"selector_value"` Status string `json:"status"` } - diff --git a/internal/model/models.go b/internal/model/models.go index 3d6c880..25f31ae 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -11,31 +11,31 @@ import ( // Master represents a tenant account. type Master struct { gorm.Model - Name string `gorm:"size:255" json:"name"` - MasterKey string `gorm:"size:255" json:"-"` // bcrypt hash of master key - MasterKeyDigest string `gorm:"size:64;uniqueIndex" json:"-"` // sha256 digest for lookup - Group string `gorm:"size:100;default:'default'" json:"group"` // routing group + Name string `gorm:"size:255" json:"name"` + MasterKey string `gorm:"size:255" json:"-"` // bcrypt hash of master key + MasterKeyDigest string `gorm:"size:64;uniqueIndex" json:"-"` // sha256 digest for lookup + Group string `gorm:"size:100;default:'default'" json:"group"` // routing group DefaultNamespace string `gorm:"size:100;default:'default'" json:"default_namespace"` Namespaces string `gorm:"size:1024;default:'default'" json:"namespaces"` // Comma-separated namespaces - Epoch int64 `gorm:"default:1" json:"epoch"` // used for revocation/rotation - Status string `gorm:"size:50;default:'active'" json:"status"` // active, suspended - MaxChildKeys int `gorm:"default:5" json:"max_child_keys"` - GlobalQPS int `gorm:"default:3" json:"global_qps"` + Epoch int64 `gorm:"default:1" json:"epoch"` // used for revocation/rotation + Status string `gorm:"size:50;default:'active'" json:"status"` // active, suspended + MaxChildKeys int `gorm:"default:5" json:"max_child_keys"` + GlobalQPS int `gorm:"default:3" json:"global_qps"` } // Key represents a child access token issued by a Master. type Key struct { gorm.Model - MasterID uint `gorm:"not null;index" json:"master_id"` - KeySecret string `gorm:"size:255;column:key_secret" json:"-"` // bcrypt hash of child key - TokenHash string `gorm:"size:64;uniqueIndex" json:"token_hash"` // sha256 digest of child key - Group string `gorm:"size:100;default:'default'" json:"group"` // routing group - Scopes string `gorm:"size:1024" json:"scopes"` // Comma-separated scopes + MasterID uint `gorm:"not null;index" json:"master_id"` + KeySecret string `gorm:"size:255;column:key_secret" json:"-"` // bcrypt hash of child key + TokenHash string `gorm:"size:64;uniqueIndex" json:"token_hash"` // sha256 digest of child key + Group string `gorm:"size:100;default:'default'" json:"group"` // routing group + Scopes string `gorm:"size:1024" json:"scopes"` // Comma-separated scopes DefaultNamespace string `gorm:"size:100;default:'default'" json:"default_namespace"` Namespaces string `gorm:"size:1024;default:'default'" json:"namespaces"` // Comma-separated namespaces - IssuedAtEpoch int64 `gorm:"not null" json:"issued_at_epoch"` // copy of master epoch at issuance - Status string `gorm:"size:50;default:'active'" json:"status"` // active, suspended - IssuedBy string `gorm:"size:20;default:'master'" json:"issued_by"` + IssuedAtEpoch int64 `gorm:"not null" json:"issued_at_epoch"` // copy of master epoch at issuance + Status string `gorm:"size:50;default:'active'" json:"status"` // active, suspended + IssuedBy string `gorm:"size:20;default:'master'" json:"issued_by"` } // Provider remains the same. diff --git a/internal/service/master.go b/internal/service/master.go index 8ee125f..d6b0972 100644 --- a/internal/service/master.go +++ b/internal/service/master.go @@ -42,16 +42,16 @@ func (s *MasterService) CreateMaster(name, group string, maxChildKeys, globalQPS masterKeyDigest := tokenhash.HashToken(rawMasterKey) master := &model.Master{ - Name: name, - MasterKey: string(hashedMasterKey), - MasterKeyDigest: masterKeyDigest, - Group: group, + Name: name, + MasterKey: string(hashedMasterKey), + MasterKeyDigest: masterKeyDigest, + Group: group, DefaultNamespace: "default", Namespaces: "default", - MaxChildKeys: maxChildKeys, - GlobalQPS: globalQPS, - Status: "active", - Epoch: 1, + MaxChildKeys: maxChildKeys, + GlobalQPS: globalQPS, + Status: "active", + Epoch: 1, } if err := s.db.Create(master).Error; err != nil { @@ -147,16 +147,16 @@ func (s *MasterService) issueChildKey(masterID uint, group string, scopes string } key := &model.Key{ - MasterID: masterID, - KeySecret: string(hashedChildKey), - TokenHash: tokenHash, - Group: group, - Scopes: scopes, + MasterID: masterID, + KeySecret: string(hashedChildKey), + TokenHash: tokenHash, + Group: group, + Scopes: scopes, DefaultNamespace: strings.TrimSpace(master.DefaultNamespace), Namespaces: strings.TrimSpace(master.Namespaces), - IssuedAtEpoch: master.Epoch, - Status: "active", - IssuedBy: strings.TrimSpace(issuedBy), + IssuedAtEpoch: master.Epoch, + Status: "active", + IssuedBy: strings.TrimSpace(issuedBy), } if strings.TrimSpace(key.DefaultNamespace) == "" { key.DefaultNamespace = "default" diff --git a/internal/service/sync.go b/internal/service/sync.go index 0458c3e..7fc44cf 100644 --- a/internal/service/sync.go +++ b/internal/service/sync.go @@ -35,11 +35,11 @@ func (s *SyncService) SyncKey(key *model.Key) error { } fields := map[string]interface{}{ - "master_id": key.MasterID, - "issued_at_epoch": key.IssuedAtEpoch, - "status": key.Status, - "group": key.Group, - "scopes": key.Scopes, + "master_id": key.MasterID, + "issued_at_epoch": key.IssuedAtEpoch, + "status": key.Status, + "group": key.Group, + "scopes": key.Scopes, "default_namespace": key.DefaultNamespace, "namespaces": key.Namespaces, } @@ -259,11 +259,11 @@ func (s *SyncService) SyncAll(db *gorm.DB) error { return fmt.Errorf("token hash missing for key %d", k.ID) } pipe.HSet(ctx, fmt.Sprintf("auth:token:%s", tokenHash), map[string]interface{}{ - "master_id": k.MasterID, - "issued_at_epoch": k.IssuedAtEpoch, - "status": k.Status, - "group": k.Group, - "scopes": k.Scopes, + "master_id": k.MasterID, + "issued_at_epoch": k.IssuedAtEpoch, + "status": k.Status, + "group": k.Group, + "scopes": k.Scopes, "default_namespace": k.DefaultNamespace, "namespaces": k.Namespaces, })