fix: use frontmatter format for metadata in storage
This commit is contained in:
		@@ -114,6 +114,27 @@ module.exports = class Page extends Model {
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Inject page metadata into contents
 | 
			
		||||
   */
 | 
			
		||||
  injectMetadata () {
 | 
			
		||||
    let meta = [
 | 
			
		||||
      ['title', this.title],
 | 
			
		||||
      ['description', this.description],
 | 
			
		||||
      ['published', this.isPublished.toString()],
 | 
			
		||||
      ['date', this.updatedAt],
 | 
			
		||||
      ['tags', '']
 | 
			
		||||
    ]
 | 
			
		||||
    switch (this.contentType) {
 | 
			
		||||
      case 'markdown':
 | 
			
		||||
        return '---\n' + meta.map(mt => `${mt[0]}: ${mt[1]}`).join('\n') + '\n---\n\n' + this.content
 | 
			
		||||
      case 'html':
 | 
			
		||||
        return '<!--\n' + meta.map(mt => `${mt[0]}: ${mt[1]}`).join('\n') + '\n-->\n\n' + this.content
 | 
			
		||||
      default:
 | 
			
		||||
        return this.content
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static async createPage(opts) {
 | 
			
		||||
    await WIKI.models.pages.query().insert({
 | 
			
		||||
      authorId: opts.authorId,
 | 
			
		||||
 
 | 
			
		||||
@@ -15,29 +15,6 @@ const getFileExtension = (contentType) => {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Inject page metadata into contents
 | 
			
		||||
 */
 | 
			
		||||
const injectMetadata = (page) => {
 | 
			
		||||
  let meta = [
 | 
			
		||||
    ['title', page.title],
 | 
			
		||||
    ['description', page.description]
 | 
			
		||||
  ]
 | 
			
		||||
  let metaFormatted = ''
 | 
			
		||||
  switch (page.contentType) {
 | 
			
		||||
    case 'markdown':
 | 
			
		||||
      metaFormatted = meta.map(mt => `[//]: # ${mt[0]}: ${mt[1]}`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
    case 'html':
 | 
			
		||||
      metaFormatted = meta.map(mt => `<!-- ${mt[0]}: ${mt[1]} -->`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
    default:
 | 
			
		||||
      metaFormatted = meta.map(mt => `#WIKI ${mt[0]}: ${mt[1]}`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
  }
 | 
			
		||||
  return `${metaFormatted}\n\n${page.content}`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  async activated() {
 | 
			
		||||
    // not used
 | 
			
		||||
@@ -56,12 +33,12 @@ module.exports = {
 | 
			
		||||
  async created(page) {
 | 
			
		||||
    WIKI.logger.info(`(STORAGE/DISK) Creating file ${page.path}...`)
 | 
			
		||||
    const filePath = path.join(this.config.path, `${page.path}.${getFileExtension(page.contentType)}`)
 | 
			
		||||
    await fs.outputFile(filePath, injectMetadata(page), 'utf8')
 | 
			
		||||
    await fs.outputFile(filePath, page.injectMetadata(), 'utf8')
 | 
			
		||||
  },
 | 
			
		||||
  async updated(page) {
 | 
			
		||||
    WIKI.logger.info(`(STORAGE/DISK) Updating file ${page.path}...`)
 | 
			
		||||
    const filePath = path.join(this.config.path, `${page.path}.${getFileExtension(page.contentType)}`)
 | 
			
		||||
    await fs.outputFile(filePath, injectMetadata(page), 'utf8')
 | 
			
		||||
    await fs.outputFile(filePath, page.injectMetadata(), 'utf8')
 | 
			
		||||
  },
 | 
			
		||||
  async deleted(page) {
 | 
			
		||||
    WIKI.logger.info(`(STORAGE/DISK) Deleting file ${page.path}...`)
 | 
			
		||||
 
 | 
			
		||||
@@ -17,29 +17,6 @@ const getFileExtension = (contentType) => {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Inject page metadata into contents
 | 
			
		||||
 */
 | 
			
		||||
const injectMetadata = (page) => {
 | 
			
		||||
  let meta = [
 | 
			
		||||
    ['title', page.title],
 | 
			
		||||
    ['description', page.description]
 | 
			
		||||
  ]
 | 
			
		||||
  let metaFormatted = ''
 | 
			
		||||
  switch (page.contentType) {
 | 
			
		||||
    case 'markdown':
 | 
			
		||||
      metaFormatted = meta.map(mt => `[//]: # ${mt[0]}: ${mt[1]}`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
    case 'html':
 | 
			
		||||
      metaFormatted = meta.map(mt => `<!-- ${mt[0]}: ${mt[1]} -->`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
    default:
 | 
			
		||||
      metaFormatted = meta.map(mt => `#WIKI ${mt[0]}: ${mt[1]}`).join('\n')
 | 
			
		||||
      break
 | 
			
		||||
  }
 | 
			
		||||
  return `${metaFormatted}\n\n${page.content}`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  git: null,
 | 
			
		||||
  repoPath: path.join(process.cwd(), 'data/repo'),
 | 
			
		||||
@@ -131,7 +108,7 @@ module.exports = {
 | 
			
		||||
    WIKI.logger.info(`(STORAGE/GIT) Committing new file ${page.path}...`)
 | 
			
		||||
    const fileName = `${page.path}.${getFileExtension(page.contentType)}`
 | 
			
		||||
    const filePath = path.join(this.repoPath, fileName)
 | 
			
		||||
    await fs.outputFile(filePath, injectMetadata(page), 'utf8')
 | 
			
		||||
    await fs.outputFile(filePath, page.injectMetadata(), 'utf8')
 | 
			
		||||
 | 
			
		||||
    await this.git.add(`./${fileName}`)
 | 
			
		||||
    await this.git.commit(`docs: create ${page.path}`, fileName, {
 | 
			
		||||
@@ -142,7 +119,7 @@ module.exports = {
 | 
			
		||||
    WIKI.logger.info(`(STORAGE/GIT) Committing updated file ${page.path}...`)
 | 
			
		||||
    const fileName = `${page.path}.${getFileExtension(page.contentType)}`
 | 
			
		||||
    const filePath = path.join(this.repoPath, fileName)
 | 
			
		||||
    await fs.outputFile(filePath, injectMetadata(page), 'utf8')
 | 
			
		||||
    await fs.outputFile(filePath, page.injectMetadata(), 'utf8')
 | 
			
		||||
 | 
			
		||||
    await this.git.add(`./${fileName}`)
 | 
			
		||||
    await this.git.commit(`docs: update ${page.path}`, fileName, {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user