const mongoose = require('../../services/mongoose'); const Schema = mongoose.Schema; const ITEM_TYPES = require('../enum/item_types'); const USER_ROLES = require('../enum/user_roles'); /** * The Mongo schema for a Tag. * @type {Schema} */ const TagSchema = new Schema( { // The actual name of the tag. name: String, // Contains permission data. permissions: { // Determines if this tag is public or not. public: { type: Boolean, default: true, }, // Determines if the owner of the Model can add/remove this tag on their own // resources. self: Boolean, // Determines other roles that are allowed to set this tag on other // resources. roles: [ { type: String, enum: USER_ROLES, default: [], }, ], }, // A list of all the model types that this tag can be added to. models: [ { type: String, enum: ITEM_TYPES, }, ], // The date for when the tag was created. created_at: { type: Date, default: Date, }, }, { _id: false, } ); module.exports = TagSchema;