mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 20:24:56 +08:00
54 lines
1.0 KiB
JavaScript
54 lines
1.0 KiB
JavaScript
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;
|