package constant

type (
	ImportStatus      string
	DataFormat        uint32
	DataSource        uint32
	ImportTableResult string
)

const (
	ImportStatusUnknown   ImportStatus = "unknown"
	ImportStatusPreparing ImportStatus = "preparing"
	ImportStatusImporting ImportStatus = "importing"
	ImportStatusCompleted ImportStatus = "completed"
	ImportStatusFailed    ImportStatus = "failed"
	ImportStatusCanceling ImportStatus = "canceling"
	ImportStatusCanceled  ImportStatus = "canceled"

	// keep compatible with https://github.com/tidbcloud/dataflow-service/blob/166daf6f3e72284538e93dc1bea94a78c88f0daf/idl/idl/dataflow/dataflow/service.proto#L79-L82
	ImportDataFormatUnknown        DataFormat = 0
	ImportDataFormatSql            DataFormat = 1
	ImportDataFormatAuroraSnapshot DataFormat = 2
	ImportDataFormatCsv            DataFormat = 3
	ImportDataFormatParquet        DataFormat = 4

	ImportDataSourceUnknown      DataSource = 0
	ImportDataSourceLocal        DataSource = 1
	ImportDataSourceS3           DataSource = 2
	ImportDataSourceGCS          DataSource = 3
	ImportDataSourceAzBlob       DataSource = 4
	ImportDataSourceS3Compatible DataSource = 5
	ImportDataSourceOSS          DataSource = 6

	ImportTableResultSuccess ImportTableResult = "success"
	ImportTableResultWarning ImportTableResult = "warning"
	ImportTableResultError   ImportTableResult = "error"

	ImportIDPrefix = "imp-"

	ImportSuperVIPAnonKey = AnnoKeyPrefix + "/import-super-vip"
)

func ConvertDataFormat2Str(dataFormat DataFormat) string {
	switch dataFormat {
	case ImportDataFormatSql:
		return "sql"
	case ImportDataFormatCsv:
		return "csv"
	case ImportDataFormatParquet:
		return "parquet"
	case ImportDataFormatAuroraSnapshot:
		return "aurora-snapshot"
	default:
		return "unknown"
	}
}

func ConvertDataSource2Str(dataSource DataSource) string {
	switch dataSource {
	case ImportDataSourceLocal:
		return "local"
	case ImportDataSourceS3:
		return "s3"
	case ImportDataSourceGCS:
		return "gcs"
	case ImportDataSourceAzBlob:
		return "azblob"
	case ImportDataSourceS3Compatible:
		return "s3-compatible"
	case ImportDataSourceOSS:
		return "oss"
	default:
		return "unknown"
	}
}
