update phone schema

This commit is contained in:
JakkrapartXD 2026-01-09 10:59:26 +00:00
parent 1a7473362b
commit 646a10f45c
3 changed files with 40 additions and 27 deletions

View file

@ -32,6 +32,7 @@ model User {
username String @unique @db.VarChar(50)
email String @unique @db.VarChar(255)
password String @db.VarChar(255)
phone String? @unique @db.VarChar(20)
role_id Int
email_verified_at DateTime?
created_at DateTime @default(now())

View file

@ -7,32 +7,32 @@ async function main() {
console.log('🌱 Starting database seeding...');
// Clear existing data (in development only)
// if (process.env.NODE_ENV === 'development') {
// console.log('🗑️ Clearing existing data...');
// await prisma.quizAttempt.deleteMany();
// await prisma.choice.deleteMany();
// await prisma.question.deleteMany();
// await prisma.quiz.deleteMany();
// await prisma.lessonProgress.deleteMany();
// await prisma.lessonAttachment.deleteMany();
// await prisma.lesson.deleteMany();
// await prisma.chapter.deleteMany();
// await prisma.announcementAttachment.deleteMany();
// await prisma.announcement.deleteMany();
// await prisma.certificate.deleteMany();
// await prisma.enrollment.deleteMany();
// await prisma.courseInstructor.deleteMany();
// await prisma.course.deleteMany();
// await prisma.category.deleteMany();
// await prisma.payment.deleteMany();
// await prisma.orderItem.deleteMany();
// await prisma.order.deleteMany();
// await prisma.withdrawalRequest.deleteMany();
// await prisma.instructorBalance.deleteMany();
// await prisma.userProfile.deleteMany();
// await prisma.user.deleteMany();
// await prisma.role.deleteMany();
// }
if (process.env.NODE_ENV === 'development') {
console.log('🗑️ Clearing existing data...');
await prisma.quizAttempt.deleteMany();
await prisma.choice.deleteMany();
await prisma.question.deleteMany();
await prisma.quiz.deleteMany();
await prisma.lessonProgress.deleteMany();
await prisma.lessonAttachment.deleteMany();
await prisma.lesson.deleteMany();
await prisma.chapter.deleteMany();
await prisma.announcementAttachment.deleteMany();
await prisma.announcement.deleteMany();
await prisma.certificate.deleteMany();
await prisma.enrollment.deleteMany();
await prisma.courseInstructor.deleteMany();
await prisma.course.deleteMany();
await prisma.category.deleteMany();
await prisma.payment.deleteMany();
await prisma.orderItem.deleteMany();
await prisma.order.deleteMany();
await prisma.withdrawalRequest.deleteMany();
await prisma.instructorBalance.deleteMany();
await prisma.userProfile.deleteMany();
await prisma.user.deleteMany();
await prisma.role.deleteMany();
}
// Seed Roles
console.log('👥 Seeding roles...');
@ -79,6 +79,7 @@ async function main() {
password: hashedPassword,
role_id: roles[0].id,
email_verified_at: new Date(),
phone: '0812345678',
profile: {
create: {
prefix: { th: 'นาย', en: 'Mr.' },
@ -98,6 +99,7 @@ async function main() {
password: hashedPassword,
role_id: roles[1].id,
email_verified_at: new Date(),
phone: '0812345679',
profile: {
create: {
prefix: { th: 'นาย', en: 'Mr.' },
@ -117,6 +119,7 @@ async function main() {
password: hashedPassword,
role_id: roles[2].id,
email_verified_at: new Date(),
phone: '0812345680',
profile: {
create: {
prefix: { th: 'นางสาว', en: 'Ms.' },

View file

@ -58,7 +58,7 @@ export class AuthService {
* User registration
*/
async register(data: RegisterRequest): Promise<RegisterResponse> {
const { username, email, password, first_name, last_name, prefix } = data;
const { username, email, password, first_name, last_name, prefix, phone } = data;
// Check if username already exists
const existingUsername = await prisma.user.findUnique({
@ -78,6 +78,15 @@ export class AuthService {
throw new ValidationError('Email already exists');
}
// Check if phone number already exists
const existingPhone = await prisma.user.findUnique({
where: { phone }
});
if (existingPhone) {
throw new ValidationError('Phone number already exists');
}
// Get STUDENT role
const studentRole = await prisma.role.findUnique({
where: { code: 'STUDENT' }