resource-watch/widget

View on GitHub
app/src/models/widget.model.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const mongoose = require('mongoose');
const mongoosePaginate = require('mongoose-paginate');
const uuidV4 = require('uuid/v4');

const { Schema } = mongoose;

const Widget = new Schema({
    _id: { type: String, default: uuidV4 },
    dataset: { type: String, required: true, trim: true },
    name: { type: String, required: true, trim: true },
    slug: {
        type: String, required: true, trim: true, unique: true
    },
    userId: { type: String, required: true, trim: true },
    description: { type: String, required: false, trim: true },
    source: { type: String, required: false, trim: true },
    sourceUrl: { type: String, required: false, trim: true },
    authors: { type: String, required: false, trim: true },
    queryUrl: { type: String, required: false, trim: true },
    thumbnailUrl: { type: String, required: false, trim: true },
    env: {
        type: String, required: true, default: 'production', trim: true
    },
    widgetConfig: Schema.Types.Mixed,
    application: [{ type: String, required: true, trim: true }],
    layerId: { type: String, required: false, trim: true },
    verified: { type: Boolean, default: false },
    default: { type: Boolean, default: false },
    protected: { type: Boolean, default: false },
    defaultEditableWidget: { type: Boolean, default: false },
    template: { type: Boolean, default: false },
    published: { type: Boolean, default: true },
    freeze: { type: Boolean, default: false },
    userRole: { type: String, default: null, select: false },
    userName: { type: String, default: null, select: false },
    createdAt: { type: Date, default: Date.now },
    updatedAt: { type: Date, default: Date.now }
});

Widget.plugin(mongoosePaginate);

module.exports = mongoose.model('Widget', Widget);