/alembic/versions/753ec9bc0d27_init_v1_0.py

https://github.com/xtg20121013/blog_xtg · Python · 170 lines · 151 code · 5 blank · 14 comment · 0 complexity · 9f4d0f05ad67b70bcf5afecfd7c8cb50 MD5 · raw file

  1. # coding=utf-8
  2. """init_v1_0
  3. Revision ID: 753ec9bc0d27
  4. Revises:
  5. Create Date: 2017-03-12 20:17:20.958379
  6. """
  7. from alembic import op
  8. import sqlalchemy as sa
  9. from model.constants import Constants
  10. # revision identifiers, used by Alembic.
  11. revision = '753ec9bc0d27'
  12. down_revision = None
  13. branch_labels = None
  14. depends_on = None
  15. def upgrade():
  16. # ### commands auto generated by Alembic - please adjust! ###
  17. ats = op.create_table('articleTypeSettings',
  18. sa.Column('id', sa.Integer(), nullable=False),
  19. sa.Column('name', sa.String(length=64), nullable=True),
  20. sa.Column('protected', sa.Boolean(), nullable=True),
  21. sa.Column('hide', sa.Boolean(), nullable=True),
  22. sa.PrimaryKeyConstraint('id'),
  23. sa.UniqueConstraint('name')
  24. )
  25. blog_info = op.create_table('blog_info',
  26. sa.Column('id', sa.Integer(), nullable=False),
  27. sa.Column('title', sa.String(length=64), nullable=True),
  28. sa.Column('signature', sa.Text(), nullable=True),
  29. sa.Column('navbar', sa.String(length=64), nullable=True),
  30. sa.PrimaryKeyConstraint('id')
  31. )
  32. op.create_table('blog_view',
  33. sa.Column('date', sa.DATE(), nullable=False),
  34. sa.Column('pv', sa.BigInteger(), nullable=True),
  35. sa.Column('uv', sa.BigInteger(), nullable=True),
  36. sa.PrimaryKeyConstraint('date')
  37. )
  38. op.create_table('menus',
  39. sa.Column('id', sa.Integer(), nullable=False),
  40. sa.Column('name', sa.String(length=64), nullable=True),
  41. sa.Column('order', sa.Integer(), nullable=False),
  42. sa.PrimaryKeyConstraint('id'),
  43. sa.UniqueConstraint('name')
  44. )
  45. plugins = op.create_table('plugins',
  46. sa.Column('id', sa.Integer(), nullable=False),
  47. sa.Column('title', sa.String(length=64), nullable=True),
  48. sa.Column('note', sa.Text(), nullable=True),
  49. sa.Column('content', sa.Text(), nullable=True),
  50. sa.Column('order', sa.Integer(), nullable=True),
  51. sa.Column('disabled', sa.Boolean(), nullable=True),
  52. sa.PrimaryKeyConstraint('id'),
  53. sa.UniqueConstraint('title')
  54. )
  55. op.create_index(op.f('ix_plugins_order'), 'plugins', ['order'], unique=False)
  56. sources = op.create_table('sources',
  57. sa.Column('id', sa.Integer(), nullable=False),
  58. sa.Column('name', sa.String(length=64), nullable=True),
  59. sa.PrimaryKeyConstraint('id'),
  60. sa.UniqueConstraint('name')
  61. )
  62. op.create_table('users',
  63. sa.Column('created_at', sa.DateTime(), nullable=True),
  64. sa.Column('id', sa.Integer(), nullable=False),
  65. sa.Column('email', sa.String(length=64), nullable=True),
  66. sa.Column('username', sa.String(length=64), nullable=True),
  67. sa.Column('password', sa.String(length=128), nullable=True),
  68. sa.PrimaryKeyConstraint('id')
  69. )
  70. op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
  71. op.create_index(op.f('ix_users_username'), 'users', ['username'], unique=True)
  72. articleTypes = op.create_table('articleTypes',
  73. sa.Column('id', sa.Integer(), nullable=False),
  74. sa.Column('name', sa.String(length=64), nullable=True),
  75. sa.Column('introduction', sa.Text(), nullable=True),
  76. sa.Column('menu_id', sa.Integer(), nullable=True),
  77. sa.Column('setting_id', sa.Integer(), nullable=True),
  78. sa.ForeignKeyConstraint(['menu_id'], ['menus.id'], ),
  79. sa.ForeignKeyConstraint(['setting_id'], ['articleTypeSettings.id'], ),
  80. sa.PrimaryKeyConstraint('id'),
  81. sa.UniqueConstraint('name')
  82. )
  83. op.create_table('articles',
  84. sa.Column('id', sa.Integer(), nullable=False),
  85. sa.Column('title', sa.String(length=64), nullable=True),
  86. sa.Column('content', sa.Text(), nullable=True),
  87. sa.Column('summary', sa.Text(), nullable=True),
  88. sa.Column('create_time', sa.DateTime(), nullable=True),
  89. sa.Column('update_time', sa.DateTime(), nullable=True),
  90. sa.Column('num_of_view', sa.Integer(), nullable=True),
  91. sa.Column('articleType_id', sa.Integer(), nullable=True),
  92. sa.Column('source_id', sa.Integer(), nullable=True),
  93. sa.ForeignKeyConstraint(['articleType_id'], ['articleTypes.id'], ),
  94. sa.ForeignKeyConstraint(['source_id'], ['sources.id'], ),
  95. sa.PrimaryKeyConstraint('id')
  96. )
  97. op.create_index(op.f('ix_articles_create_time'), 'articles', ['create_time'], unique=False)
  98. op.create_index(op.f('ix_articles_update_time'), 'articles', ['update_time'], unique=False)
  99. op.create_table('comments',
  100. sa.Column('id', sa.Integer(), nullable=False),
  101. sa.Column('content', sa.Text(), nullable=True),
  102. sa.Column('create_time', sa.DateTime(), nullable=True),
  103. sa.Column('author_name', sa.String(length=64), nullable=True),
  104. sa.Column('author_email', sa.String(length=64), nullable=True),
  105. sa.Column('article_id', sa.Integer(), nullable=True),
  106. sa.Column('disabled', sa.Boolean(), nullable=True),
  107. sa.Column('comment_type', sa.String(length=64), nullable=True),
  108. sa.Column('rank', sa.String(length=64), nullable=True),
  109. sa.Column('floor', sa.Integer(), nullable=False),
  110. sa.Column('reply_to_id', sa.Integer(), nullable=True),
  111. sa.Column('reply_to_floor', sa.String(length=64), nullable=True),
  112. sa.ForeignKeyConstraint(['article_id'], ['articles.id'], ),
  113. sa.PrimaryKeyConstraint('id')
  114. )
  115. # ### end Alembic commands ###
  116. # insert default data
  117. op.bulk_insert(ats, [
  118. dict(id=1, name='system', protected=True, hide=True)
  119. ])
  120. op.bulk_insert(blog_info,[
  121. dict(id=1,
  122. title=u'开源分布式博客系统blog_xtg',
  123. signature=u'基于tornado的分布式博客!— by xtg',
  124. navbar='inverse')
  125. ])
  126. op.bulk_insert(plugins, [
  127. dict(id=1,
  128. title=u'博客统计',
  129. note=u'系统插件',
  130. content='system_plugin',
  131. order=1,
  132. disabled=False)
  133. ])
  134. op.bulk_insert(sources, [
  135. dict(id=1, name=u'原创', ),
  136. dict(id=2, name=u'转载', ),
  137. dict(id=3, name=u'翻译', ),
  138. ])
  139. op.bulk_insert(articleTypes, [
  140. dict(id=Constants.ARTICLE_TYPE_DEFAULT_ID,
  141. name=u'未分类',
  142. introduction=u'系统默认分类,不可删除。',
  143. setting_id=1,
  144. ),
  145. ])
  146. def downgrade():
  147. # ### commands auto generated by Alembic - please adjust! ###
  148. op.drop_table('comments')
  149. op.drop_index(op.f('ix_articles_update_time'), table_name='articles')
  150. op.drop_index(op.f('ix_articles_create_time'), table_name='articles')
  151. op.drop_table('articles')
  152. op.drop_table('articleTypes')
  153. op.drop_index(op.f('ix_users_username'), table_name='users')
  154. op.drop_index(op.f('ix_users_email'), table_name='users')
  155. op.drop_table('users')
  156. op.drop_table('sources')
  157. op.drop_index(op.f('ix_plugins_order'), table_name='plugins')
  158. op.drop_table('plugins')
  159. op.drop_table('menus')
  160. op.drop_table('blog_view')
  161. op.drop_table('blog_info')
  162. op.drop_table('articleTypeSettings')
  163. # ### end Alembic commands ###