Files
lti-api/internal/entities/integration_api_key.go
2026-04-14 15:14:31 +07:00

37 lines
1.3 KiB
Go

package entities
import (
"time"
"gorm.io/gorm"
)
const (
IntegrationAPIKeyStatusActive = "active"
IntegrationAPIKeyStatusRevoked = "revoked"
)
type IntegrationAPIKey struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"type:varchar(100);not null"`
Environment string `gorm:"type:varchar(50);not null;uniqueIndex:idx_integration_api_keys_env_prefix,priority:1"`
Status string `gorm:"type:varchar(20);not null;default:active;index"`
KeyPrefix string `gorm:"type:varchar(64);not null;uniqueIndex:idx_integration_api_keys_env_prefix,priority:2"`
KeyHash string `gorm:"type:text;not null"`
PermissionCodes []string `gorm:"type:jsonb;serializer:json;not null"`
AllArea bool `gorm:"not null;default:false"`
AreaIDs []uint `gorm:"type:jsonb;serializer:json;not null"`
AllLocation bool `gorm:"not null;default:false"`
LocationIDs []uint `gorm:"type:jsonb;serializer:json;not null"`
LastUsedAt *time.Time
LastUsedFrom string `gorm:"type:varchar(128)"`
RevokedAt *time.Time
CreatedAt time.Time `gorm:"autoCreateTime"`
UpdatedAt time.Time `gorm:"autoUpdateTime"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
func (IntegrationAPIKey) TableName() string {
return "integration_api_keys"
}