// scripts/migrate-embeddings.ts
const { PrismaClient } = require('../prisma/client-generated')

const prisma = new PrismaClient({
  datasources: {
    db: {
      url: process.env.DATABASE_URL || "file:../prisma/dev.db"
    }
  }
})

async function main() {
  console.log("Fetching notes with embeddings...")
  const notes = await prisma.note.findMany({
    where: {
      embedding: { not: null }
    },
    select: {
      id: true,
      embedding: true
    }
  })

  console.log(`Found ${notes.length} notes with an embedding.`)
  
  if (notes.length === 0) {
    console.log("Nothing to migrate.")
    return
  }

  let count = 0
  for (const note of notes) {
    if (!note.embedding) continue

    await prisma.noteEmbedding.upsert({
      where: { noteId: note.id },
      create: {
        noteId: note.id,
        embedding: note.embedding
      },
      update: {
        embedding: note.embedding
      }
    })
    count++
    if (count % 10 === 0) {
      console.log(`Migrated ${count}/${notes.length}...`)
    }
  }

  console.log(`✅ Successfully migrated ${count} note embeddings to the NoteEmbedding table.`)
}

main()
  .catch((e) => {
    console.error("Migration failed:", e)
    process.exit(1)
  })
  .finally(async () => {
    await prisma.$disconnect()
  })
