20180618015850_initial.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. const migrate_name = 'initial-schema';
  2. const logger = require('../logger').migrate;
  3. /**
  4. * Migrate
  5. *
  6. * @see http://knexjs.org/#Schema
  7. *
  8. * @param {Object} knex
  9. * @param {Promise} Promise
  10. * @returns {Promise}
  11. */
  12. exports.up = function (knex/*, Promise*/) {
  13. logger.info('[' + migrate_name + '] Migrating Up...');
  14. return knex.schema.createTable('auth', (table) => {
  15. table.increments().primary();
  16. table.dateTime('created_on').notNull();
  17. table.dateTime('modified_on').notNull();
  18. table.integer('user_id').notNull().unsigned();
  19. table.string('type', 30).notNull();
  20. table.string('secret').notNull();
  21. table.json('meta').notNull();
  22. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  23. })
  24. .then(() => {
  25. logger.info('[' + migrate_name + '] auth Table created');
  26. return knex.schema.createTable('user', (table) => {
  27. table.increments().primary();
  28. table.dateTime('created_on').notNull();
  29. table.dateTime('modified_on').notNull();
  30. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  31. table.integer('is_disabled').notNull().unsigned().defaultTo(0);
  32. table.string('email').notNull();
  33. table.string('name').notNull();
  34. table.string('nickname').notNull();
  35. table.string('avatar').notNull();
  36. table.json('roles').notNull();
  37. });
  38. })
  39. .then(() => {
  40. logger.info('[' + migrate_name + '] user Table created');
  41. return knex.schema.createTable('user_permission', (table) => {
  42. table.increments().primary();
  43. table.dateTime('created_on').notNull();
  44. table.dateTime('modified_on').notNull();
  45. table.integer('user_id').notNull().unsigned();
  46. table.string('visibility').notNull();
  47. table.string('proxy_hosts').notNull();
  48. table.string('redirection_hosts').notNull();
  49. table.string('dead_hosts').notNull();
  50. table.string('streams').notNull();
  51. table.string('access_lists').notNull();
  52. table.string('certificates').notNull();
  53. table.unique('user_id');
  54. });
  55. })
  56. .then(() => {
  57. logger.info('[' + migrate_name + '] user_permission Table created');
  58. return knex.schema.createTable('proxy_host', (table) => {
  59. table.increments().primary();
  60. table.dateTime('created_on').notNull();
  61. table.dateTime('modified_on').notNull();
  62. table.integer('owner_user_id').notNull().unsigned();
  63. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  64. table.json('domain_names').notNull();
  65. table.string('forward_ip').notNull();
  66. table.integer('forward_port').notNull().unsigned();
  67. table.integer('access_list_id').notNull().unsigned().defaultTo(0);
  68. table.integer('certificate_id').notNull().unsigned().defaultTo(0);
  69. table.integer('ssl_forced').notNull().unsigned().defaultTo(0);
  70. table.integer('caching_enabled').notNull().unsigned().defaultTo(0);
  71. table.integer('block_exploits').notNull().unsigned().defaultTo(0);
  72. table.text('advanced_config').notNull().defaultTo('');
  73. table.json('meta').notNull();
  74. });
  75. })
  76. .then(() => {
  77. logger.info('[' + migrate_name + '] proxy_host Table created');
  78. return knex.schema.createTable('redirection_host', (table) => {
  79. table.increments().primary();
  80. table.dateTime('created_on').notNull();
  81. table.dateTime('modified_on').notNull();
  82. table.integer('owner_user_id').notNull().unsigned();
  83. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  84. table.json('domain_names').notNull();
  85. table.string('forward_domain_name').notNull();
  86. table.integer('preserve_path').notNull().unsigned().defaultTo(0);
  87. table.integer('certificate_id').notNull().unsigned().defaultTo(0);
  88. table.integer('ssl_forced').notNull().unsigned().defaultTo(0);
  89. table.integer('block_exploits').notNull().unsigned().defaultTo(0);
  90. table.text('advanced_config').notNull().defaultTo('');
  91. table.json('meta').notNull();
  92. });
  93. })
  94. .then(() => {
  95. logger.info('[' + migrate_name + '] redirection_host Table created');
  96. return knex.schema.createTable('dead_host', (table) => {
  97. table.increments().primary();
  98. table.dateTime('created_on').notNull();
  99. table.dateTime('modified_on').notNull();
  100. table.integer('owner_user_id').notNull().unsigned();
  101. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  102. table.json('domain_names').notNull();
  103. table.integer('certificate_id').notNull().unsigned().defaultTo(0);
  104. table.integer('ssl_forced').notNull().unsigned().defaultTo(0);
  105. table.text('advanced_config').notNull().defaultTo('');
  106. table.json('meta').notNull();
  107. });
  108. })
  109. .then(() => {
  110. logger.info('[' + migrate_name + '] dead_host Table created');
  111. return knex.schema.createTable('stream', (table) => {
  112. table.increments().primary();
  113. table.dateTime('created_on').notNull();
  114. table.dateTime('modified_on').notNull();
  115. table.integer('owner_user_id').notNull().unsigned();
  116. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  117. table.integer('incoming_port').notNull().unsigned();
  118. table.string('forward_ip').notNull();
  119. table.integer('forwarding_port').notNull().unsigned();
  120. table.integer('tcp_forwarding').notNull().unsigned().defaultTo(0);
  121. table.integer('udp_forwarding').notNull().unsigned().defaultTo(0);
  122. table.json('meta').notNull();
  123. });
  124. })
  125. .then(() => {
  126. logger.info('[' + migrate_name + '] stream Table created');
  127. return knex.schema.createTable('access_list', (table) => {
  128. table.increments().primary();
  129. table.dateTime('created_on').notNull();
  130. table.dateTime('modified_on').notNull();
  131. table.integer('owner_user_id').notNull().unsigned();
  132. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  133. table.string('name').notNull();
  134. table.json('meta').notNull();
  135. });
  136. })
  137. .then(() => {
  138. logger.info('[' + migrate_name + '] access_list Table created');
  139. return knex.schema.createTable('certificate', (table) => {
  140. table.increments().primary();
  141. table.dateTime('created_on').notNull();
  142. table.dateTime('modified_on').notNull();
  143. table.integer('owner_user_id').notNull().unsigned();
  144. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  145. table.string('provider').notNull();
  146. table.string('nice_name').notNull().defaultTo('');
  147. table.json('domain_names').notNull();
  148. table.dateTime('expires_on').notNull();
  149. table.json('meta').notNull();
  150. });
  151. })
  152. .then(() => {
  153. logger.info('[' + migrate_name + '] certificate Table created');
  154. return knex.schema.createTable('access_list_auth', (table) => {
  155. table.increments().primary();
  156. table.dateTime('created_on').notNull();
  157. table.dateTime('modified_on').notNull();
  158. table.integer('access_list_id').notNull().unsigned();
  159. table.string('username').notNull();
  160. table.string('password').notNull();
  161. table.json('meta').notNull();
  162. });
  163. })
  164. .then(() => {
  165. logger.info('[' + migrate_name + '] access_list_auth Table created');
  166. return knex.schema.createTable('audit_log', (table) => {
  167. table.increments().primary();
  168. table.dateTime('created_on').notNull();
  169. table.dateTime('modified_on').notNull();
  170. table.integer('user_id').notNull().unsigned();
  171. table.string('object_type').notNull().defaultTo('');
  172. table.integer('object_id').notNull().unsigned().defaultTo(0);
  173. table.string('action').notNull();
  174. table.json('meta').notNull();
  175. });
  176. })
  177. .then(() => {
  178. logger.info('[' + migrate_name + '] audit_log Table created');
  179. });
  180. };
  181. /**
  182. * Undo Migrate
  183. *
  184. * @param {Object} knex
  185. * @param {Promise} Promise
  186. * @returns {Promise}
  187. */
  188. exports.down = function (knex, Promise) {
  189. logger.warn('[' + migrate_name + '] You can\'t migrate down the initial data.');
  190. return Promise.resolve(true);
  191. };