package tenant

import "github.com/tidbcloud/devops/models/base"

type (
	TenantStatus string
	TenantKind   string
	TenantRegion string
	TenantPlan   string
)

const (
	TenantStatusPending  TenantStatus = "pending"
	TenantStatusActive   TenantStatus = "active"
	TenantStatusInactive TenantStatus = "inactive"
	TenantStatusDeleted  TenantStatus = "deleted"
	TenantStatusCleared  TenantStatus = "cleared"

	TenantKindInternal TenantKind = "internal"
	TenantKindExternal TenantKind = "external"

	TenantRegionAPAC      TenantRegion = "APAC"
	TenantRegionEMEA      TenantRegion = "EMEA"
	TenantRegionJapan     TenantRegion = "JAPAN"
	TenantRegionLATAM     TenantRegion = "LATAM"
	TenantRegionNA        TenantRegion = "NA"
	TenantRegionRDG       TenantRegion = "RDG"
	TenantRegionUnknown   TenantRegion = "UNKNOWN"
	TenantRegionTestInfra TenantRegion = "TEST_INFRA"

	TenantPlanNewUser   TenantPlan = "new_user"
	TenantPlanFreeTrial TenantPlan = "free_trial"
	TenantPlanPoc       TenantPlan = "poc"
	TenantPlanOnDemand  TenantPlan = "on_demand"
)

type Tenant struct {
	base.Updatable

	Name             string       `gorm:"type:VARCHAR(255);not null"`
	Email            string       `gorm:"type:VARCHAR(255);not null"`
	Country          string       `gorm:"type:VARCHAR(255);not null"`
	TimeZone         string       `gorm:"type:VARCHAR(255);not null"`
	Status           TenantStatus `gorm:"type:ENUM('pending', 'active', 'inactive', 'deleted', 'cleared');not null"`
	Kind             TenantKind   `gorm:"type:VARCHAR(64);default:'external'"`
	Plan             TenantPlan   `gorm:"type:VARCHAR(255);default:''"`
	Alias            string       `gorm:"type:VARCHAR(255);default:''"`
	CountryRegion    TenantRegion `gorm:"type:VARCHAR(255);default:''"`
	SalesOwnerEmail  string       `gorm:"type:VARCHAR(255);default:''"`
	CustomID         string       `gorm:"type:VARCHAR(255);default:''"`
	Segmentation     string       `gorm:"type:VARCHAR(255);default:''"`
	SalesForceRegion TenantRegion `gorm:"type:VARCHAR(255);default:''"`
	SalesForceKind   TenantKind   `gorm:"type:VARCHAR(64);default:''"`
	TAMName          string       `gorm:"type:VARCHAR(255);default:''"`
}
