74 lines
No EOL
2.1 KiB
TypeScript
74 lines
No EOL
2.1 KiB
TypeScript
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
|
|
}
|
|
};
|
|
}); |