2023-06-22 19:36:52 +05:00
|
|
|
const { formTypes } = require("../../ModuleExportsFunctions/formTypes");
|
2023-06-19 12:35:11 +05:00
|
|
|
|
2023-06-22 19:36:52 +05:00
|
|
|
const ids = [];
|
2023-06-19 12:35:11 +05:00
|
|
|
|
|
|
|
module.exports = (db) => {
|
2023-06-22 19:36:52 +05:00
|
|
|
return class Option {
|
|
|
|
constructor(
|
|
|
|
options = {
|
|
|
|
optionId: "",
|
|
|
|
optionName: "",
|
|
|
|
optionDescription: "",
|
|
|
|
optionType: formTypes,
|
|
|
|
},
|
|
|
|
) {
|
|
|
|
//
|
|
|
|
this.optionId = options.optionId;
|
|
|
|
this.optionName = options.optionName;
|
|
|
|
this.optionDescription = options.optionDescription;
|
|
|
|
this.optionType = options.optionType;
|
|
|
|
|
|
|
|
this.categoryId = "default";
|
|
|
|
|
|
|
|
this.setNew = async ({ guild, newData }) => {
|
|
|
|
await db.set(`${guild.id}.options.${this.optionId}`, newData);
|
|
|
|
};
|
|
|
|
|
|
|
|
this.getActualSet = async ({ guild }) => {
|
|
|
|
return await db.get(`${guild.id}.options.${this.optionId}`);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {string} id - The id of the option, must be unique
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
setId(id) {
|
|
|
|
this.optionId = id;
|
|
|
|
|
|
|
|
if (ids.includes(id)) throw new Error(`Option id ${id} already exists`);
|
|
|
|
else ids.push(this.optionId);
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {string} name - The name of the option displayed in the dashboard
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
setName(name) {
|
|
|
|
this.optionName = name;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {string} description - The description of the option displayed in the dashboard
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
setDescription(description) {
|
|
|
|
this.optionDescription = description;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {object} options - Set custom options for the formType
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
setOptions(options) {
|
|
|
|
this.themeOptions = options;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {formTypes} type - The type of the option
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
setType(type) {
|
|
|
|
this.optionType = type;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|