Skip to content

Commit

Permalink
refactor: use Post.findById if postAsset exists
Browse files Browse the repository at this point in the history
  • Loading branch information
yoshinorin committed Apr 19, 2024
1 parent 9385c81 commit 44a14de
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions lib/plugins/processor/post.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { toDate, timezone, isExcludedFile, isTmpFile, isHiddenFile, isMatch } from './common';
import Promise from 'bluebird';
import { parse as yfm } from 'hexo-front-matter';
import { extname, join, posix } from 'path';
import { extname, join, posix, sep } from 'path';
import { stat, listDir } from 'hexo-fs';
import { slugize, Pattern, Permalink } from 'hexo-util';
import { magenta } from 'picocolors';
import type { _File } from '../../box';
import type Hexo from '../../hexo';
import type { Stats } from 'fs';
import { PostSchema } from '../../types';

const postDir = '_posts/';
const draftDir = '_drafts/';
Expand Down Expand Up @@ -270,28 +271,37 @@ function processAsset(ctx: Hexo, file: _File) {
const id = file.source.substring(ctx.base_dir.length);
const doc = PostAsset.findById(id);

if (file.type === 'delete') {
if (file.type === 'delete' || Post.length === 0) {
if (doc) {
return doc.remove();
}

return;
}

if (Post.length > 0) {
const assetDir = id.slice(0, id.lastIndexOf('/'));
const post = Post.findOne(p => p.asset_dir.endsWith(posix.join(assetDir, '/')));
const savePostAsset = (post: PostSchema) => {
return PostAsset.save({
_id: id,
slug: file.source.substring(post.asset_dir.length),
post: post._id,
modified: file.type !== 'skip',
renderable: file.params.renderable
});
};

if (doc) {
// `doc.post` is `Post.id`.
const post = Post.findById(doc.post);
if (post != null && (post.published || ctx._showDrafts())) {
return PostAsset.save({
_id: id,
slug: file.source.substring(post.asset_dir.length),
post: post._id,
modified: file.type !== 'skip',
renderable: file.params.renderable
});
return savePostAsset(post);
}
}

const assetDir = id.slice(0, id.lastIndexOf(sep));
const post = Post.findOne(p => p.asset_dir.endsWith(posix.join(assetDir, '/')));
if (post != null && (post.published || ctx._showDrafts())) {
return savePostAsset(post);
}

if (doc) {
return doc.remove();
}
Expand Down

0 comments on commit 44a14de

Please sign in to comment.