first commit

This commit is contained in:
rachit1977
2026-06-14 10:03:34 +07:00
commit b55a575ac3
53 changed files with 9257 additions and 0 deletions
@@ -0,0 +1,26 @@
-- CreateEnum
CREATE TYPE "Role" AS ENUM ('SUPER_ADMIN', 'ADMIN', 'USER');
-- CreateEnum
CREATE TYPE "Status" AS ENUM ('ACTIVE', 'INACTIVE', 'SUSPENDED');
-- CreateTable
CREATE TABLE "User" (
"id" TEXT NOT NULL,
"email" TEXT NOT NULL,
"passwordHash" TEXT NOT NULL,
"fullName" TEXT NOT NULL,
"phone" TEXT,
"department" TEXT,
"position" TEXT,
"role" "Role" NOT NULL DEFAULT 'USER',
"status" "Status" NOT NULL DEFAULT 'ACTIVE',
"lastLoginAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
+35
View File
@@ -0,0 +1,35 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
passwordHash String
fullName String
phone String?
department String?
position String?
role Role @default(USER)
status Status @default(ACTIVE)
lastLoginAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum Role {
SUPER_ADMIN
ADMIN
USER
}
enum Status {
ACTIVE
INACTIVE
SUSPENDED
}
+34
View File
@@ -0,0 +1,34 @@
import { PrismaClient, Role, Status } from "@prisma/client";
import { hashPassword } from "../src/lib/password";
const prisma = new PrismaClient();
async function main() {
await prisma.user.upsert({
where: { email: "admin@4tech.co.th" },
update: {
fullName: "4TECH Super Admin",
role: Role.SUPER_ADMIN,
status: Status.ACTIVE
},
create: {
email: "admin@4tech.co.th",
passwordHash: await hashPassword("Admin@123456"),
fullName: "4TECH Super Admin",
department: "IT",
position: "System Administrator",
role: Role.SUPER_ADMIN,
status: Status.ACTIVE
}
});
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (error) => {
console.error(error);
await prisma.$disconnect();
process.exit(1);
});