|
@@ -1,17 +1,7 @@
|
|
import { Injectable } from '@angular/core';
|
|
import { Injectable } from '@angular/core';
|
|
import Parse from 'parse';
|
|
import Parse from 'parse';
|
|
import { CloudQuery } from 'src/lib/ncloud';
|
|
import { CloudQuery } from 'src/lib/ncloud';
|
|
-
|
|
|
|
-// 添加自定义教师接口
|
|
|
|
-export interface CustomTeacher {
|
|
|
|
- objectId?: string;
|
|
|
|
- userId: string;
|
|
|
|
- name: string;
|
|
|
|
- description: string;
|
|
|
|
- systemPrompt: string;
|
|
|
|
- createdAt?: Date;
|
|
|
|
- updatedAt?: Date;
|
|
|
|
-}
|
|
|
|
|
|
+import { CustomTeacher } from '../interfaces/custom-teacher.interface';
|
|
|
|
|
|
// 添加 ChatSession 相关接口
|
|
// 添加 ChatSession 相关接口
|
|
export interface ChatSessionData {
|
|
export interface ChatSessionData {
|
|
@@ -24,6 +14,25 @@ export interface ChatSessionData {
|
|
updatedAt?: Date;
|
|
updatedAt?: Date;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// 创建和更新时使用的接口
|
|
|
|
+export interface CreateTeacherData {
|
|
|
|
+ userId: string;
|
|
|
|
+ name: string;
|
|
|
|
+ description: string;
|
|
|
|
+ systemPrompt: string;
|
|
|
|
+ subject?: string; // 添加科目字段
|
|
|
|
+ createdAt: Date;
|
|
|
|
+ updatedAt: Date;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export interface UpdateTeacherData {
|
|
|
|
+ name: string;
|
|
|
|
+ description: string;
|
|
|
|
+ systemPrompt: string;
|
|
|
|
+ subject?: string; // 添加科目字段
|
|
|
|
+ updatedAt: Date;
|
|
|
|
+}
|
|
|
|
+
|
|
@Injectable({
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
providedIn: 'root'
|
|
})
|
|
})
|
|
@@ -120,6 +129,7 @@ export class DatabaseService {
|
|
name: obj.get('name'),
|
|
name: obj.get('name'),
|
|
description: obj.get('description'),
|
|
description: obj.get('description'),
|
|
systemPrompt: obj.get('systemPrompt'),
|
|
systemPrompt: obj.get('systemPrompt'),
|
|
|
|
+ subject: obj.get('subject'),
|
|
createdAt: obj.get('createdAt'),
|
|
createdAt: obj.get('createdAt'),
|
|
updatedAt: obj.get('updatedAt')
|
|
updatedAt: obj.get('updatedAt')
|
|
}));
|
|
}));
|
|
@@ -130,13 +140,13 @@ export class DatabaseService {
|
|
}
|
|
}
|
|
|
|
|
|
// 创建自定义教师
|
|
// 创建自定义教师
|
|
- async createCustomTeacher(teacherData: CustomTeacher): Promise<CustomTeacher> {
|
|
|
|
|
|
+ async createCustomTeacher(teacherData: Omit<CustomTeacher, 'objectId'>): Promise<CustomTeacher> {
|
|
try {
|
|
try {
|
|
const CustomTeacher = Parse.Object.extend('CustomTeacher');
|
|
const CustomTeacher = Parse.Object.extend('CustomTeacher');
|
|
const teacher = new CustomTeacher();
|
|
const teacher = new CustomTeacher();
|
|
|
|
|
|
// 使用类型断言确保字段名是字符串
|
|
// 使用类型断言确保字段名是字符串
|
|
- const fields = ['userId', 'name', 'description', 'systemPrompt'] as const;
|
|
|
|
|
|
+ const fields = ['userId', 'name', 'description', 'systemPrompt', 'subject', 'createdAt', 'updatedAt'] as const;
|
|
fields.forEach(field => {
|
|
fields.forEach(field => {
|
|
if (field in teacherData) {
|
|
if (field in teacherData) {
|
|
teacher.set(field as string, teacherData[field]);
|
|
teacher.set(field as string, teacherData[field]);
|
|
@@ -150,6 +160,7 @@ export class DatabaseService {
|
|
name: result.get('name'),
|
|
name: result.get('name'),
|
|
description: result.get('description'),
|
|
description: result.get('description'),
|
|
systemPrompt: result.get('systemPrompt'),
|
|
systemPrompt: result.get('systemPrompt'),
|
|
|
|
+ subject: result.get('subject'),
|
|
createdAt: result.get('createdAt'),
|
|
createdAt: result.get('createdAt'),
|
|
updatedAt: result.get('updatedAt')
|
|
updatedAt: result.get('updatedAt')
|
|
};
|
|
};
|
|
@@ -160,40 +171,40 @@ export class DatabaseService {
|
|
}
|
|
}
|
|
|
|
|
|
// 更新自定义教师
|
|
// 更新自定义教师
|
|
- async updateCustomTeacher(objectId: string, teacherData: Partial<CustomTeacher>): Promise<CustomTeacher> {
|
|
|
|
|
|
+ async updateCustomTeacher(objectId: string, data: Partial<CustomTeacher>): Promise<void> {
|
|
try {
|
|
try {
|
|
const query = new CloudQuery('CustomTeacher');
|
|
const query = new CloudQuery('CustomTeacher');
|
|
const teacher = await query.get(objectId);
|
|
const teacher = await query.get(objectId);
|
|
|
|
|
|
|
|
+ if (!teacher) {
|
|
|
|
+ throw new Error('Teacher not found');
|
|
|
|
+ }
|
|
|
|
+
|
|
// 使用类型断言确保字段名是字符串
|
|
// 使用类型断言确保字段名是字符串
|
|
- const updateableFields = ['name', 'description', 'systemPrompt'] as const;
|
|
|
|
|
|
+ const updateableFields = ['name', 'description', 'systemPrompt', 'subject'] as const;
|
|
updateableFields.forEach(field => {
|
|
updateableFields.forEach(field => {
|
|
- if (field in teacherData) {
|
|
|
|
- teacher.set(field as string, teacherData[field]);
|
|
|
|
|
|
+ if (field in data) {
|
|
|
|
+ teacher.set(field, data[field]);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- const result = await teacher.save();
|
|
|
|
- return {
|
|
|
|
- objectId: result.id,
|
|
|
|
- userId: result.get('userId'),
|
|
|
|
- name: result.get('name'),
|
|
|
|
- description: result.get('description'),
|
|
|
|
- systemPrompt: result.get('systemPrompt'),
|
|
|
|
- createdAt: result.get('createdAt'),
|
|
|
|
- updatedAt: result.get('updatedAt')
|
|
|
|
- };
|
|
|
|
|
|
+ await teacher.save();
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error('Error updating custom teacher:', error);
|
|
console.error('Error updating custom teacher:', error);
|
|
- throw error;
|
|
|
|
|
|
+ throw new Error(error instanceof Error ? error.message : '更新失败');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// 删除自定义教师
|
|
// 删除自定义教师
|
|
async deleteCustomTeacher(objectId: string): Promise<void> {
|
|
async deleteCustomTeacher(objectId: string): Promise<void> {
|
|
try {
|
|
try {
|
|
- const query = new CloudQuery('CustomTeacher');
|
|
|
|
- const teacher = await query.get(objectId);
|
|
|
|
|
|
+ // 使用 Parse.Object.extend 创建类
|
|
|
|
+ const CustomTeacherClass = Parse.Object.extend('CustomTeacher');
|
|
|
|
+ // 创建一个新的对象实例,并设置 objectId
|
|
|
|
+ const teacher = new CustomTeacherClass();
|
|
|
|
+ teacher.id = objectId; // 设置要删除的对象的 id
|
|
|
|
+
|
|
|
|
+ // 调用 destroy 方法删除对象
|
|
await teacher.destroy();
|
|
await teacher.destroy();
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error('Error deleting custom teacher:', error);
|
|
console.error('Error deleting custom teacher:', error);
|