// 模拟数据库结构数据
// 由于v0不支持mysql2，我们使用模拟数据来展示功能

// 模拟数据库列表
const mockDatabases = [
  { Database: "user_data_platform" },
  { Database: "traffic_analysis" },
  { Database: "content_library" },
  { Database: "wechat_accounts" },
  { Database: "device_management" },
]

// 模拟表结构数据
const mockDatabaseStructure: Record<string, Record<string, any[]>> = {
  user_data_platform: {
    users: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "username", Type: "varchar(50)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "email", Type: "varchar(100)", Null: "YES", Key: "UNI", Default: null, Extra: "" },
      { Field: "phone", Type: "varchar(20)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      {
        Field: "updated_at",
        Type: "datetime",
        Null: "YES",
        Key: "",
        Default: null,
        Extra: "on update CURRENT_TIMESTAMP",
      },
      { Field: "last_login", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "status", Type: "tinyint(1)", Null: "NO", Key: "", Default: "1", Extra: "" },
    ],
    user_tags: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "user_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "tag_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    tags: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "name", Type: "varchar(50)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "category", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "description", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    user_profiles: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "user_id", Type: "int(11)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "full_name", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "gender", Type: "enum('male','female','other')", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "birth_date", Type: "date", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "address", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "city", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "province", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "country", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "avatar_url", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "bio", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    user_activities: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "user_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "activity_type", Type: "varchar(50)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "activity_data", Type: "json", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      { Field: "ip_address", Type: "varchar(45)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "user_agent", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
  },
  traffic_analysis: {
    traffic_sources: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "name", Type: "varchar(100)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "source_type", Type: "varchar(50)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "description", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    traffic_records: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "source_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "user_id", Type: "int(11)", Null: "YES", Key: "MUL", Default: null, Extra: "" },
      { Field: "visit_time", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      { Field: "referrer", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "landing_page", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "exit_page", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "duration_seconds", Type: "int(11)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "device_type", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "os", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "browser", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    traffic_campaigns: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "name", Type: "varchar(100)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "source_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "start_date", Type: "date", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "end_date", Type: "date", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "budget", Type: "decimal(10,2)", Null: "YES", Key: "", Default: null, Extra: "" },
      {
        Field: "status",
        Type: "enum('active','paused','completed')",
        Null: "NO",
        Key: "",
        Default: "'active'",
        Extra: "",
      },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      {
        Field: "updated_at",
        Type: "datetime",
        Null: "YES",
        Key: "",
        Default: null,
        Extra: "on update CURRENT_TIMESTAMP",
      },
    ],
  },
  content_library: {
    content_items: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "title", Type: "varchar(255)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "content_type", Type: "varchar(50)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "content_data", Type: "json", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_by", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      {
        Field: "updated_at",
        Type: "datetime",
        Null: "YES",
        Key: "",
        Default: null,
        Extra: "on update CURRENT_TIMESTAMP",
      },
      {
        Field: "status",
        Type: "enum('draft','published','archived')",
        Null: "NO",
        Key: "",
        Default: "'draft'",
        Extra: "",
      },
    ],
    content_categories: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "name", Type: "varchar(100)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "parent_id", Type: "int(11)", Null: "YES", Key: "MUL", Default: null, Extra: "" },
      { Field: "description", Type: "text", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    content_item_categories: [
      { Field: "content_id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "" },
      { Field: "category_id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    content_tags: [
      { Field: "content_id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "" },
      { Field: "tag_id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
  },
  wechat_accounts: {
    accounts: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "wechat_id", Type: "varchar(100)", Null: "NO", Key: "UNI", Default: null, Extra: "" },
      { Field: "nickname", Type: "varchar(100)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "avatar_url", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "qr_code_url", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      {
        Field: "status",
        Type: "enum('active','inactive','blocked')",
        Null: "NO",
        Key: "",
        Default: "'active'",
        Extra: "",
      },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      { Field: "last_sync", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    friends: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "account_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "friend_wechat_id", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "nickname", Type: "varchar(100)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "remark", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "avatar_url", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      {
        Field: "gender",
        Type: "enum('male','female','unknown')",
        Null: "YES",
        Key: "",
        Default: "'unknown'",
        Extra: "",
      },
      { Field: "region", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "added_at", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "last_interaction", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    groups: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "account_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "group_name", Type: "varchar(100)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "group_avatar_url", Type: "varchar(255)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "member_count", Type: "int(11)", Null: "YES", Key: "", Default: "0", Extra: "" },
      { Field: "created_at", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "last_active", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    group_members: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "group_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "friend_id", Type: "int(11)", Null: "YES", Key: "MUL", Default: null, Extra: "" },
      { Field: "wechat_id", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "nickname", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "joined_at", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "is_admin", Type: "tinyint(1)", Null: "NO", Key: "", Default: "0", Extra: "" },
    ],
  },
  device_management: {
    devices: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "device_name", Type: "varchar(100)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "device_type", Type: "varchar(50)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "model", Type: "varchar(100)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "os_version", Type: "varchar(50)", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "imei", Type: "varchar(50)", Null: "YES", Key: "UNI", Default: null, Extra: "" },
      { Field: "serial_number", Type: "varchar(100)", Null: "YES", Key: "UNI", Default: null, Extra: "" },
      {
        Field: "status",
        Type: "enum('online','offline','maintenance')",
        Null: "NO",
        Key: "",
        Default: "'offline'",
        Extra: "",
      },
      { Field: "last_online", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
      { Field: "registered_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
    ],
    device_accounts: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "device_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "account_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "binding_time", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      { Field: "status", Type: "enum('active','inactive')", Null: "NO", Key: "", Default: "'active'", Extra: "" },
      { Field: "last_sync", Type: "datetime", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
    device_logs: [
      { Field: "id", Type: "int(11)", Null: "NO", Key: "PRI", Default: null, Extra: "auto_increment" },
      { Field: "device_id", Type: "int(11)", Null: "NO", Key: "MUL", Default: null, Extra: "" },
      { Field: "log_type", Type: "varchar(50)", Null: "NO", Key: "", Default: null, Extra: "" },
      { Field: "log_message", Type: "text", Null: "NO", Key: "", Default: null, Extra: "" },
      {
        Field: "log_level",
        Type: "enum('info','warning','error','critical')",
        Null: "NO",
        Key: "",
        Default: "'info'",
        Extra: "",
      },
      { Field: "created_at", Type: "datetime", Null: "NO", Key: "", Default: "CURRENT_TIMESTAMP", Extra: "" },
      { Field: "additional_data", Type: "json", Null: "YES", Key: "", Default: null, Extra: "" },
    ],
  },
}

// 获取所有数据库
export async function getDatabases() {
  return mockDatabases
}

// 获取指定数据库中的所有表
export async function getTables(database: string) {
  if (!mockDatabaseStructure[database]) {
    return []
  }

  return Object.keys(mockDatabaseStructure[database]).map((tableName) => {
    return { Tables_in_database: tableName }
  })
}

// 获取表结构
export async function getTableStructure(database: string, table: string) {
  if (!mockDatabaseStructure[database] || !mockDatabaseStructure[database][table]) {
    return []
  }

  return mockDatabaseStructure[database][table]
}

// 获取表的创建语句
export async function getTableCreateStatement(database: string, table: string) {
  // 这里只返回一个模拟的创建语句
  return [
    {
      Table: table,
      "Create Table": `CREATE TABLE ${table} (...)`,
    },
  ]
}

// 获取数据库完整结构信息
export async function getDatabaseStructure(database: string) {
  if (!mockDatabaseStructure[database]) {
    return {}
  }

  return mockDatabaseStructure[database]
}
