'use strict';

const Pattern = require('hexo-util').Pattern;
const common = require('../../plugins/processor/common');

exports.process = function(file) {
  const Asset = this.model('Asset');
  const id = file.source.substring(this.base_dir.length).replace(/\\/g, '/');
  const path = file.params.path;
  const doc = Asset.findById(id);

  if (file.type === 'delete') {
    if (doc) {
      return doc.remove();
    }

    return;
  }

  return Asset.save({
    _id: id,
    path,
    modified: file.type !== 'skip'
  });
};

exports.pattern = new Pattern(path => {
  if (!path.startsWith('source/')) return false;

  path = path.substring(7);
  if (common.isHiddenFile(path) || common.isTmpFile(path) || path.includes('node_modules')) return false;

  return {path};
});
