import { ValidatedStatus } from '../key-validator/declarations'
import { ProviderEnum } from './declarations'
import { validateModelProvider } from '@/service/common'

export const ConfigurableProviders = [ProviderEnum.azure_openai, ProviderEnum.replicate, ProviderEnum.huggingface_hub, ProviderEnum.xinference, ProviderEnum.openllm, ProviderEnum.localai]

export const validateModelProviderFn = async (providerName: ProviderEnum, v: any) => {
  let body, url

  if (ConfigurableProviders.includes(providerName)) {
    const { model_name, model_type, ...config } = v
    body = {
      model_name,
      model_type,
      config,
    }
    url = `/workspaces/current/model-providers/${providerName}/models/validate`
  }
  else {
    body = {
      config: v,
    }
    url = `/workspaces/current/model-providers/${providerName}/validate`
  }
  try {
    const res = await validateModelProvider({ url, body })
    if (res.result === 'success')
      return Promise.resolve({ status: ValidatedStatus.Success })
    else
      return Promise.resolve({ status: ValidatedStatus.Error, message: res.error })
  }
  catch (e: any) {
    return Promise.resolve({ status: ValidatedStatus.Error, message: e.message })
  }
}
