init frontend_management
This commit is contained in:
parent
af58550f7f
commit
62812f2090
23 changed files with 13174 additions and 0 deletions
74
frontend_management/plugins/mock-api.ts
Normal file
74
frontend_management/plugins/mock-api.ts
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
export default defineNuxtPlugin(() => {
|
||||
const config = useRuntimeConfig();
|
||||
|
||||
if (!config.public.useMockData) {
|
||||
return; // ใช้ API จริง
|
||||
}
|
||||
// Mock Data
|
||||
const mockUsers = [
|
||||
{ id: '1', email: 'instructor@test.com', fullName: 'อาจารย์ทดสอบ', role: 'INSTRUCTOR' },
|
||||
{ id: '2', email: 'admin@test.com', fullName: 'ผู้ดูแลระบบ', role: 'ADMIN' }
|
||||
];
|
||||
const mockCourses = [
|
||||
{
|
||||
id: '1',
|
||||
title: 'Python เบื้องต้น',
|
||||
description: 'เรียนรู้ Python จากพื้นฐาน',
|
||||
instructorId: '1',
|
||||
status: 'PUBLISHED',
|
||||
thumbnail: '/images/python.jpg'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
title: 'JavaScript สำหรับเว็บ',
|
||||
description: 'พัฒนาเว็บด้วย JavaScript',
|
||||
instructorId: '1',
|
||||
status: 'DRAFT',
|
||||
thumbnail: '/images/javascript.jpg'
|
||||
}
|
||||
];
|
||||
// Mock API Functions
|
||||
const mockApi = {
|
||||
// Auth
|
||||
login: async (email: string, password: string) => {
|
||||
await new Promise(resolve => setTimeout(resolve, 500)); // Simulate delay
|
||||
const user = mockUsers.find(u => u.email === email);
|
||||
if (user) {
|
||||
return {
|
||||
token: 'mock-jwt-token',
|
||||
user
|
||||
};
|
||||
}
|
||||
throw new Error('Invalid credentials');
|
||||
},
|
||||
// Courses
|
||||
getCourses: async () => {
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
return mockCourses;
|
||||
},
|
||||
getCourse: async (id: string) => {
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
return mockCourses.find(c => c.id === id);
|
||||
},
|
||||
createCourse: async (data: any) => {
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
const newCourse = {
|
||||
id: String(mockCourses.length + 1),
|
||||
...data,
|
||||
status: 'DRAFT'
|
||||
};
|
||||
mockCourses.push(newCourse);
|
||||
return newCourse;
|
||||
},
|
||||
// Users
|
||||
getUsers: async () => {
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
return mockUsers;
|
||||
}
|
||||
};
|
||||
return {
|
||||
provide: {
|
||||
mockApi
|
||||
}
|
||||
};
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue