12345678910111213141516171819202122232425262728293031 |
- 'use strict';
- const { Schema } = require('warehouse');
- const { join } = require('path');
- module.exports = ctx => {
- const PostAsset = new Schema({
- _id: {type: String, required: true},
- slug: {type: String, required: true},
- modified: {type: Boolean, default: true},
- post: {type: Schema.Types.CUID, ref: 'Post'},
- renderable: {type: Boolean, default: true}
- });
- PostAsset.virtual('path').get(function() {
- const Post = ctx.model('Post');
- const post = Post.findById(this.post);
- if (!post) return;
- // PostAsset.path is file path relative to `public_dir`
- // no need to urlescape, #1562
- // strip /\.html?$/ extensions on permalink, #2134
- return join(post.path.replace(/\.html?$/, ''), this.slug);
- });
- PostAsset.virtual('source').get(function() {
- return join(ctx.base_dir, this._id);
- });
- return PostAsset;
- };
|