add: init headers table during migration

v0.2
rrr-marble 4 years ago
parent e91ebd714b
commit 0174f4b7ba

@ -7,7 +7,9 @@ Create Date: 2022-07-08 20:32:20.039600
""" """
from alembic import op from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import String
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
from sqlalchemy.sql import column, table
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "b76b7f791b3b" revision = "b76b7f791b3b"
@ -70,6 +72,56 @@ def upgrade() -> None:
sa.PrimaryKeyConstraint("database"), sa.PrimaryKeyConstraint("database"),
) )
# ### end Alembic commands ### # ### end Alembic commands ###
# ### Manual Changes
# Create an ad-hoc table to use for the insert statement.
headers_table = table(
"headers", column("database", String), column("spreadsheet", String)
)
# generated by
# header_list = [('', h) for h in <COPIED SPREADSHEET HEADERS>]
# fill db names in the first slot, recreate header_list
# print(*[f"""{{"database":"{pair[0]}", "spreadsheet":"{pair[1]}"}}""" for pair in header_list], sep=",\n")
# special care should be given to headers with multi-line names, for now manual is sufficient
op.bulk_insert(
headers_table,
[
{"database": "id", "spreadsheet": "Уникальный номер образца"},
{"database": "fadr", "spreadsheet": "кордината X"},
{"database": "internal_id", "spreadsheet": "координата Y"},
{
"database": "x_coord",
"spreadsheet": """Категория в ГИС
Geology - керн, каменный материал
Soil - почва, грунты, морские осадки
Material - искуственные материалы, минералы""",
},
{
"database": "y_coord",
"spreadsheet": "Категория (Археология, Биология, Минералы)",
},
{"database": "gis_category", "spreadsheet": "Бассейн"},
{"database": "category", "spreadsheet": "Месторождение"},
{"database": "basin", "spreadsheet": "№ скважины"},
{"database": "deposit", "spreadsheet": "Глубина, интервал, привязка"},
{"database": "well", "spreadsheet": "Свита\пласт"},
{"database": "depth", "spreadsheet": "Хозяин (ФИО)"},
{"database": "stratum", "spreadsheet": "Организация"},
{"database": "owner", "spreadsheet": "Контакты хозяина"},
{"database": "org", "spreadsheet": "перечень объектов/образцов"},
{"database": "ownercontacts", "spreadsheet": "Описание объекта"},
{"database": "samplelist", "spreadsheet": "Форма, размер"},
{"database": "description", "spreadsheet": "Перечень данных"},
{"database": "form_dimentions", "spreadsheet": "Разрешение, µm"},
{"database": "datalist", "spreadsheet": "Дата съёмки"},
{"database": "resolution", "spreadsheet": "Дополнительная информация"},
{"database": "date", "spreadsheet": "Томограф"},
{"database": "additional_info", "spreadsheet": "комментарий"},
],
)
# ### End Manual Changes
def downgrade() -> None: def downgrade() -> None:
@ -79,3 +131,4 @@ def downgrade() -> None:
op.drop_index("geodata_search_idx", table_name="geodata", postgresql_using="gin") op.drop_index("geodata_search_idx", table_name="geodata", postgresql_using="gin")
op.drop_table("geodata") op.drop_table("geodata")
# ### end Alembic commands ### # ### end Alembic commands ###
# ### No need to clean our Manual Changes since we drop the "headers" table whole

Loading…
Cancel
Save