elearning/frontend_management/plugins/mock-api.ts

74 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-01-12 16:49:58 +07:00
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
}
};
});