1
This commit is contained in:
94
tasks/tasks.model.js
Normal file
94
tasks/tasks.model.js
Normal file
@@ -0,0 +1,94 @@
|
||||
const mongoose = require("mongoose");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
// Task data structure based on the documentation
|
||||
const playerTaskSchema = new Schema({
|
||||
taskId: { type: String, required: true },
|
||||
assignedTime: { type: Date, required: true },
|
||||
expireTime: { type: Date, required: true },
|
||||
status: { type: Number, required: true, default: 0 }, // 0: Active, 1: Completed, 2: Expired, 3: Claimed
|
||||
progress: { type: Number, required: true, default: 0 }
|
||||
});
|
||||
|
||||
const playerTaskDataSchema = new Schema({
|
||||
userId: { type: String, required: true, index: true },
|
||||
tasks: [playerTaskSchema],
|
||||
lastDailyTaskAssigned: { type: Date, default: null }
|
||||
});
|
||||
|
||||
playerTaskDataSchema.methods.toObj = function () {
|
||||
var elem = this.toObject();
|
||||
delete elem.__v;
|
||||
delete elem._id;
|
||||
return elem;
|
||||
};
|
||||
|
||||
const PlayerTaskData = mongoose.model("PlayerTaskData", playerTaskDataSchema);
|
||||
exports.PlayerTaskData = PlayerTaskData;
|
||||
|
||||
// Task configuration storage
|
||||
let taskConfigurations = [];
|
||||
|
||||
// Get all task configurations
|
||||
exports.getAllTaskConfigs = async () => {
|
||||
return taskConfigurations;
|
||||
};
|
||||
|
||||
// Get task configuration by ID
|
||||
exports.getTaskConfigById = async (taskId) => {
|
||||
return taskConfigurations.find(task => task.id === taskId);
|
||||
};
|
||||
|
||||
// Get player tasks
|
||||
exports.getPlayerTasks = async (userId) => {
|
||||
try {
|
||||
let playerTaskData = await PlayerTaskData.findOne({ userId: userId });
|
||||
if (!playerTaskData) {
|
||||
playerTaskData = new PlayerTaskData({
|
||||
userId: userId,
|
||||
tasks: [],
|
||||
lastDailyTaskAssigned: null
|
||||
});
|
||||
await playerTaskData.save();
|
||||
}
|
||||
return playerTaskData;
|
||||
} catch (e) {
|
||||
console.error("Error getting player tasks:", e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
// Save player tasks
|
||||
exports.savePlayerTasks = async (playerTaskData) => {
|
||||
try {
|
||||
const updated = await PlayerTaskData.findOneAndUpdate(
|
||||
{ userId: playerTaskData.userId },
|
||||
playerTaskData,
|
||||
{ new: true, upsert: true }
|
||||
);
|
||||
return updated;
|
||||
} catch (e) {
|
||||
console.error("Error saving player tasks:", e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
// Initialize task configurations from file
|
||||
exports.initializeTaskConfig = (configPath) => {
|
||||
try {
|
||||
if (fs.existsSync(configPath)) {
|
||||
const configFile = fs.readFileSync(configPath, 'utf8');
|
||||
taskConfigurations = JSON.parse(configFile);
|
||||
console.log(`Loaded ${taskConfigurations.length} task configurations`);
|
||||
} else {
|
||||
console.log("Task configuration file not found, using empty configuration");
|
||||
taskConfigurations = [];
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Error initializing task configuration:", e);
|
||||
taskConfigurations = [];
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user