From baf8e2ac817162c9f1083f4a4038a444766414bb Mon Sep 17 00:00:00 2001 From: Santosh Tharu Date: Fri, 26 Jul 2024 09:50:19 +0545 Subject: [PATCH] added seeder script --- package.json | 5 +++-- scripts/seed.js | 21 +++++++++++++++++++++ scripts/seeds/admin-user.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 scripts/seed.js create mode 100644 scripts/seeds/admin-user.js diff --git a/package.json b/package.json index d002388f8..d77d0d6a1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "build": "npm-run-all check-env build-db check-db build-tracker build-geo build-app", "start": "next start", "build-docker": "npm-run-all build-db build-tracker build-geo build-app", - "start-docker": "npm-run-all check-db update-tracker start-server", + "start-docker": "npm-run-all check-db update-tracker seed start-server", "start-env": "node scripts/start-env.js", "start-server": "node server.js", "build-app": "next build", @@ -45,7 +45,8 @@ "postbuild": "node scripts/postbuild.js", "test": "jest", "cypress-open": "cypress open cypress run", - "cypress-run": "cypress run cypress run" + "cypress-run": "cypress run cypress run", + "seed": "node scripts/seed.js" }, "lint-staged": { "**/*.{js,jsx,ts,tsx}": [ diff --git a/scripts/seed.js b/scripts/seed.js new file mode 100644 index 000000000..bb87c233d --- /dev/null +++ b/scripts/seed.js @@ -0,0 +1,21 @@ +/* eslint-disable no-console */ +require('dotenv').config(); +const { client: prismaClient } = require('@umami/prisma-client'); + +const { seedAdminUser } = require('./seeds/admin-user'); + +async function main() { + // seed admin user + await seedAdminUser(); + + console.log('Seeding complete.'); +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prismaClient.$disconnect(); + }); diff --git a/scripts/seeds/admin-user.js b/scripts/seeds/admin-user.js new file mode 100644 index 000000000..1ad653ea0 --- /dev/null +++ b/scripts/seeds/admin-user.js @@ -0,0 +1,32 @@ +const { hashPassword } = require('next-basics'); + +/* eslint-disable no-console */ +const { client: prismaClient } = require('@umami/prisma-client'); + +async function seedAdminUser() { + const adminUserId = process.env.ADMIN_USER_ID; + const adminUsername = process.env.ADMIN_USERNAME; + const adminPassword = process.env.ADMIN_PASSWORD; + + if (!adminUserId || !adminUsername || !adminPassword) { + console.error('Admin credentials are not set.'); + process.exit(1); + } + + await prismaClient.user.upsert({ + where: { username: adminUsername }, + update: {}, + create: { + id: adminUserId, + username: adminUsername, + password: hashPassword(adminPassword), + role: 'admin', + }, + }); + + console.log('Admin user seeded successfully.'); +} + +module.exports = { + seedAdminUser, +};