| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- import { CloudObject } from '../../lib/ncloud';
- import * as Parse from 'parse';
- export class Task extends CloudObject {
- protected override parseObject: Parse.Object;
- override id: string | null = null;
- title: string = '';
- content: string = '';
- startTime: string = new Date().toISOString();
- endTime: string = new Date().toISOString();
- completed: boolean = false;
- userId: string | null = null;
- constructor() {
- super('Task');
- this.parseObject = new Parse.Object('Task');
- }
- // 创建新任务
- static async create(data: any): Promise<Task> {
- try {
- const currentUser = Parse.User.current();
- if (!currentUser) {
- throw new Error('No user logged in');
- }
- const task = new Task();
-
- // 设置ACL
- const acl = new Parse.ACL();
- acl.setPublicReadAccess(false);
- acl.setPublicWriteAccess(false);
- acl.setReadAccess(currentUser.id, true);
- acl.setWriteAccess(currentUser.id, true);
- task.parseObject.setACL(acl);
- // 设置任务数据
- task.parseObject.set('title', data.title);
- task.parseObject.set('content', data.content || '');
- task.parseObject.set('startTime', data.startTime || new Date().toISOString());
- task.parseObject.set('endTime', data.endTime || new Date().toISOString());
- task.parseObject.set('completed', data.completed || false);
- task.parseObject.set('userId', currentUser.id);
- task.parseObject.set('user', currentUser);
- // 保存到数据库
- await task.parseObject.save();
-
- // 设置本地数据
- task.id = task.parseObject.id;
- task.title = data.title;
- task.content = data.content || '';
- task.startTime = data.startTime || new Date().toISOString();
- task.endTime = data.endTime || new Date().toISOString();
- task.completed = data.completed || false;
- task.userId = currentUser.id;
- return task;
- } catch (error) {
- console.error('Failed to create task:', error);
- throw error;
- }
- }
- // 获取用户的所有任务
- static async getUserTasks(userId: string): Promise<Task[]> {
- try {
- if (!userId) {
- throw new Error('userId is required');
- }
-
- const query = new Parse.Query('Task');
- query.equalTo('userId', userId);
- query.descending('createdAt');
-
- const results = await query.find();
- return results.map(result => {
- const task = new Task();
- task.parseObject = result;
- task.id = result.id;
- const data = result.toJSON();
- task.title = data['title'];
- task.content = data['content'];
- task.startTime = data['startTime'];
- task.endTime = data['endTime'];
- task.completed = data['completed'];
- task.userId = data['userId'];
- return task;
- });
- } catch (error) {
- console.error('Failed to get user tasks:', error);
- throw error;
- }
- }
- // 保存任务更新
- async saveTask(): Promise<void> {
- try {
- if (!this.id) {
- throw new Error('Task ID is required for update');
- }
- // 更新所有属性到 parseObject
- this.parseObject.set('title', this.title);
- this.parseObject.set('content', this.content);
- this.parseObject.set('startTime', this.startTime);
- this.parseObject.set('endTime', this.endTime);
- this.parseObject.set('completed', this.completed);
-
- await this.parseObject.save();
- } catch (error) {
- console.error('Failed to save task:', error);
- throw error;
- }
- }
- // 删除任务
- async delete(): Promise<void> {
- try {
- if (!this.id) {
- throw new Error('Task ID is required for deletion');
- }
- await this.parseObject.destroy();
- } catch (error) {
- console.error('Failed to delete task:', error);
- throw error;
- }
- }
- // 从 Parse.Object 创建 Task 实例
- static fromParseObject(parseObject: Parse.Object): Task {
- const task = new Task();
- task.parseObject = parseObject;
- task.id = parseObject.id;
- const data = parseObject.toJSON();
- task.title = data['title'];
- task.content = data['content'];
- task.startTime = data['startTime'];
- task.endTime = data['endTime'];
- task.completed = data['completed'];
- task.userId = data['userId'];
- return task;
- }
- }
|