// Package constants add by blacknc <blacknc@163.com> at 2023/03/08 16:04:35
package constants

const (
	ExecSQLDefaultTimeoutMs  = 5000
	EndpointDefaultTimeoutMs = 30000
	ExecSQLMaxTimeoutMs      = 60000
	Chat2queryMaxTimeoutMs   = 120000

	ExecSQLDefaultRowlimit      = 50
	EndpointDefaultRowlimit     = 1000
	ExecSQLMaxRowlimit          = 2000
	ExeSQLBatchMaxRowlimit      = 1000
	EndpointDescGithubMaxLength = 2000

	// Endpoint api result type
	EndpointResTypeSQL       = "sql_endpoint"
	EndpointResTypeChat2Data = "chat2data_endpoint"

	SqlModeINVALID   = "INVALID"
	SqlModeReadOnly  = "READONLY"
	SqlModeReadWrite = "READWRITE"

	// apikey role type
	ApikeyRoleOwner                  = "api:dataapp:owner"
	ApikeyRoleReadonly               = "api:dataapp:readonly"
	Chat2QueryRoleAdmin              = "api:dataapp:eda:admin"
	Chat2QueryRoleDataContextManager = "api:dataapp:eda:data_context_manager"
	Chat2QuerySQLExecutorReadOnly    = "api:dataapp:eda:sql_executor_read_only"
	Chat2QuerySQLExecutorReadWrite   = "api:dataapp:eda:sql_executor_read_write"
	ApikeyDefaultRateLimitRpm        = 100

	DefaultAWSRegion = "us-west-2"

	NeedMeasure               = "need_measure"
	MeasureLabelKeyAppId1     = "appId"
	MeasureLabelKeyAppName2   = "appName"
	MeasureLabelKeyProjectId3 = "projectId"
	MeasureLabelKeyEndpoint4  = "endpoint"
	MeasureLabelKeyClusterId5 = "clusterId"

	EndpointPageParam     = "page"
	EndpointPageSizeParam = "page_size"

	ClusterCloudProviderAWS      = "aws"
	ClusterCloudProviderGCP      = "gcp"
	ClusterCloudProviderAliCloud = "alicloud"

	SqlArgsRegexp     = `\$\{([a-zA-Z_][\w\$]*?)\}`
	SqlCommentsRegexp = `/\*[^\+]{0,1}?[\s\S]*?\*/|--.*`

	RequestHeaderAuthTypeKey     = "x-auth-type"
	RequestHeaderAuthContentKey  = "x-auth-content"
	RequestHeaderIdentityInfoKey = "x-identity-info"
	RequestHeaderInnerAppId      = "x-inner-app-id"
	RequestHeaderInnerOrgId      = "x-inner-org-id"

	AIPowerSourceDataService = "dataservice"

	BatchRequestMaxDatasetSize = 100

	ApikeyDefaultRPM = 1000

	AdminApiDefaultPageSize = 100

	ExpWhitelistChat2QueryBetaAPI = "chat2query_enable_beta_api"

	ApikeyResourceRO = "/dataapi/dataapps/{app_id}/clusters/{cluster_id}/exec_endpoint/readonly"
	ApikeyResourceRW = "/dataapi/dataapps/{app_id}/clusters/{cluster_id}/exec_endpoint/readwrite"

	DataserviceEnableDedicatedExpName = "dataservice_enable_dedicated"
	Chat2QueryEnableDedicatedExpName  = "chat2query_enable_dedicated"

	RedactSalt = "7e8b7a3a7bd9c3e5f6a4b2c1d0e9f" // random salt to prevent hash collisions with real keys
)
