feat: combine customgpt to user

This commit is contained in:
Wentao Lyu 2023-03-16 13:30:20 +08:00
parent b0284b6974
commit aabb19656e
2 changed files with 20 additions and 16 deletions

View file

@ -12,16 +12,20 @@ const customGptSchema = mongoose.Schema({
type: String, type: String,
required: true required: true
}, },
user: {
type: String
},
}, { timestamps: true }); }, { timestamps: true });
const CustomGpt = mongoose.models.CustomGpt || mongoose.model('CustomGpt', customGptSchema); const CustomGpt = mongoose.models.CustomGpt || mongoose.model('CustomGpt', customGptSchema);
const createCustomGpt = async ({ chatGptLabel, promptPrefix, value }) => { const createCustomGpt = async ({ chatGptLabel, promptPrefix, value, user }) => {
try { try {
await CustomGpt.create({ await CustomGpt.create({
chatGptLabel, chatGptLabel,
promptPrefix, promptPrefix,
value value,
user
}); });
return { chatGptLabel, promptPrefix, value }; return { chatGptLabel, promptPrefix, value };
} catch (error) { } catch (error) {
@ -31,22 +35,22 @@ const createCustomGpt = async ({ chatGptLabel, promptPrefix, value }) => {
}; };
module.exports = { module.exports = {
getCustomGpts: async (filter) => { getCustomGpts: async (user, filter) => {
try { try {
return await CustomGpt.find(filter).exec(); return await CustomGpt.find({ ...filter, user: user }).exec();
} catch (error) { } catch (error) {
console.error(error); console.error(error);
return { customGpt: 'Error getting customGpts' }; return { customGpt: 'Error getting customGpts' };
} }
}, },
updateCustomGpt: async ({ value, ...update }) => { updateCustomGpt: async (user, { value, ...update }) => {
try { try {
const customGpt = await CustomGpt.findOne({ value }).exec(); const customGpt = await CustomGpt.findOne({ value, user: user }).exec();
if (!customGpt) { if (!customGpt) {
return await createCustomGpt({ value, ...update }); return await createCustomGpt({ value, ...update, user: user });
} else { } else {
return await CustomGpt.findOneAndUpdate({ value }, update, { return await CustomGpt.findOneAndUpdate({ value, user: user }, update, {
new: true, new: true,
upsert: true upsert: true
}).exec(); }).exec();
@ -56,9 +60,9 @@ module.exports = {
return { message: 'Error updating customGpt' }; return { message: 'Error updating customGpt' };
} }
}, },
updateByLabel: async ({ prevLabel, ...update }) => { updateByLabel: async (user, { prevLabel, ...update }) => {
try { try {
return await CustomGpt.findOneAndUpdate({ chatGptLabel: prevLabel }, update, { return await CustomGpt.findOneAndUpdate({ chatGptLabel: prevLabel, user: user }, update, {
new: true, new: true,
upsert: true upsert: true
}).exec(); }).exec();
@ -67,9 +71,9 @@ module.exports = {
return { message: 'Error updating customGpt' }; return { message: 'Error updating customGpt' };
} }
}, },
deleteCustomGpts: async (filter) => { deleteCustomGpts: async (user, filter) => {
try { try {
return await CustomGpt.deleteMany(filter).exec(); return await CustomGpt.deleteMany({ ...filter, user: user }).exec();
} catch (error) { } catch (error) {
console.error(error); console.error(error);
return { customGpt: 'Error deleting customGpts' }; return { customGpt: 'Error deleting customGpts' };

View file

@ -8,7 +8,7 @@ const {
} = require('../../models'); } = require('../../models');
router.get('/', async (req, res) => { router.get('/', async (req, res) => {
const models = (await getCustomGpts()).map((model) => { const models = (await getCustomGpts(req?.session?.user?.username)).map((model) => {
model = model.toObject(); model = model.toObject();
model._id = model._id.toString(); model._id = model._id.toString();
return model; return model;
@ -20,8 +20,8 @@ router.post('/delete', async (req, res) => {
const { arg } = req.body; const { arg } = req.body;
try { try {
await deleteCustomGpts(arg); await deleteCustomGpts(req?.session?.user?.username, arg);
const models = (await getCustomGpts()).map((model) => { const models = (await getCustomGpts(req?.session?.user?.username)).map((model) => {
model = model.toObject(); model = model.toObject();
model._id = model._id.toString(); model._id = model._id.toString();
return model; return model;
@ -56,7 +56,7 @@ router.post('/', async (req, res) => {
} }
try { try {
const dbResponse = await setter(update); const dbResponse = await setter(req?.session?.user?.username, update);
res.status(201).send(dbResponse); res.status(201).send(dbResponse);
} catch (error) { } catch (error) {
console.error(error); console.error(error);