chore: add danak services and admin login

This commit is contained in:
mahyargdz
2025-01-25 16:52:54 +03:30
parent 8af72264e7
commit 6da4b5114c
35 changed files with 505 additions and 34 deletions
+25
View File
@@ -0,0 +1,25 @@
import { join } from "path";
import { config } from "dotenv";
import { DataSource } from "typeorm";
config();
const { DB_HOST, DB_NAME, DB_PASS, DB_PORT, DB_USER, NODE_ENV } = process.env;
const IS_PROD = NODE_ENV === "production";
const PATH = IS_PROD ? "dist" : "src";
export const connectionSource = new DataSource({
type: "postgres",
host: DB_HOST as string,
port: parseInt(DB_PORT as string),
username: DB_USER,
password: DB_PASS,
database: DB_NAME,
logging: true,
entities: [join(process.cwd(), PATH, "modules/**/*.entity{.ts,.js}")],
migrations: [join(process.cwd(), "database/migrations/*{.ts,.js}")],
synchronize: false,
migrationsTableName: "typeorm_migrations",
migrationsRun: false,
});
console.log(join(process.cwd(), PATH, "modules/**/*.entity{.ts,.js}"));
+19
View File
@@ -0,0 +1,19 @@
import { Logger } from "@nestjs/common";
import { connectionSource } from "./connection";
import { seedAdmin } from "./seeders/admin.seeder";
import { seedRole } from "./seeders/role.seeder";
const logger = new Logger("Seeder");
export const runSeeder = async () => {
await connectionSource.initialize();
logger.log("start seeding database");
await seedRole(connectionSource, logger);
await seedAdmin(connectionSource, logger);
logger.log("seeding completed");
process.exit(0);
};
runSeeder();
+33
View File
@@ -0,0 +1,33 @@
import { Logger } from "@nestjs/common";
import { DataSource, DeepPartial } from "typeorm";
import { Role } from "../../src/modules/users/entities/role.entity";
import { User } from "../../src/modules/users/entities/user.entity";
import { RoleEnum } from "../../src/modules/users/enums/role.enum";
const defaultAdmin: DeepPartial<User> = {
email: "admin-dsc@gmail.com",
phone: "09922320740",
userName: "admin-default",
password: "admin123",
firstName: "DSC",
lastName: "Admin",
nationalCode: "1234567890",
};
export const seedAdmin = async (dataSource: DataSource, logger: Logger) => {
try {
const roleRepo = dataSource.getRepository(Role);
const userRepo = dataSource.getRepository(User);
const adminRole = await roleRepo.findOneBy({ name: RoleEnum.ADMIN });
if (!adminRole) throw new Error("Role not found");
const admin = userRepo.create({ ...defaultAdmin, role: adminRole });
await userRepo.save(admin);
logger.log("admin created successfully");
} catch (error) {
logger.error("Error in seeding admin", error);
process.exit(1);
}
};
+19 -1
View File
@@ -1,3 +1,21 @@
import { Logger } from "@nestjs/common";
import { DataSource } from "typeorm";
import { Role } from "../../src/modules/users/entities/role.entity";
import { RoleEnum } from "../../src/modules/users/enums/role.enum";
export const roles = [{ name: RoleEnum.SUPER_ADMIN }, { name: RoleEnum.ADMIN }, { name: RoleEnum.VISITOR }, { name: RoleEnum.USER }];
const roles = [{ name: RoleEnum.SUPER_ADMIN }, { name: RoleEnum.ADMIN }, { name: RoleEnum.VISITOR }, { name: RoleEnum.USER }];
export const seedRole = async (dataSource: DataSource, logger: Logger) => {
try {
const roleRepo = dataSource.getRepository(Role);
for (const role of roles) {
const newRole = roleRepo.create(role);
await roleRepo.save(newRole);
}
logger.log("Role seeded successfully");
} catch (error) {
logger.error("Error in seeding role", error);
process.exit(1);
}
};