51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
const { PrismaClient } = require('@prisma/client')
|
|
const bcrypt = require('bcryptjs')
|
|
|
|
const prisma = new PrismaClient()
|
|
|
|
async function main() {
|
|
const passwordHash = await bcrypt.hash('admin123', 12)
|
|
|
|
const user = await prisma.user.upsert({
|
|
where: { email: 'pierre@secourit.fr' },
|
|
update: {},
|
|
create: {
|
|
email: 'pierre@secourit.fr',
|
|
name: 'Pierre',
|
|
passwordHash,
|
|
role: 'admin',
|
|
},
|
|
})
|
|
|
|
console.log('User created:', user.email)
|
|
|
|
const defaultProducts = [
|
|
{ key: 'maintenance-poste', label: 'Maintenance Poste (Windows/Mac)', costPrice: 1.40, sellPrice: 9.60, unit: 'mois', category: 'maintenance' },
|
|
{ key: 'maintenance-serveur', label: 'Maintenance Serveur', costPrice: 4.20, sellPrice: 25.20, unit: 'mois', category: 'maintenance' },
|
|
{ key: 'ksuite-business', label: 'KSuite Business / utilisateur', costPrice: 6.58, sellPrice: 15.80, unit: 'mois', category: 'ksuite' },
|
|
{ key: 'ksuite-standard', label: 'KSuite Standard / utilisateur', costPrice: 1.58, sellPrice: 0, unit: 'mois', category: 'ksuite' },
|
|
{ key: 'ksuite-entreprise', label: 'KSuite Entreprise / utilisateur', costPrice: 12.41, sellPrice: 0, unit: 'mois', category: 'ksuite' },
|
|
{ key: 'intervention-horaire', label: 'Intervention (Taux horaire)', costPrice: 0, sellPrice: 50, unit: 'heure', category: 'hourly' },
|
|
{ key: 'deplacement-km', label: 'Déplacement (par km)', costPrice: 0.30, sellPrice: 0.50, unit: 'km', category: 'travel' },
|
|
]
|
|
|
|
for (const product of defaultProducts) {
|
|
await prisma.productCost.upsert({
|
|
where: { key: product.key },
|
|
update: product,
|
|
create: product,
|
|
})
|
|
}
|
|
|
|
console.log('Default products created')
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e)
|
|
process.exit(1)
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect()
|
|
})
|