LibreChat/api/models/schema/groupSchema.js

41 lines
No EOL
1.1 KiB
JavaScript

const mongoose = require('mongoose');
/**
* @typedef {Object} MongoGroup
* @property {ObjectId} [_id] - MongoDB Document ID
* @property {string} name - The group's name
* @property {string} [description] - A brief description of the group
* @property {string} [externalId] - External identifier for the group (required for non-local groups)
* @property {string} provider - The provider of the group. Defaults to 'local'. For external groups (e.g., 'openid') the externalId is required.
* @property {Date} [createdAt] - Date when the group was created (added by timestamps)
* @property {Date} [updatedAt] - Date when the group was last updated (added by timestamps)
*/
const groupSchema = mongoose.Schema(
{
name: {
type: String,
required: true,
unique: true,
},
description: {
type: String,
},
externalId: {
type: String,
unique: true,
required: function () {
return this.provider !== 'local';
},
},
provider: {
type: String,
required: true,
default: 'local',
enum: ['local', 'openid'],
},
},
{ timestamps: true },
);
module.exports = groupSchema;