parent
0dd25e5176
commit
b80737ef1b
@ -0,0 +1,29 @@
|
|||||||
|
// page.js
|
||||||
|
// Copyright (C) 2021 Digital Telepresence, LLC
|
||||||
|
// License: Apache-2.0
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const mongoose = require('mongoose');
|
||||||
|
const Schema = mongoose.Schema;
|
||||||
|
|
||||||
|
const PAGE_STATUS_LIST = ['draft','published','archived'];
|
||||||
|
|
||||||
|
const PageSchema = new Schema({
|
||||||
|
title: { type: String, required: true },
|
||||||
|
slug: { type: String, required: true, lowercase: true, unique: true },
|
||||||
|
image: {
|
||||||
|
header: { type: Schema.ObjectId, ref: 'Image' },
|
||||||
|
icon: { type: Schema.ObjectId, ref: 'Image' },
|
||||||
|
},
|
||||||
|
content: { type: String, required: true, select: false },
|
||||||
|
status: { type: String, enum: PAGE_STATUS_LIST, default: 'draft', index: true },
|
||||||
|
menu: {
|
||||||
|
icon: { type: String, required: true },
|
||||||
|
label: { type: String, required: true },
|
||||||
|
order: { type: Number, default: 0, required: true },
|
||||||
|
parent: { type: Schema.ObjectId, index: 1, ref: 'Page' },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = mongoose.model('Page', PageSchema);
|
@ -0,0 +1,36 @@
|
|||||||
|
// post.js
|
||||||
|
// Copyright (C) 2021 Digital Telepresence, LLC
|
||||||
|
// License: Apache-2.0
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
|
const Schema = mongoose.Schema;
|
||||||
|
|
||||||
|
const {
|
||||||
|
ResourceStats,
|
||||||
|
ResourceStatsDefaults,
|
||||||
|
} = require(path.join(__dirname, 'lib', 'resource-stats.js'));
|
||||||
|
|
||||||
|
const POST_STATUS_LIST = ['draft','published','archived'];
|
||||||
|
|
||||||
|
const PostSchema = new Schema({
|
||||||
|
created: { type: Date, default: Date.now, required: true, index: -1 },
|
||||||
|
updated: { type: Date },
|
||||||
|
author: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' },
|
||||||
|
image: { type: Schema.ObjectId, ref: 'Image' },
|
||||||
|
title: { type: String, required: true },
|
||||||
|
slug: { type: String, required: true, lowercase: true, unique: true },
|
||||||
|
summary: { type: String, required: true },
|
||||||
|
content: { type: String, required: true, select: false },
|
||||||
|
status: { type: String, enum: POST_STATUS_LIST, default: 'draft', index: true },
|
||||||
|
stats: { type: ResourceStats, default: ResourceStatsDefaults, required: true },
|
||||||
|
flags: {
|
||||||
|
enableComments: { type: Boolean, default: true, index: true },
|
||||||
|
isFeatured: { type: Boolean, default: false, index: true },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = mongoose.model('Post', PostSchema);
|
Loading…
Reference in new issue