mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 18:45:29 +08:00
59 lines
1.2 KiB
JavaScript
59 lines
1.2 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;
|