const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

async function populateSupplyArticles() {
  console.log('🔄 Заполняем поле article для существующих Supply записей...')

  try {
    // Найдем все Supply записи без артикула
    const suppliesWithoutArticle = await prisma.supply.findMany({
      where: {
        article: ""
      },
      select: {
        id: true,
        name: true,
        article: true,
        organizationId: true,
        type: true,
        createdAt: true,
      },
    })

    console.log(`📦 Найдено Supply записей без артикула: ${suppliesWithoutArticle.length}`)

    if (suppliesWithoutArticle.length === 0) {
      console.log('✅ Все Supply записи уже имеют артикулы')
      return
    }

    for (const supply of suppliesWithoutArticle) {
      // Генерируем уникальный артикул СФ на основе ID и времени создания
      const timestamp = supply.createdAt.toISOString().slice(0, 10).replace(/-/g, '')
      const shortId = supply.id.slice(-6).toUpperCase()
      const article = `СФ${timestamp}${shortId}`

      console.log(`📝 Обновляем Supply "${supply.name}" (${supply.id})`)
      console.log(`   Старый артикул: "${supply.article}"`)
      console.log(`   Новый артикул: "${article}"`)

      await prisma.supply.update({
        where: { id: supply.id },
        data: { article },
      })
    }

    console.log('✅ Все Supply записи обновлены с уникальными артикулами')

    // Проверяем результат
    const updatedSupplies = await prisma.supply.findMany({
      select: {
        id: true,
        name: true,
        article: true,
      },
      orderBy: { createdAt: 'desc' },
    })

    console.log('\n📋 Финальный список Supply с артикулами:')
    updatedSupplies.forEach((supply, index) => {
      console.log(`  ${index + 1}. ${supply.name} (Артикул: ${supply.article})`)
    })

  } catch (error) {
    console.error('❌ Ошибка при заполнении артикулов:', error)
  } finally {
    await prisma.$disconnect()
  }
}

populateSupplyArticles()