You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.0 KiB

  1. /* global WIKI */
  2. exports.up = async knex => {
  3. const dbCompat = {
  4. charset: (WIKI.config.db.type === `mysql` || WIKI.config.db.type === `mariadb`),
  5. selfCascadeDelete: WIKI.config.db.type !== 'mssql'
  6. }
  7. return knex.schema
  8. .dropTable('pageTree')
  9. .createTable('pageTree', table => {
  10. if (dbCompat.charset) { table.charset('utf8mb4') }
  11. table.integer('id').unsigned().primary()
  12. table.string('path').notNullable()
  13. table.integer('depth').unsigned().notNullable()
  14. table.string('title').notNullable()
  15. table.boolean('isPrivate').notNullable().defaultTo(false)
  16. table.boolean('isFolder').notNullable().defaultTo(false)
  17. table.string('privateNS')
  18. })
  19. .table('pageTree', table => {
  20. if (dbCompat.selfCascadeDelete) {
  21. table.integer('parent').unsigned().references('id').inTable('pageTree').onDelete('CASCADE')
  22. } else {
  23. table.integer('parent').unsigned()
  24. }
  25. table.integer('pageId').unsigned().references('id').inTable('pages').onDelete('CASCADE')
  26. table.string('localeCode', 5).references('code').inTable('locales')
  27. })
  28. }
  29. exports.down = knex => {
  30. const dbCompat = {
  31. charset: (WIKI.config.db.type === `mysql` || WIKI.config.db.type === `mariadb`),
  32. selfCascadeDelete: WIKI.config.db.type !== 'mssql'
  33. }
  34. return knex.schema
  35. .dropTable('pageTree')
  36. .createTable('pageTree', table => {
  37. if (dbCompat.charset) { table.charset('utf8mb4') }
  38. table.integer('id').primary()
  39. table.string('path').notNullable()
  40. table.integer('depth').unsigned().notNullable()
  41. table.string('title').notNullable()
  42. table.boolean('isPrivate').notNullable().defaultTo(false)
  43. table.boolean('isFolder').notNullable().defaultTo(false)
  44. table.string('privateNS')
  45. })
  46. .table('pageTree', table => {
  47. table.integer('parent').unsigned().references('id').inTable('pageTree')
  48. table.integer('pageId').unsigned().references('id').inTable('pages')
  49. table.string('localeCode', 5).references('code').inTable('locales')
  50. })
  51. }