c553237f15
原 size:2048 在 utf8mb4 下产生 8192 字节索引,超过 InnoDB 3072 字节上限, 全新环境 AutoMigrate 必失败。改为 VARCHAR(768)(768×4=3072 字节,恰好 在上限内),schema.sql 同步更新列类型并将 uk_license_key 改为全列索引(无 需前缀)。新增测试 TestLicenseTokenFitsColumnLimit 验证最坏情况 token 长度 确实在 768 字符以内。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
734 B
Go
18 lines
734 B
Go
package model
|
|
|
|
import "time"
|
|
|
|
type License struct {
|
|
Base
|
|
ShopID uint64 `gorm:"not null;index" json:"shop_id"`
|
|
LicenseKey string `gorm:"size:768;uniqueIndex" json:"license_key"`
|
|
Type string `gorm:"type:enum('trial','monthly','annual','lifetime');default:'trial'" json:"type"`
|
|
ExpiresAt *time.Time `json:"expires_at"`
|
|
IsActive bool `gorm:"default:true" json:"is_active"`
|
|
MaxDevices int `gorm:"default:3" json:"max_devices"`
|
|
Features JSON `gorm:"type:json" json:"features,omitempty"`
|
|
// Deprecated: device binding is now tracked in license_devices table.
|
|
DeviceID string `gorm:"size:255" json:"device_id,omitempty"`
|
|
ActivatedAt *time.Time `json:"activated_at,omitempty"`
|
|
}
|