@brontosaurus/db
Version:
:ocean: Schema for brontosaurus
151 lines (150 loc) • 3.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApplicationModel = exports.ApplicationRedirectionSchema = void 0;
const core_1 = require("@brontosaurus/core");
const random_1 = require("@sudoo/bark/random");
const mongoose_1 = require("mongoose");
exports.ApplicationRedirectionSchema = new mongoose_1.Schema({
name: {
type: String,
required: true,
},
regexp: {
type: String,
required: true,
},
}, { _id: false });
const ApplicationSchema = new mongoose_1.Schema({
active: {
type: Boolean,
required: true,
default: true,
},
anchor: {
type: String,
required: true,
unique: true,
index: true,
},
key: {
type: String,
required: true,
unique: true,
},
avatar: {
type: String,
required: false,
},
backgroundImage: {
type: String,
required: false,
},
favicon: {
type: String,
required: false,
},
helpLink: {
type: String,
required: false,
},
privacyPolicy: {
type: String,
required: false,
},
name: {
type: String,
required: true,
unique: true,
index: true,
},
green: {
type: String,
required: true,
},
greenAccess: {
type: Boolean,
required: true,
default: false,
},
portalAccess: {
type: Boolean,
required: true,
default: false,
},
expire: {
type: Number,
required: true,
},
publicKey: {
type: String,
required: true,
},
privateKey: {
type: String,
required: true,
},
redirections: {
type: [exports.ApplicationRedirectionSchema],
required: true,
default: [],
},
iFrameProtocol: {
type: Boolean,
required: true,
default: false,
},
postProtocol: {
type: Boolean,
required: true,
default: false,
},
alertProtocol: {
type: Boolean,
required: true,
default: false,
},
noneProtocol: {
type: Boolean,
required: true,
default: false,
},
groups: {
type: [mongoose_1.Schema.Types.ObjectId],
required: true,
default: [],
},
requires: {
type: [mongoose_1.Schema.Types.ObjectId],
required: true,
default: [],
},
requireTags: {
type: [mongoose_1.Schema.Types.ObjectId],
required: true,
default: [],
},
}, {
timestamps: {
createdAt: true,
updatedAt: true,
},
});
ApplicationSchema.methods.refreshGreen = function () {
this.green = random_1.trustable(new Date(), undefined, 64);
return this;
};
ApplicationSchema.methods.refreshKey = function () {
const secret = core_1.Brontosaurus.generateBrontosaurusKey();
this.publicKey = secret.public;
this.privateKey = secret.private;
return this;
};
ApplicationSchema.methods.toggleGreenAccess = function () {
this.greenAccess = !Boolean(this.greenAccess);
return this;
};
ApplicationSchema.methods.togglePortalAccess = function () {
this.portalAccess = !Boolean(this.portalAccess);
return this;
};
exports.ApplicationModel = mongoose_1.model('Application', ApplicationSchema);