Nova struktura DB pro data z OpenAIP API
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
"""reworked airspace and airport db structure
|
||||
|
||||
Revision ID: cbdb018c5490
|
||||
Revises: 70152c47cb49
|
||||
Create Date: 2024-04-21 22:32:50.058166
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'cbdb018c5490'
|
||||
down_revision = '70152c47cb49'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('airspace',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('country', sa.String(length=8), nullable=False),
|
||||
sa.Column('name', sa.String(length=128), nullable=False),
|
||||
sa.Column('type', sa.String(length=8), nullable=False),
|
||||
sa.Column('lower_limit', sa.String(length=32), nullable=False),
|
||||
sa.Column('upper_limit', sa.String(length=32), nullable=False),
|
||||
sa.Column('center', mysql.JSON(), nullable=False),
|
||||
sa.Column('radius', sa.Float(), nullable=True),
|
||||
sa.Column('bounds', mysql.JSON(), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('name')
|
||||
)
|
||||
op.create_index(op.f('ix_airspace_country'), 'airspace', ['country'], unique=False)
|
||||
op.create_index(op.f('ix_airspace_type'), 'airspace', ['type'], unique=False)
|
||||
op.create_table('frequency',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('airport_id', sa.Integer(), nullable=True),
|
||||
sa.Column('airspace_id', sa.Integer(), nullable=True),
|
||||
sa.Column('frequency', sa.String(length=7), nullable=False),
|
||||
sa.Column('name', sa.String(length=64), nullable=False),
|
||||
sa.ForeignKeyConstraint(['airport_id'], ['airport.id'], ),
|
||||
sa.ForeignKeyConstraint(['airspace_id'], ['airspace.id'], ),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_table('runway',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('airport_id', sa.Integer(), nullable=False),
|
||||
sa.Column('heading', sa.Integer(), nullable=False),
|
||||
sa.Column('designator', sa.String(length=4), nullable=False),
|
||||
sa.Column('surface', sa.Enum('asphalt', 'concrete', 'grass', 'other'), server_default='other', nullable=False),
|
||||
sa.Column('length', sa.Integer(), nullable=True),
|
||||
sa.Column('width', sa.Integer(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['airport_id'], ['airport.id'], ),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.drop_table('metar')
|
||||
op.drop_table('license')
|
||||
op.drop_index('ix_airspace_item_country', table_name='airspace_item')
|
||||
op.drop_index('ix_airspace_item_type', table_name='airspace_item')
|
||||
op.drop_index('name', table_name='airspace_item')
|
||||
op.drop_table('airspace_item')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('airspace_item',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('country', mysql.VARCHAR(length=8), nullable=False),
|
||||
sa.Column('name', mysql.VARCHAR(length=128), nullable=False),
|
||||
sa.Column('type', mysql.VARCHAR(length=8), nullable=False),
|
||||
sa.Column('lower_limit', mysql.VARCHAR(length=32), nullable=False),
|
||||
sa.Column('upper_limit', mysql.VARCHAR(length=32), nullable=False),
|
||||
sa.Column('center', mysql.LONGTEXT(charset='utf8mb4', collation='utf8mb4_bin'), nullable=False),
|
||||
sa.Column('radius', mysql.FLOAT(), nullable=True),
|
||||
sa.Column('bounds', mysql.LONGTEXT(charset='utf8mb4', collation='utf8mb4_bin'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_collate='utf8mb4_general_ci',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_index('name', 'airspace_item', ['name'], unique=True)
|
||||
op.create_index('ix_airspace_item_type', 'airspace_item', ['type'], unique=False)
|
||||
op.create_index('ix_airspace_item_country', 'airspace_item', ['country'], unique=False)
|
||||
op.create_table('license',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('name', mysql.VARCHAR(length=128), nullable=False),
|
||||
sa.Column('number', mysql.VARCHAR(length=30), nullable=False),
|
||||
sa.Column('valid_until', mysql.DATETIME(), nullable=False),
|
||||
sa.Column('created_by_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False),
|
||||
sa.Column('created_at', mysql.DATETIME(), server_default=sa.text('current_timestamp()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['created_by_id'], ['user.id'], name='license_ibfk_1'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_collate='utf8mb4_general_ci',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('metar',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('airport_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False),
|
||||
sa.Column('metar', mysql.TEXT(), nullable=False),
|
||||
sa.Column('issued_at', mysql.DATETIME(), nullable=False),
|
||||
sa.Column('deleted', mysql.TINYINT(display_width=1), server_default=sa.text('0'), autoincrement=False, nullable=False),
|
||||
sa.ForeignKeyConstraint(['airport_id'], ['airport.id'], name='metar_ibfk_1'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_collate='utf8mb4_general_ci',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.drop_table('runway')
|
||||
op.drop_table('frequency')
|
||||
op.drop_index(op.f('ix_airspace_type'), table_name='airspace')
|
||||
op.drop_index(op.f('ix_airspace_country'), table_name='airspace')
|
||||
op.drop_table('airspace')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,32 @@
|
||||
"""remove old airspace columns, add altitude unit
|
||||
|
||||
Revision ID: e07a5c0f1dcc
|
||||
Revises: cbdb018c5490
|
||||
Create Date: 2024-04-22 23:42:52.140389
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'e07a5c0f1dcc'
|
||||
down_revision = 'cbdb018c5490'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('airspace', sa.Column('altitude_unit', sa.String(length=8), nullable=False))
|
||||
op.drop_column('airspace', 'center')
|
||||
op.drop_column('airspace', 'radius')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('airspace', sa.Column('radius', mysql.FLOAT(), nullable=True))
|
||||
op.add_column('airspace', sa.Column('center', mysql.LONGTEXT(charset='utf8mb4', collation='utf8mb4_bin'), nullable=False))
|
||||
op.drop_column('airspace', 'altitude_unit')
|
||||
# ### end Alembic commands ###
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
"""add alt unit for lower/upper limits in airspaces
|
||||
|
||||
Revision ID: 2012eca075c7
|
||||
Revises: e07a5c0f1dcc
|
||||
Create Date: 2024-04-22 23:49:17.725111
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '2012eca075c7'
|
||||
down_revision = 'e07a5c0f1dcc'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('airspace', sa.Column('lower_alt_unit', sa.String(length=8), nullable=False))
|
||||
op.add_column('airspace', sa.Column('upper_alt_unit', sa.String(length=8), nullable=False))
|
||||
op.drop_column('airspace', 'altitude_unit')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('airspace', sa.Column('altitude_unit', mysql.VARCHAR(length=8), nullable=False))
|
||||
op.drop_column('airspace', 'upper_alt_unit')
|
||||
op.drop_column('airspace', 'lower_alt_unit')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,45 @@
|
||||
"""add table for reporting points
|
||||
|
||||
Revision ID: 03ba4dfea911
|
||||
Revises: 2012eca075c7
|
||||
Create Date: 2024-04-23 21:39:18.254033
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '03ba4dfea911'
|
||||
down_revision = '2012eca075c7'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('reporting_point',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('openaip_id', sa.String(length=32), nullable=False),
|
||||
sa.Column('name', sa.String(length=64), nullable=False),
|
||||
sa.Column('gps_latitude', sa.Float(), nullable=True),
|
||||
sa.Column('gps_longitude', sa.Float(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_table('airport_has_reporting_point',
|
||||
sa.Column('airport_id', sa.Integer(), nullable=False),
|
||||
sa.Column('reporting_point_id', sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['airport_id'], ['airport.id'], ),
|
||||
sa.ForeignKeyConstraint(['reporting_point_id'], ['reporting_point.id'], ),
|
||||
sa.PrimaryKeyConstraint('airport_id', 'reporting_point_id')
|
||||
)
|
||||
op.add_column('airport', sa.Column('openaip_id', sa.String(length=32), nullable=False))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('airport', 'openaip_id')
|
||||
op.drop_table('airport_has_reporting_point')
|
||||
op.drop_table('reporting_point')
|
||||
# ### end Alembic commands ###
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
"""remove obsolete airport columns
|
||||
|
||||
Revision ID: f7ab4bdac987
|
||||
Revises: 03ba4dfea911
|
||||
Create Date: 2024-04-24 06:24:48.219726
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f7ab4bdac987'
|
||||
down_revision = '03ba4dfea911'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('airport', 'deleted')
|
||||
op.drop_column('airport', 'is_public')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('airport', sa.Column('is_public', mysql.TINYINT(display_width=1), server_default=sa.text('0'), autoincrement=False, nullable=False))
|
||||
op.add_column('airport', sa.Column('deleted', mysql.TINYINT(display_width=1), server_default=sa.text('0'), autoincrement=False, nullable=False))
|
||||
# ### end Alembic commands ###
|
||||
Reference in New Issue
Block a user