package userbehavior

import "time"

type TenantEventCapture struct {
	ID               uint64     `gorm:"primarykey"`
	CreatedAt        time.Time  `gorm:"created_at;type:TIMESTAMP;not null;<-:create"`
	UpdatedAt        *time.Time `gorm:"updated_at;type:TIMESTAMP"`
	EventUUID        string     `gorm:"size:128;not null;uniqueIndex:idx_tenant_event_capture_uuid,priority:2"`
	EventSource      string     `gorm:"size:64;not null;uniqueIndex:idx_tenant_event_capture_uuid,priority:1;index:idx_tenant_event_capture_source_type,priority:1"`
	EventType        string     `gorm:"size:128;not null;index:idx_tenant_event_capture_source_type,priority:2"`
	EventStatus      string     `gorm:"size:64"`
	TenantID         uint64     `gorm:"not null;index:idx_tenant_event_capture_tenant"`
	TenantName       string     `gorm:"size:255"`
	TenantStatus     string     `gorm:"size:64;index:idx_tenant_event_capture_tenant_filters,priority:1"`
	TenantKind       string     `gorm:"size:64;index:idx_tenant_event_capture_tenant_filters,priority:2"`
	TenantPlan       string     `gorm:"size:255;index:idx_tenant_event_capture_tenant_filters,priority:3"`
	SalesForceRegion string     `gorm:"size:255;index:idx_tenant_event_capture_tenant_filters,priority:4"`
	Country          string     `gorm:"size:16;index:idx_tenant_event_capture_tenant_filters,priority:5"`
	ClusterID        *uint64    `gorm:"index:idx_tenant_event_capture_cluster"`
	EventTime        *time.Time `gorm:"type:TIMESTAMP;index:idx_tenant_event_capture_event_time"`
	RawEvent         string     `gorm:"type:LONGTEXT;not null"`
}

func (TenantEventCapture) TableName() string {
	return "emea_tenant_events"
}
