- Ajout de la table de relation 1-1 NoteEmbedding pour alléger Model Note - Refactor complet des actions IA sémantique et Memory Echo pour utiliser la jointure - Migration propre des 85 embeddings locaux existants - Ajout PRAGMA journal_mode=WAL pour la concurrence au sein de lib/prisma - Ajout npm run db:switch pour configuration auto SQLite / PostgreSQL - Fix du compilateur Turbopack et Next-PWA
62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
// 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()
|
|
})
|