first commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
const prisma = new PrismaClient()
|
||||
|
||||
type LocalizedString = { tr: string; en: string }
|
||||
|
||||
type JsonMenuItem = {
|
||||
id: string
|
||||
emoji?: string
|
||||
image?: string
|
||||
name: LocalizedString
|
||||
description?: LocalizedString
|
||||
price?: number
|
||||
highlight?: boolean
|
||||
}
|
||||
|
||||
type JsonCategory = {
|
||||
id: string
|
||||
emoji: string
|
||||
label: LocalizedString
|
||||
items: JsonMenuItem[]
|
||||
}
|
||||
|
||||
async function migrate() {
|
||||
console.log('Starting migration...')
|
||||
|
||||
const filePath = path.join(process.cwd(), 'data', 'menu.json')
|
||||
const fileContent = fs.readFileSync(filePath, 'utf-8')
|
||||
const categories: JsonCategory[] = JSON.parse(fileContent)
|
||||
|
||||
// Clear existing data (if any)
|
||||
await prisma.menuItem.deleteMany({})
|
||||
await prisma.category.deleteMany({})
|
||||
console.log('Cleared existing data')
|
||||
|
||||
for (let cIndex = 0; cIndex < categories.length; cIndex++) {
|
||||
const cat = categories[cIndex]
|
||||
|
||||
await prisma.category.create({
|
||||
data: {
|
||||
id: cat.id,
|
||||
emoji: cat.emoji,
|
||||
labelTr: cat.label.tr,
|
||||
labelEn: cat.label.en,
|
||||
order: cIndex,
|
||||
items: {
|
||||
create: cat.items.map((item, iIndex) => ({
|
||||
id: item.id,
|
||||
emoji: item.emoji || null,
|
||||
image: item.image || null,
|
||||
nameTr: item.name.tr,
|
||||
nameEn: item.name.en,
|
||||
descriptionTr: item.description?.tr || null,
|
||||
descriptionEn: item.description?.en || null,
|
||||
price: item.price !== undefined ? item.price : null,
|
||||
highlight: item.highlight || false,
|
||||
order: iIndex,
|
||||
}))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
console.log(`Migrated category: ${cat.label.tr}`)
|
||||
}
|
||||
|
||||
console.log('Migration complete!')
|
||||
}
|
||||
|
||||
migrate()
|
||||
.catch((e) => {
|
||||
console.error(e)
|
||||
process.exit(1)
|
||||
})
|
||||
.finally(async () => {
|
||||
await prisma.$disconnect()
|
||||
})
|
||||
Reference in New Issue
Block a user