2bca06a823a0_init_walle_database.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """init walle database
  4. 此刻是walle 2.0 alpha准备工作收尾阶段中, 但内心非常孤独, 大多用户让人心寒, 缺乏基本的感恩之心
  5. Revision ID: 2bca06a823a0
  6. Revises:
  7. Create Date: 2018-12-08 21:01:19.273412
  8. """
  9. from alembic import op
  10. from walle.service.extensions import db
  11. revision = '2bca06a823a0'
  12. down_revision = None
  13. branch_labels = None
  14. depends_on = None
  15. def upgrade():
  16. # Don't ask why, you are not me, and you will never understand
  17. # who care about you ?
  18. create_environments()
  19. init_environments()
  20. create_menus()
  21. init_menus()
  22. create_projects()
  23. create_records()
  24. create_servers()
  25. create_spaces()
  26. init_spaces()
  27. create_tasks()
  28. create_users()
  29. init_users()
  30. create_members()
  31. init_members()
  32. # commit
  33. db.session.commit()
  34. def create_environments():
  35. sql = u"""CREATE TABLE `environments` (
  36. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  37. `name` varchar(100) DEFAULT 'master' COMMENT '',
  38. `space_id` int(10) NOT NULL DEFAULT '0' COMMENT '',
  39. `status` tinyint(1) DEFAULT '1' COMMENT '',
  40. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  41. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  42. PRIMARY KEY (`id`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  44. db.session.execute(sql)
  45. def init_environments():
  46. sql = u"""INSERT INTO `environments` VALUES
  47. (1,'开发环境', 1, 1, '2017-03-08 17:26:07', '2018-11-26 15:38:14'),
  48. (2,'测试环境', 1, 1, '2017-05-13 11:26:42', '2018-11-26 15:38:14'),
  49. (3,'生产环境', 1, 1, '2017-05-14 10:46:31', '2018-11-26 17:10:02');"""
  50. db.session.execute(sql)
  51. def create_menus():
  52. sql = u"""CREATE TABLE `menus` (
  53. `id` int(15) NOT NULL AUTO_INCREMENT,
  54. `name_cn` varchar(30) NOT NULL COMMENT '',
  55. `name_en` varchar(30) NOT NULL COMMENT '',
  56. `pid` int(6) NOT NULL COMMENT '',
  57. `type` enum('action','controller','module') DEFAULT 'action' COMMENT '',
  58. `sequence` int(11) DEFAULT '0' COMMENT '',
  59. `role` varchar(10) NOT NULL DEFAULT '' COMMENT '',
  60. `archive` tinyint(1) DEFAULT '0' COMMENT '',
  61. `icon` varchar(30) DEFAULT '' COMMENT '',
  62. `url` varchar(100) DEFAULT '' COMMENT '',
  63. `visible` tinyint(1) DEFAULT '1' COMMENT '',
  64. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  65. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  66. PRIMARY KEY (`id`)
  67. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  68. db.session.execute(sql)
  69. def init_menus():
  70. sql = u"""INSERT INTO `menus` VALUES
  71. (1,'首页','index',0,'module',10000,'10',0,'wl-icon-main','/',1,'2017-06-11 23:11:38','2018-11-03 09:31:51'),
  72. (2,'空间管理','space',0,'module',10001,'50',0,'wl-icon-space-set','/space/index',1,'2017-06-11 23:11:38','2018-11-01 07:37:23'),
  73. (3,'用户管理','user',0,'module',10002,'40',0,'wl-icon-user-set','/user/index',1,'2017-06-11 23:11:52','2018-12-05 19:50:43'),
  74. (4,'项目中心','project',0,'module',10003,'30',0,'wl-icon-project-set','',1,'2017-06-11 23:12:45','2018-12-05 19:45:43'),
  75. (5,'部署管理','deploy',0,'module',10101,'10',0,'wl-icon-deploy-set','/deploy/index',1,'2017-06-11 23:13:51','2018-11-04 23:57:19'),
  76. (6,'环境管理','group',4,'controller',10102,'50',0,'leaf','/environment/index',1,'2017-06-11 23:14:11','2018-11-03 09:31:41'),
  77. (7,'服务器管理','role',4,'controller',10103,'40',0,'leaf','/server/index',1,'2017-06-11 23:14:44','2018-11-03 09:31:41'),
  78. (8,'项目管理','environment',4,'controller',10201,'30',0,'leaf','/project/index',1,'2017-06-11 23:15:30','2018-12-05 19:45:12');"""
  79. db.session.execute(sql)
  80. def create_projects():
  81. sql = u"""CREATE TABLE `projects` (
  82. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  83. `user_id` int(10) NOT NULL COMMENT '',
  84. `name` varchar(100) DEFAULT 'master' COMMENT '',
  85. `environment_id` int(1) NOT NULL COMMENT '',
  86. `space_id` int(10) NOT NULL DEFAULT '0' COMMENT '',
  87. `status` tinyint(1) DEFAULT '1' COMMENT '',
  88. `master` varchar(100) NOT NULL DEFAULT '' COMMENT '',
  89. `version` varchar(40) DEFAULT '' COMMENT '',
  90. `excludes` text COMMENT '',
  91. `target_user` varchar(50) NOT NULL COMMENT '',
  92. `target_port` int(3) NOT NULL DEFAULT '22' COMMENT '',
  93. `target_root` varchar(200) NOT NULL COMMENT '',
  94. `target_releases` varchar(200) NOT NULL COMMENT '',
  95. `server_ids` text COMMENT '',
  96. `task_vars` text COMMENT '',
  97. `prev_deploy` text COMMENT '',
  98. `post_deploy` text COMMENT '',
  99. `prev_release` text COMMENT '',
  100. `post_release` text COMMENT '',
  101. `keep_version_num` int(3) NOT NULL DEFAULT '20' COMMENT '',
  102. `repo_url` varchar(200) DEFAULT '' COMMENT '',
  103. `repo_username` varchar(50) DEFAULT '' COMMENT '',
  104. `repo_password` varchar(50) DEFAULT '' COMMENT '',
  105. `repo_mode` varchar(50) DEFAULT 'branch' COMMENT '',
  106. `repo_type` varchar(10) DEFAULT 'git' COMMENT '',
  107. `notice_type` varchar(10) NOT NULL DEFAULT '' COMMENT '',
  108. `notice_hook` text NOT NULL COMMENT '',
  109. `task_audit` tinyint(1) DEFAULT '0' COMMENT '',
  110. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  111. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  112. PRIMARY KEY (`id`)
  113. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  114. db.session.execute(sql)
  115. def create_records():
  116. sql = u"""CREATE TABLE `records` (
  117. `id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '',
  118. `stage` varchar(20) DEFAULT NULL COMMENT '',
  119. `sequence` int(10) DEFAULT NULL COMMENT '',
  120. `user_id` int(21) unsigned NOT NULL COMMENT '',
  121. `task_id` bigint(11) NOT NULL COMMENT '',
  122. `status` int(3) NOT NULL COMMENT '',
  123. `host` varchar(200) DEFAULT '' COMMENT '',
  124. `user` varchar(200) DEFAULT '' COMMENT '',
  125. `command` text COMMENT '',
  126. `success` text COMMENT '',
  127. `error` text COMMENT '',
  128. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  129. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  130. PRIMARY KEY (`id`)
  131. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  132. db.session.execute(sql)
  133. def create_servers():
  134. sql = u"""CREATE TABLE `servers` (
  135. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  136. `name` varchar(100) DEFAULT '' COMMENT '',
  137. `host` varchar(100) NOT NULL COMMENT '',
  138. `port` int(1) DEFAULT '22' COMMENT '',
  139. `status` tinyint(1) DEFAULT '1' COMMENT '',
  140. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  141. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  142. PRIMARY KEY (`id`)
  143. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  144. db.session.execute(sql)
  145. def create_spaces():
  146. sql = u"""CREATE TABLE `spaces` (
  147. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  148. `user_id` int(10) NOT NULL COMMENT '',
  149. `name` varchar(100) NOT NULL COMMENT '',
  150. `status` tinyint(1) DEFAULT '1' COMMENT '',
  151. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  152. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  153. PRIMARY KEY (`id`)
  154. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  155. db.session.execute(sql)
  156. def init_spaces():
  157. sql = u"""INSERT INTO `spaces` VALUES
  158. (1,2,'Demo空间',1,'2018-09-17 22:09:37','2018-11-18 00:09:58');"""
  159. db.session.execute(sql)
  160. def create_tasks():
  161. sql = u"""CREATE TABLE `tasks` (
  162. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  163. `name` varchar(100) NOT NULL COMMENT '',
  164. `user_id` bigint(21) unsigned NOT NULL COMMENT '',
  165. `project_id` int(11) NOT NULL COMMENT '',
  166. `action` int(1) DEFAULT '0' COMMENT '',
  167. `status` tinyint(1) NOT NULL COMMENT '',
  168. `link_id` varchar(100) DEFAULT '' COMMENT '',
  169. `ex_link_id` varchar(100) DEFAULT '' COMMENT '',
  170. `servers` text COMMENT '',
  171. `commit_id` varchar(40) DEFAULT '' COMMENT '',
  172. `branch` varchar(100) DEFAULT 'master' COMMENT '',
  173. `tag` varchar(100) DEFAULT '' COMMENT '',
  174. `file_transmission_mode` smallint(3) NOT NULL DEFAULT '1' COMMENT '',
  175. `file_list` text COMMENT '',
  176. `enable_rollback` int(1) NOT NULL DEFAULT '1' COMMENT '',
  177. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  178. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  179. PRIMARY KEY (`id`)
  180. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  181. db.session.execute(sql)
  182. def create_users():
  183. sql = u"""CREATE TABLE `users` (
  184. `id` int(11) NOT NULL AUTO_INCREMENT,
  185. `username` varchar(50) NOT NULL COMMENT '',
  186. `is_email_verified` tinyint(1) NOT NULL DEFAULT '0' COMMENT '',
  187. `email` varchar(50) NOT NULL COMMENT '',
  188. `password` varchar(100) NOT NULL COMMENT '',
  189. `password_hash` varchar(50) DEFAULT NULL COMMENT '',
  190. `avatar` varchar(100) DEFAULT 'default.jpg' COMMENT '',
  191. `role` varchar(10) NOT NULL DEFAULT '' COMMENT '',
  192. `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '',
  193. `last_space` int(11) NOT NULL DEFAULT '0',
  194. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  195. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  196. PRIMARY KEY (`id`)
  197. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  198. db.session.execute(sql)
  199. def init_users():
  200. sql = u"""INSERT INTO `users` VALUES
  201. (1,'Super',1,'super@walle-web.io','pbkdf2:sha256:50000$AyRSJVSn$448c69b93158b30b9e3625d340b48dbdbce1186fcf30fc72663a9361ffec339b','','','SUPER',1,0,'2017-03-17 09:03:09','2018-11-24 17:01:23'),
  202. (2,'Owner',1,'owner@walle-web.io','pbkdf2:sha256:50000$AyRSJVSn$448c69b93158b30b9e3625d340b48dbdbce1186fcf30fc72663a9361ffec339b','','','',1,1,'2017-03-20 19:05:44','2018-11-24 17:01:23'),
  203. (3,'Master',1,'master@walle-web.io','pbkdf2:sha256:50000$AyRSJVSn$448c69b93158b30b9e3625d340b48dbdbce1186fcf30fc72663a9361ffec339b','','','',1,1,'2017-04-13 15:03:57','2018-11-24 10:22:37'),
  204. (4,'Developer',1,'developer@walle-web.io','pbkdf2:sha256:50000$AyRSJVSn$448c69b93158b30b9e3625d340b48dbdbce1186fcf30fc72663a9361ffec339b','','','',1,1,'2017-05-11 22:33:35','2018-12-05 19:37:47'),
  205. (5,'Reporter',1,'reporter@walle-web.io','pbkdf2:sha256:50000$AyRSJVSn$448c69b93158b30b9e3625d340b48dbdbce1186fcf30fc72663a9361ffec339b','','','',1,1,'2017-05-11 23:39:11','2018-11-23 07:40:55')"""
  206. db.session.execute(sql)
  207. def create_members():
  208. sql = u"""CREATE TABLE `members` (
  209. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '',
  210. `user_id` int(10) DEFAULT '0' COMMENT '',
  211. `source_id` int(10) DEFAULT '0' COMMENT '',
  212. `source_type` varchar(10) DEFAULT '' COMMENT '',
  213. `access_level` varchar(10) DEFAULT '10' COMMENT '',
  214. `status` tinyint(1) DEFAULT '1' COMMENT '',
  215. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '',
  216. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  217. PRIMARY KEY (`id`)
  218. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"""
  219. db.session.execute(sql)
  220. def init_members():
  221. sql = u"""INSERT INTO `members` VALUES
  222. (null,2,1,'group','OWNER',1,'2018-12-09 00:35:59','2018-12-09 00:35:59'),
  223. (null,3,1,'group','MASTER',1,'2018-12-09 00:35:59','2018-12-09 00:35:59'),
  224. (null,4,1,'group','DEVELOPER',1,'2018-12-09 00:35:59','2018-12-09 00:35:59'),
  225. (null,5,1,'group','REPORTER',1,'2018-12-09 00:35:59','2018-12-09 00:35:59');"""
  226. db.session.execute(sql)
  227. def downgrade():
  228. op.drop_table('members')
  229. op.drop_table('users')
  230. op.drop_table('tasks')
  231. op.drop_table('spaces')
  232. op.drop_table('servers')
  233. op.drop_table('records')
  234. op.drop_table('projects')
  235. op.drop_table('menus')
  236. op.drop_table('environments')