package model

import "time"

// AssetIdentifier 全局资产标识符注册表模型
// 在数据库层保证 IoT 卡的 ICCID/VirtualNo 与设备的 VirtualNo 跨两张表全局唯一
// 不使用 gorm.Model（无需软删除），仅包含核心字段
type AssetIdentifier struct {
	ID         uint      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
	Identifier string    `gorm:"column:identifier;type:varchar(100);uniqueIndex:uq_asset_identifier;not null;comment:标识符值（ICCID 或 VirtualNo，全局唯一）" json:"identifier"`
	AssetType  string    `gorm:"column:asset_type;type:varchar(20);not null;comment:资产类型：iot_card 或 device" json:"asset_type"`
	AssetID    uint      `gorm:"column:asset_id;index:idx_asset_identifier_asset;not null;comment:对应资产的主键 ID" json:"asset_id"`
	CreatedAt  time.Time `gorm:"column:created_at;not null;default:now();comment:写入时间" json:"created_at"`
}

// TableName 指定表名
func (AssetIdentifier) TableName() string {
	return "tb_asset_identifier"
}

const (
	AssetTypeIotCard = "iot_card"
	AssetTypeDevice  = "device"
)
