feat(data) seed default admin
continuous-integration/drone/tag Build is passing
Details
continuous-integration/drone/tag Build is passing
Details
parent
1641c81a53
commit
1ac5aca57d
|
@ -6,11 +6,11 @@ JWT_REFRESH_EXPIRES="7d"
|
||||||
ENC_KEY="921c83f3b90c92dca4ba9b947f99b4c9"
|
ENC_KEY="921c83f3b90c92dca4ba9b947f99b4c9"
|
||||||
IV="a671a96159e97a4f"
|
IV="a671a96159e97a4f"
|
||||||
|
|
||||||
DEFAULT_DB_HOST="localhost"
|
DEFAULT_DB_HOST="172.10.10.2"
|
||||||
DEFAULT_DB_PORT="5432"
|
DEFAULT_DB_PORT="5411"
|
||||||
DEFAULT_DB_USER="postgres"
|
DEFAULT_DB_USER="root"
|
||||||
DEFAULT_DB_PASS="secret"
|
DEFAULT_DB_PASS="password"
|
||||||
DEFAULT_DB_NAME="skyworld_pos"
|
DEFAULT_DB_NAME="pos"
|
||||||
|
|
||||||
ELASTIC_APM_ACTIVATE=true
|
ELASTIC_APM_ACTIVATE=true
|
||||||
ELASTIC_APM_SERVICE_NAME="Skyworld POS"
|
ELASTIC_APM_SERVICE_NAME="Skyworld POS"
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
||||||
"test:e2e": "jest --config ./test/jest-e2e.json",
|
"test:e2e": "jest --config ./test/jest-e2e.json",
|
||||||
"orm": "ts-node --project ./tsconfig.json -r tsconfig-paths/register ./node_modules/typeorm/cli.js -d ./src/database/ormconfig.ts",
|
"orm": "ts-node --project ./tsconfig.json -r tsconfig-paths/register ./node_modules/typeorm/cli.js -d ./src/database/ormconfig.ts",
|
||||||
"migration:execute": "yarn run orm migration:run"
|
"migration:execute": "yarn run orm migration:run",
|
||||||
|
"seed:config": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-ormconfig.ts config",
|
||||||
|
"seed:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-ormconfig.ts seed"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nestjs/common": "^10.0.0",
|
"@nestjs/common": "^10.0.0",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
export const SALT_OR_ROUNDS = +process.env.SALT_OR_ROUNDS ?? 10;
|
||||||
export enum STATUS {
|
export enum STATUS {
|
||||||
ACTIVE = 'active',
|
ACTIVE = 'active',
|
||||||
CANCEL = 'cancel',
|
CANCEL = 'cancel',
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { UserRole } from 'src/modules/user-related/user/constants';
|
||||||
|
|
||||||
|
export const default_admin = {
|
||||||
|
id: 'c59f811e-873c-4472-bd58-21c111902114',
|
||||||
|
name: 'superadmin',
|
||||||
|
username: 'superadmin',
|
||||||
|
password: 'Eigen123!',
|
||||||
|
role: UserRole.SUPERADMIN,
|
||||||
|
};
|
|
@ -1,9 +1,15 @@
|
||||||
import { MigrationInterface, QueryRunner } from 'typeorm';
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
export class User1717401535006 implements MigrationInterface {
|
export class User1717470361050 implements MigrationInterface {
|
||||||
name = 'User1717401535006';
|
name = 'User1717470361050';
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE TYPE "public"."users_status_enum" AS ENUM('active', 'cancel', 'confirmed', 'draft', 'expired', 'inactive', 'pending', 'refunded', 'rejected', 'settled', 'waiting')`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE TYPE "public"."users_role_enum" AS ENUM('superadmin', 'staff', 'tenant')`,
|
||||||
|
);
|
||||||
await queryRunner.query(
|
await queryRunner.query(
|
||||||
`CREATE TABLE "users" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "creator_id" character varying(36), "creator_name" character varying(125), "editor_id" character varying(36), "editor_name" character varying(125), "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "status" "public"."users_status_enum" NOT NULL DEFAULT 'draft', "refresh_token" character varying, "name" character varying, "username" character varying, "password" character varying, "email" character varying, "role" "public"."users_role_enum" NOT NULL DEFAULT 'staff', "user_privilege_id" uuid, CONSTRAINT "PK_a3ffb1c0c8416b9fc6f907b7433" PRIMARY KEY ("id"))`,
|
`CREATE TABLE "users" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "creator_id" character varying(36), "creator_name" character varying(125), "editor_id" character varying(36), "editor_name" character varying(125), "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "status" "public"."users_status_enum" NOT NULL DEFAULT 'draft', "refresh_token" character varying, "name" character varying, "username" character varying, "password" character varying, "email" character varying, "role" "public"."users_role_enum" NOT NULL DEFAULT 'staff', "user_privilege_id" uuid, CONSTRAINT "PK_a3ffb1c0c8416b9fc6f907b7433" PRIMARY KEY ("id"))`,
|
||||||
);
|
);
|
||||||
|
@ -17,5 +23,7 @@ export class User1717401535006 implements MigrationInterface {
|
||||||
`ALTER TABLE "users" DROP CONSTRAINT "FK_a575428fc6718f1394eff0d8443"`,
|
`ALTER TABLE "users" DROP CONSTRAINT "FK_a575428fc6718f1394eff0d8443"`,
|
||||||
);
|
);
|
||||||
await queryRunner.query(`DROP TABLE "users"`);
|
await queryRunner.query(`DROP TABLE "users"`);
|
||||||
|
await queryRunner.query(`DROP TYPE "public"."users_role_enum"`);
|
||||||
|
await queryRunner.query(`DROP TYPE "public"."users_status_enum"`);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
module.exports = {
|
||||||
|
type: 'postgres',
|
||||||
|
host: process.env.DEFAULT_DB_HOST,
|
||||||
|
port: process.env.DEFAULT_DB_PORT,
|
||||||
|
username: process.env.DEFAULT_DB_USER,
|
||||||
|
password: process.env.DEFAULT_DB_PASS,
|
||||||
|
database: process.env.DEFAULT_DB_NAME,
|
||||||
|
logging: false,
|
||||||
|
synchronize: false,
|
||||||
|
entities: ['src/modules/**/**/data/models/*.ts'],
|
||||||
|
seeds: ['src/database/seeds/**/*{seed.ts,seed.js}'],
|
||||||
|
factories: ['src/database/factories/**/*{.ts,.js}'],
|
||||||
|
};
|
|
@ -0,0 +1,30 @@
|
||||||
|
import { hashPassword } from 'src/core/helpers/password/bcrypt.helpers';
|
||||||
|
import { SALT_OR_ROUNDS } from 'src/core/strings/constants/base.constants';
|
||||||
|
import { default_admin } from 'src/core/strings/constants/default-data.constants';
|
||||||
|
import { UserModel } from 'src/modules/user-related/user/data/models/user.model';
|
||||||
|
import { Connection } from 'typeorm';
|
||||||
|
import { Factory, Seeder } from 'typeorm-seeding';
|
||||||
|
|
||||||
|
export class SeedDefaultAdmin implements Seeder {
|
||||||
|
public async run(factory: Factory, connection: Connection): Promise<void> {
|
||||||
|
try {
|
||||||
|
const data = new UserModel();
|
||||||
|
Object.assign(data, {
|
||||||
|
...default_admin,
|
||||||
|
password: await hashPassword(default_admin.password, SALT_OR_ROUNDS),
|
||||||
|
created_at: new Date().getTime(),
|
||||||
|
updated_at: new Date().getTime(),
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(data, 'dsa');
|
||||||
|
await connection
|
||||||
|
.createQueryBuilder()
|
||||||
|
.insert()
|
||||||
|
.into(UserModel)
|
||||||
|
.values([data])
|
||||||
|
.execute();
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error, 'sdada');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue