This is an automated email from the ASF dual-hosted git repository. hugh pushed a commit to branch update-dataset-schema in repository https://gitbox.apache.org/repos/asf/superset.git
commit 4758b014ad53b13395267cc13a7d5cd89e2f5fe7 Author: hughhhh <hughmi...@gmail.com> AuthorDate: Tue Mar 29 22:07:37 2022 -0700 add migration for adding default db and schema to model --- superset/datasets/models.py | 11 +- ...075540d1_add_default_db_schema_dataset_model.py | 3894 ++++++++++++++++++++ 2 files changed, 3904 insertions(+), 1 deletion(-) diff --git a/superset/datasets/models.py b/superset/datasets/models.py index 56a6fbf..b887ebb 100644 --- a/superset/datasets/models.py +++ b/superset/datasets/models.py @@ -24,13 +24,15 @@ dataset, new models for columns, metrics, and tables were also introduced. These models are not fully implemented, and shouldn't be used yet. """ +from email.policy import default from typing import List import sqlalchemy as sa from flask_appbuilder import Model -from sqlalchemy.orm import relationship +from sqlalchemy.orm import backref, relationship from superset.columns.models import Column +from superset.models.core import Database from superset.models.helpers import ( AuditMixinNullable, ExtraJSONMixin, @@ -75,6 +77,13 @@ class Dataset(Model, AuditMixinNullable, ExtraJSONMixin, ImportExportMixin): expression = sa.Column(sa.Text) + default_schema = sa.Column(sa.Text) + database_id = sa.Column(sa.Integer, sa.ForeignKey("dbs.id"), nullable=False) + default_database: Database = relationship( + "Database", + foreign_keys=[database_id], + ) + # n:n relationship tables: List[Table] = relationship("Table", secondary=table_association_table) diff --git a/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py b/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py new file mode 100644 index 0000000..51fb409 --- /dev/null +++ b/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py @@ -0,0 +1,3894 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +"""add_default_db_schema_dataset_model + +Revision ID: d77e075540d1 +Revises: 58df9d617f14 +Create Date: 2022-03-29 22:03:50.533742 + +""" + +# revision identifiers, used by Alembic. +revision = "d77e075540d1" +down_revision = "58df9d617f14" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + "ix_dashboard_email_schedules_active", table_name="dashboard_email_schedules" + ) + op.drop_table("dashboard_email_schedules") + op.drop_table("users_channels") + op.drop_table("FCC 2018 Survey") + op.drop_index("ix_alerts_active", table_name="alerts") + op.drop_table("alerts") + op.drop_table("covid_vaccines") + op.drop_table("embedded_dashboards") + op.drop_table("unicode_test") + op.drop_table("messages") + op.drop_table("channel_members") + op.drop_table("long_lat") + op.drop_table("birth_names") + op.drop_table("alert_logs") + op.drop_table("alert_owner") + op.drop_table("birth_france_by_region") + op.drop_table("users") + op.drop_table("sf_population_polygons") + op.drop_table("bart_lines") + op.drop_index("ix_slice_email_schedules_active", table_name="slice_email_schedules") + op.drop_table("slice_email_schedules") + op.drop_table("wb_health_population") + op.drop_table("exported_stats") + op.drop_index("ix_sql_observations_dttm", table_name="sql_observations") + op.drop_table("sql_observations") + op.drop_table("channels") + op.drop_table("cleaned_sales_data") + op.drop_table("threads") + op.drop_table("video_game_sales") + op.drop_table("flights") + op.alter_column( + "annotation", "layer_id", existing_type=sa.INTEGER(), nullable=False + ) + op.alter_column( + "dashboard_roles", "dashboard_id", existing_type=sa.INTEGER(), nullable=False + ) + op.create_foreign_key(None, "datasources", "ab_user", ["changed_by_fk"], ["id"]) + op.alter_column( + "dbs", + "allow_file_upload", + existing_type=sa.BOOLEAN(), + nullable=True, + existing_server_default=sa.text("true"), + ) + op.create_unique_constraint(None, "dynamic_plugin", ["bundle_url"]) + op.alter_column( + "filter_sets", "dashboard_id", existing_type=sa.INTEGER(), nullable=True + ) + op.create_unique_constraint(None, "filter_sets", ["name"]) + op.drop_index("ix_key_value_expires_on", table_name="key_value") + op.drop_index("ix_key_value_uuid", table_name="key_value") + op.create_unique_constraint(None, "key_value", ["uuid"]) + op.alter_column("report_schedule", "extra", existing_type=sa.TEXT(), nullable=True) + op.drop_index("ix_creation_method", table_name="report_schedule") + op.create_unique_constraint( + None, "report_schedule_user", ["user_id", "report_schedule_id"] + ) + op.drop_index( + "ix_row_level_security_filters_filter_type", + table_name="row_level_security_filters", + ) + op.alter_column("sl_columns", "name", existing_type=sa.TEXT(), nullable=True) + op.alter_column("sl_columns", "type", existing_type=sa.TEXT(), nullable=True) + op.alter_column("sl_columns", "expression", existing_type=sa.TEXT(), nullable=True) + op.alter_column( + "sl_columns", "is_physical", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_temporal", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_spatial", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_partition", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_aggregation", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_additive", existing_type=sa.BOOLEAN(), nullable=True + ) + op.alter_column( + "sl_columns", "is_increase_desired", existing_type=sa.BOOLEAN(), nullable=True + ) + op.create_foreign_key(None, "sl_columns", "ab_user", ["created_by_fk"], ["id"]) + op.create_foreign_key(None, "sl_columns", "ab_user", ["changed_by_fk"], ["id"]) + op.alter_column( + "sl_dataset_columns", "dataset_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column( + "sl_dataset_columns", "column_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column( + "sl_dataset_tables", "dataset_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column( + "sl_dataset_tables", "table_id", existing_type=sa.INTEGER(), nullable=True + ) + op.add_column("sl_datasets", sa.Column("default_schema", sa.Text(), nullable=True)) + op.add_column("sl_datasets", sa.Column("database_id", sa.Integer(), nullable=False)) + op.alter_column("sl_datasets", "name", existing_type=sa.TEXT(), nullable=True) + op.alter_column("sl_datasets", "expression", existing_type=sa.TEXT(), nullable=True) + op.alter_column( + "sl_datasets", "is_physical", existing_type=sa.BOOLEAN(), nullable=True + ) + op.create_foreign_key(None, "sl_datasets", "ab_user", ["changed_by_fk"], ["id"]) + op.create_foreign_key(None, "sl_datasets", "dbs", ["database_id"], ["id"]) + op.create_foreign_key(None, "sl_datasets", "ab_user", ["created_by_fk"], ["id"]) + op.alter_column( + "sl_table_columns", "table_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column( + "sl_table_columns", "column_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column("sl_tables", "name", existing_type=sa.TEXT(), nullable=True) + op.create_unique_constraint( + None, "sl_tables", ["database_id", "catalog", "schema", "name"] + ) + op.create_foreign_key(None, "sl_tables", "ab_user", ["changed_by_fk"], ["id"]) + op.create_foreign_key(None, "sl_tables", "ab_user", ["created_by_fk"], ["id"]) + op.alter_column("tab_state", "autorun", existing_type=sa.BOOLEAN(), nullable=True) + op.alter_column( + "tab_state", + "hide_left_bar", + existing_type=sa.BOOLEAN(), + nullable=True, + existing_server_default=sa.text("false"), + ) + op.drop_index("ix_tab_state_id", table_name="tab_state") + op.drop_index("ix_table_schema_id", table_name="table_schema") + op.drop_index("ix_tagged_object_object_id", table_name="tagged_object") + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_index( + "ix_tagged_object_object_id", "tagged_object", ["object_id"], unique=False + ) + op.create_index("ix_table_schema_id", "table_schema", ["id"], unique=False) + op.create_index("ix_tab_state_id", "tab_state", ["id"], unique=False) + op.alter_column( + "tab_state", + "hide_left_bar", + existing_type=sa.BOOLEAN(), + nullable=False, + existing_server_default=sa.text("false"), + ) + op.alter_column("tab_state", "autorun", existing_type=sa.BOOLEAN(), nullable=False) + op.drop_constraint(None, "sl_tables", type_="foreignkey") + op.drop_constraint(None, "sl_tables", type_="foreignkey") + op.drop_constraint(None, "sl_tables", type_="unique") + op.alter_column("sl_tables", "name", existing_type=sa.TEXT(), nullable=False) + op.alter_column( + "sl_table_columns", "column_id", existing_type=sa.INTEGER(), nullable=False + ) + op.alter_column( + "sl_table_columns", "table_id", existing_type=sa.INTEGER(), nullable=False + ) + op.drop_constraint(None, "sl_datasets", type_="foreignkey") + op.drop_constraint(None, "sl_datasets", type_="foreignkey") + op.drop_constraint(None, "sl_datasets", type_="foreignkey") + op.alter_column( + "sl_datasets", "is_physical", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_datasets", "expression", existing_type=sa.TEXT(), nullable=False + ) + op.alter_column("sl_datasets", "name", existing_type=sa.TEXT(), nullable=False) + op.drop_column("sl_datasets", "database_id") + op.drop_column("sl_datasets", "default_schema") + op.alter_column( + "sl_dataset_tables", "table_id", existing_type=sa.INTEGER(), nullable=False + ) + op.alter_column( + "sl_dataset_tables", "dataset_id", existing_type=sa.INTEGER(), nullable=False + ) + op.alter_column( + "sl_dataset_columns", "column_id", existing_type=sa.INTEGER(), nullable=False + ) + op.alter_column( + "sl_dataset_columns", "dataset_id", existing_type=sa.INTEGER(), nullable=False + ) + op.drop_constraint(None, "sl_columns", type_="foreignkey") + op.drop_constraint(None, "sl_columns", type_="foreignkey") + op.alter_column( + "sl_columns", "is_increase_desired", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_additive", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_aggregation", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_partition", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_spatial", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_temporal", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column( + "sl_columns", "is_physical", existing_type=sa.BOOLEAN(), nullable=False + ) + op.alter_column("sl_columns", "expression", existing_type=sa.TEXT(), nullable=False) + op.alter_column("sl_columns", "type", existing_type=sa.TEXT(), nullable=False) + op.alter_column("sl_columns", "name", existing_type=sa.TEXT(), nullable=False) + op.create_index( + "ix_row_level_security_filters_filter_type", + "row_level_security_filters", + ["filter_type"], + unique=False, + ) + op.drop_constraint(None, "report_schedule_user", type_="unique") + op.create_index( + "ix_creation_method", "report_schedule", ["creation_method"], unique=False + ) + op.alter_column("report_schedule", "extra", existing_type=sa.TEXT(), nullable=False) + op.drop_constraint(None, "key_value", type_="unique") + op.create_index("ix_key_value_uuid", "key_value", ["uuid"], unique=False) + op.create_index( + "ix_key_value_expires_on", "key_value", ["expires_on"], unique=False + ) + op.drop_constraint(None, "filter_sets", type_="unique") + op.alter_column( + "filter_sets", "dashboard_id", existing_type=sa.INTEGER(), nullable=False + ) + op.drop_constraint(None, "dynamic_plugin", type_="unique") + op.alter_column( + "dbs", + "allow_file_upload", + existing_type=sa.BOOLEAN(), + nullable=False, + existing_server_default=sa.text("true"), + ) + op.drop_constraint(None, "datasources", type_="foreignkey") + op.alter_column( + "dashboard_roles", "dashboard_id", existing_type=sa.INTEGER(), nullable=True + ) + op.alter_column("annotation", "layer_id", existing_type=sa.INTEGER(), nullable=True) + op.create_table( + "flights", + sa.Column("YEAR", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("MONTH", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("DAY", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("DAY_OF_WEEK", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("AIRLINE", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("FLIGHT_NUMBER", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("TAIL_NUMBER", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("ORIGIN_AIRPORT", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("DESTINATION_AIRPORT", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "SCHEDULED_DEPARTURE", sa.BIGINT(), autoincrement=False, nullable=True + ), + sa.Column( + "DEPARTURE_TIME", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "DEPARTURE_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "TAXI_OUT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "WHEELS_OFF", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("SCHEDULED_TIME", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "ELAPSED_TIME", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "AIR_TIME", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("DISTANCE", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "WHEELS_ON", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "TAXI_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("SCHEDULED_ARRIVAL", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "ARRIVAL_TIME", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "ARRIVAL_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("DIVERTED", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("CANCELLED", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("CANCELLATION_REASON", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "AIR_SYSTEM_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SECURITY_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "AIRLINE_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "LATE_AIRCRAFT_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "WEATHER_DELAY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("ds", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("AIRPORT", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("CITY", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("STATE", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("COUNTRY", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "LATITUDE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "LONGITUDE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("AIRPORT_DEST", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("CITY_DEST", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("STATE_DEST", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("COUNTRY_DEST", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "LATITUDE_DEST", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "LONGITUDE_DEST", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + ) + op.create_table( + "video_game_sales", + sa.Column("rank", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "platform", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("year", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("genre", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "publisher", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "na_sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "eu_sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "jp_sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "other_sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "global_sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + ) + op.create_table( + "threads", + sa.Column("blocks", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "channel_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "client_msg_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "latest_reply", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("reply_count", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("reply_users", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("reply_users_count", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("subscribed", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("team", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("text", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "thread_ts", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("ts", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("type", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("user", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + ) + op.create_table( + "cleaned_sales_data", + sa.Column("order_number", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("quantity_ordered", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "price_each", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("order_line_number", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "sales", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "order_date", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("status", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("quarter", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("month", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("year", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("product_line", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("msrp", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("product_code", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("customer_name", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("phone", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("address_line1", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("address_line2", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("city", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("state", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("postal_code", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("country", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("territory", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("contact_last_name", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("contact_first_name", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("deal_size", sa.TEXT(), autoincrement=False, nullable=True), + ) + op.create_table( + "channels", + sa.Column( + "channel_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "created", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "creator", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("id", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("is_archived", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_channel", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_ext_shared", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_general", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_group", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_im", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_member", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_mpim", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_org_shared", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "is_pending_ext_shared", sa.BOOLEAN(), autoincrement=False, nullable=True + ), + sa.Column("is_private", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_shared", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("members", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "name_normalized", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column("num_members", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "parent_conversation", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "pending_connected_team_ids", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column("pending_shared", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("previous_names", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "purpose__creator", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "purpose__last_set", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "purpose__value", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("shared_team_ids", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "topic__creator", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "topic__last_set", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + ), + sa.Column("topic__value", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "unlinked", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + ) + op.create_table( + "sql_observations", + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column("dttm", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("alert_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column( + "value", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "error_msg", sa.VARCHAR(length=500), autoincrement=False, nullable=True + ), + sa.ForeignKeyConstraint( + ["alert_id"], ["alerts.id"], name="sql_observations_alert_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="sql_observations_pkey"), + ) + op.create_index( + "ix_sql_observations_dttm", "sql_observations", ["dttm"], unique=False + ) + op.create_table( + "exported_stats", + sa.Column("date", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("total_membership", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("full_members", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("guests", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "daily_active_members", sa.BIGINT(), autoincrement=False, nullable=True + ), + sa.Column( + "daily_members_posting_messages", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "weekly_active_members", sa.BIGINT(), autoincrement=False, nullable=True + ), + sa.Column( + "weekly_members_posting_messages", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "messages_in_public_channels", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "messages_in_private_channels", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "messages_in_shared_channels", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column("messages_in_dms", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "percent_of_messages_public_channels", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "percent_of_messages_private_channels", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "percent_of_messages_dms", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "percent_of_views_public_channels", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "percent_of_views_private_channels", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "percent_of_views_dms", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("name", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "public_channels_single_workspace", + sa.BIGINT(), + autoincrement=False, + nullable=True, + ), + sa.Column("messages_posted", sa.BIGINT(), autoincrement=False, nullable=True), + ) + op.create_table( + "wb_health_population", + *[ + sa.Column( + "country_name", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "country_code", sa.VARCHAR(length=3), autoincrement=False, nullable=True + ), + sa.Column( + "region", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "year", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "NY_GNP_PCAP_CD", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_1524_LT_FM_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_1524_LT_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_1524_LT_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_LITR_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_LITR_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ADT_LITR_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_ENR_ORPH", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_CMPT_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_CMPT_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_CMPT_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_ENRR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_ENRR_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_ENRR_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_NENR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_NENR_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_PRM_NENR_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_ENRR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_ENRR_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_ENRR_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_NENR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_NENR_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_SEC_NENR_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_TER_ENRR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_TER_ENRR_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SE_XPD_TOTL_GD_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_ANM_CHLD_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_ANM_NPRG_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_CON_1524_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_CON_1524_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_CON_AIDS_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_CON_AIDS_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_COMM_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_IMRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_INJR_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_MORT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_NCOM_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DTH_NMRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_AIDS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_AIDS_DH", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_AIDS_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_AIDS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_MORT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_MORT_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_MORT_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_DYN_NMRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_FPL_SATI_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_H2O_SAFE_RU_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_H2O_SAFE_UR_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_H2O_SAFE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_0014", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_1524_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_1524_KW_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_1524_KW_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_1524_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_ARTC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_KNOW_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_KNOW_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_ORPH", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_HIV_TOTL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_HEPB", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_HIB3", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_IBCG", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_IDPT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_MEAS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_IMM_POL3", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MED_BEDS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MED_CMHW_P3", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MED_NUMW_P3", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MED_PHYS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MLR_NETS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MLR_PREG_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MLR_SPF2_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MLR_TRET_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MMR_DTHS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MMR_LEVE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MMR_RISK", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MMR_RISK_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_MMR_WAGE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_PRG_ANEM", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_PRG_ARTC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_PRG_SYPH_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_PRV_SMOK_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_PRV_SMOK_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ACSN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ACSN_RU", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ACSN_UR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ANV4_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ANVC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ARIC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_BFED_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_BRTC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_BRTW_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_DIAB_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_IYCF_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MALN_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MALN_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MALN_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MALR", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MMRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_MMRT_NE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ORCF_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_ORTH", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OW15_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OW15_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OW15_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OWGH_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OWGH_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_OWGH_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_PNVC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_STNT_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_STNT_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_STNT_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_WAST_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_WAST_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_STA_WAST_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_SVR_WAST_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_SVR_WAST_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_SVR_WAST_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_TBS_CURE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_TBS_DTEC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_TBS_INCD", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_TBS_MORT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_TBS_PREV", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_VAC_TTNS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_EXTR_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_OOPC_TO_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_OOPC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PCAP", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PCAP_PP_KD", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PRIV", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PRIV_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PUBL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PUBL_GX_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_PUBL_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_TOTL_CD", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SH_XPD_TOTL_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SI_POV_NAHC", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SI_POV_RUHC", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SI_POV_URHC", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_EMP_INSV_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_TLF_TOTL_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_TLF_TOTL_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_UEM_TOTL_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_UEM_TOTL_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SL_UEM_TOTL_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SM_POP_NETM", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SN_ITK_DEFC", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SN_ITK_DEFC_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SN_ITK_SALT_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SN_ITK_VITA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_ADO_TFRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_AMRT_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_AMRT_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_CBRT_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_CDRT_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_CONU_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_IMRT_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_IMRT_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_IMRT_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_LE00_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_LE00_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_LE00_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_SMAM_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_SMAM_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_TFRT_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_TO65_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_TO65_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_DYN_WFRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_HOU_FEMA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_MTR_1519_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0004_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0004_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0004_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0004_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0014_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0014_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0014_TO", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0014_TO_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0509_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0509_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0509_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_0509_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1014_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1014_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1014_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1014_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1519_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1519_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1519_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1519_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1564_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1564_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1564_TO", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_1564_TO_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2024_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2024_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2024_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2024_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2529_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2529_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2529_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_2529_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3034_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3034_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3034_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3034_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3539_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3539_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3539_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_3539_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4044_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4044_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4044_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4044_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4549_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4549_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4549_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_4549_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5054_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5054_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5054_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5054_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5559_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5559_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5559_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_5559_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6064_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6064_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6064_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6064_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6569_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6569_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6569_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_6569_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_65UP_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_65UP_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_65UP_TO", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_65UP_TO_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7074_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7074_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7074_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7074_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7579_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7579_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7579_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_7579_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_80UP_FE", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_80UP_FE_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_80UP_MA", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_80UP_MA_5Y", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG00_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG00_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG01_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG01_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG02_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG02_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG03_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG03_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG04_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG04_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG05_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG05_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG06_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG06_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG07_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG07_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG08_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG08_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG09_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG09_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG10_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG10_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG11_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG11_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG12_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG12_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG13_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG13_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG14_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG14_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG15_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG15_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG16_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG16_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG17_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG17_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG18_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG18_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG19_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG19_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG20_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG20_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG21_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG21_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG22_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG22_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG23_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG23_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG24_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG24_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG25_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_AG25_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_BRTH_MF", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_DPND", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_DPND_OL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_DPND_YG", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_GROW", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_TOTL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_TOTL_FE_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_TOTL_FE_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_TOTL_MA_IN", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_POP_TOTL_MA_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_REG_BRTH_RU_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_REG_BRTH_UR_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_REG_BRTH_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_REG_DTHS_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_RUR_TOTL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_RUR_TOTL_ZG", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_RUR_TOTL_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_URB_GROW", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_URB_TOTL", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_URB_TOTL_IN_ZS", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "SP_UWT_TFRT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + ] + ) + op.create_table( + "slice_email_schedules", + sa.Column( + "created_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "changed_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("crontab", sa.VARCHAR(length=50), autoincrement=False, nullable=True), + sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("deliver_as_group", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "delivery_type", + postgresql.ENUM("attachment", "inline", name="emaildeliverytype"), + autoincrement=False, + nullable=True, + ), + sa.Column("slice_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column( + "email_format", + postgresql.ENUM("visualization", "data", name="sliceemailreportformat"), + autoincrement=False, + nullable=True, + ), + sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("slack_channel", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("uuid", postgresql.UUID(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + name="slice_email_schedules_changed_by_fk_fkey", + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + name="slice_email_schedules_created_by_fk_fkey", + ), + sa.ForeignKeyConstraint( + ["slice_id"], ["slices.id"], name="slice_email_schedules_slice_id_fkey" + ), + sa.ForeignKeyConstraint( + ["user_id"], ["ab_user.id"], name="slice_email_schedules_user_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="slice_email_schedules_pkey"), + sa.UniqueConstraint("uuid", name="uq_slice_email_schedules_uuid"), + ) + op.create_index( + "ix_slice_email_schedules_active", + "slice_email_schedules", + ["active"], + unique=False, + ) + op.create_table( + "bart_lines", + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("color", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("path_json", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("polyline", sa.TEXT(), autoincrement=False, nullable=True), + ) + op.create_table( + "sf_population_polygons", + sa.Column("zipcode", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("population", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "area", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("contour", sa.TEXT(), autoincrement=False, nullable=True), + ) + op.create_table( + "users", + sa.Column("color", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("deleted", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("has_2fa", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("id", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("is_admin", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_app_user", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_bot", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_owner", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_primary_owner", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_restricted", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "is_ultra_restricted", sa.BOOLEAN(), autoincrement=False, nullable=True + ), + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "real_name", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "team_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("tz", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "tz_label", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("tz_offset", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "updated", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + ) + op.create_table( + "birth_france_by_region", + sa.Column("DEPT_ID", sa.VARCHAR(length=10), autoincrement=False, nullable=True), + sa.Column("2003", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2004", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2005", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2006", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2007", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2008", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2009", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2010", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2011", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2012", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2013", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("2014", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("dttm", sa.DATE(), autoincrement=False, nullable=True), + ) + op.create_table( + "alert_owner", + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("alert_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["alert_id"], ["alerts.id"], name="alert_owner_alert_id_fkey" + ), + sa.ForeignKeyConstraint( + ["user_id"], ["ab_user.id"], name="alert_owner_user_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="alert_owner_pkey"), + ) + op.create_table( + "alert_logs", + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column( + "scheduled_dttm", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "dttm_start", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "dttm_end", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("alert_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("state", sa.VARCHAR(length=10), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["alert_id"], ["alerts.id"], name="alert_logs_alert_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="alert_logs_pkey"), + ) + op.create_table( + "birth_names", + sa.Column("ds", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("gender", sa.VARCHAR(length=16), autoincrement=False, nullable=True), + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("num", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("state", sa.VARCHAR(length=10), autoincrement=False, nullable=True), + sa.Column("num_boys", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("num_girls", sa.BIGINT(), autoincrement=False, nullable=True), + ) + op.create_table( + "long_lat", + sa.Column( + "LON", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "LAT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("NUMBER", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("STREET", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("UNIT", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "CITY", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "DISTRICT", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "REGION", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("POSTCODE", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "ID", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "datetime", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "occupancy", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "radius_miles", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("geohash", sa.VARCHAR(length=12), autoincrement=False, nullable=True), + sa.Column( + "delimited", sa.VARCHAR(length=60), autoincrement=False, nullable=True + ), + ) + op.create_table( + "channel_members", + sa.Column( + "channel_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "user_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + ) + op.create_table( + "messages", + sa.Column("blocks", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("bot_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "bot_profile__app_id", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bot_profile__deleted", sa.BOOLEAN(), autoincrement=False, nullable=True + ), + sa.Column( + "bot_profile__id", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bot_profile__name", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bot_profile__team_id", + sa.VARCHAR(length=255), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bot_profile__updated", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "channel_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "client_msg_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("display_as_bot", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "file_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("file_ids", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "icons__emoji", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "inviter", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "is_delayed_message", sa.BOOLEAN(), autoincrement=False, nullable=True + ), + sa.Column("is_intro", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("is_starred", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "last_read", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "latest_reply", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "old_name", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "parent_user_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "permalink", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("pinned_to", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "purpose", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("reactions", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("reply_count", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("reply_users", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("reply_users_count", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column( + "source_team", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("subscribed", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "subtype", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("team", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("text", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "thread_ts", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column("topic", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("ts", postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column("type", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column("unread_count", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("upload", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("user", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "user_team", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + sa.Column( + "username", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + ) + op.create_table( + "unicode_test", + sa.Column("phrase", sa.VARCHAR(length=500), autoincrement=False, nullable=True), + sa.Column( + "short_phrase", sa.VARCHAR(length=10), autoincrement=False, nullable=True + ), + sa.Column( + "with_missing", sa.VARCHAR(length=100), autoincrement=False, nullable=True + ), + sa.Column("dttm", sa.DATE(), autoincrement=False, nullable=True), + sa.Column( + "value", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + ) + op.create_table( + "embedded_dashboards", + sa.Column( + "created_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "changed_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("allow_domain_list", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("uuid", postgresql.UUID(), autoincrement=False, nullable=True), + sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["dashboard_id"], + ["dashboards.id"], + name="embedded_dashboards_dashboard_id_fkey", + ), + ) + op.create_table( + "covid_vaccines", + sa.Column( + "developer_or_researcher", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column("country_name", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("ioc_country_code", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "treatment_vs_vaccine", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column("product_category", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "stage_of_development", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column("date_last_updated", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "anticipated_next_steps", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column("product_description", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("clinical_trials", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("funder", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("published_results", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "clinical_trials_for_other_diseases_or_related_use", + sa.TEXT(), + autoincrement=False, + nullable=True, + ), + sa.Column( + "fda_approved_indications", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("sources", sa.TEXT(), autoincrement=False, nullable=True), + ) + op.create_table( + "alerts", + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column("label", sa.VARCHAR(length=150), autoincrement=False, nullable=False), + sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "crontab", sa.VARCHAR(length=50), autoincrement=False, nullable=False + ), + sa.Column( + "alert_type", sa.VARCHAR(length=50), autoincrement=False, nullable=True + ), + sa.Column("log_retention", sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column("grace_period", sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("slice_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column( + "last_eval_dttm", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "last_state", sa.VARCHAR(length=10), autoincrement=False, nullable=True + ), + sa.Column("slack_channel", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column( + "changed_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column( + "created_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("validator_config", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("database_id", sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column("sql", sa.TEXT(), autoincrement=False, nullable=False), + sa.Column( + "validator_type", + sa.VARCHAR(length=100), + autoincrement=False, + nullable=False, + ), + sa.ForeignKeyConstraint( + ["changed_by_fk"], ["ab_user.id"], name="alerts_ibfk_3" + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], ["ab_user.id"], name="alerts_ibfk_4" + ), + sa.ForeignKeyConstraint( + ["dashboard_id"], ["dashboards.id"], name="alerts_dashboard_id_fkey" + ), + sa.ForeignKeyConstraint( + ["database_id"], ["dbs.id"], name="alerts_database_id_fkey" + ), + sa.ForeignKeyConstraint( + ["slice_id"], ["slices.id"], name="alerts_slice_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="alerts_pkey"), + ) + op.create_index("ix_alerts_active", "alerts", ["active"], unique=False) + op.create_table( + "FCC 2018 Survey", + sa.Column("ID", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "is_software_dev", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "is_first_dev_job", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "months_job_search", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("job_pref", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "job_intr_fllstck", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_backend", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_frntend", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_mobile", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_devops", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_datasci", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_teacher", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_qa_engn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_ux_engn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_projm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_gamedev", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_infosec", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "job_intr_dataengn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("job_intr_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("when_appl_job", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "expected_earn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("job_lctn_pref", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "job_relocate", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("reasons_to_code", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "reasons_to_code_other", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column( + "rsrc_fcc", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_mdn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_so", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_edx", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_coursera", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_khan_acdm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_pluralsght", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_codeacdm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_udacity", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_udemy", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_code_wars", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_treehouse", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_hackerrank", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_frntendmstr", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_lynda", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_egghead", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "rsrc_css_tricks", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("rsrc_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "codeevnt_fcc", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_hackthn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_confs", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_workshps", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_startupwknd", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_nodeschl", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_womenwc", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_girldevit", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_coderdojo", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_meetup", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_railsbrdg", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_gamejam", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_railsgrls", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_djangogrls", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "codeevnt_wkndbtcmp", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("codeevnt_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "podcast_fcc", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_codenewbie", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_changelog", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_sedaily", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_js_jabber", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_syntaxfm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_ltcwm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_fullstckrd", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_frnthppyhr", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_codingblcks", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_shoptalk", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_devtea", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_progthrwdwn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_geekspeak", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_hanselmnts", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_talkpythonme", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_rubyrogues", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_codepenrd", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "podcast_seradio", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("podcast_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "yt_mit_ocw", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_fcc", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_computerphile", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_devtips", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_cs_dojo", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_engn_truth", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_learncodeacdm", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_lvluptuts", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_funfunfunct", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_codingtuts360", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_codingtrain", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_derekbanas", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_simplilearn", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_simpleprog", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_mozillahacks", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "yt_googledevs", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("yt_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "hours_learning", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "months_programming", sa.BIGINT(), autoincrement=False, nullable=True + ), + sa.Column( + "bootcamp_attend", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("bootcamp_name", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "bootcamp_finished", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bootcamp_have_loan", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "bootcamp_recommend", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "money_for_learning", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("age", sa.BIGINT(), autoincrement=False, nullable=True), + sa.Column("gender", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("gender_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("country_citizen", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("country_live", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "live_city_population", sa.TEXT(), autoincrement=False, nullable=True + ), + sa.Column( + "is_ethnic_minority", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("lang_at_home", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("school_degree", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("school_major", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("marital_status", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "has_finance_depends", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "has_children", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "num_children", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "do_finance_support", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "debt_amt", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "home_mrtg_has", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "home_mrtg_owe", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "student_debt_has", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "student_debt_amt", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("curr_emplymnt", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("curr_emplymnt_other", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("curr_field", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "last_yr_income", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column("communite_time", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column( + "is_self_employed", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "has_served_military", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "is_recv_disab_bnft", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "has_high_spd_ntnet", + postgresql.DOUBLE_PRECISION(precision=53), + autoincrement=False, + nullable=True, + ), + sa.Column( + "time_start", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("time_end", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("network_id", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("time_total_sec", sa.BIGINT(), autoincrement=False, nullable=True), + ) + op.create_table( + "users_channels", + sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, nullable=True), + sa.Column( + "user_id", sa.VARCHAR(length=255), autoincrement=False, nullable=True + ), + ) + op.create_table( + "dashboard_email_schedules", + sa.Column( + "created_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column( + "changed_on", postgresql.TIMESTAMP(), autoincrement=False, nullable=True + ), + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column("crontab", sa.VARCHAR(length=50), autoincrement=False, nullable=True), + sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("deliver_as_group", sa.BOOLEAN(), autoincrement=False, nullable=True), + sa.Column( + "delivery_type", + postgresql.ENUM("attachment", "inline", name="emaildeliverytype"), + autoincrement=False, + nullable=True, + ), + sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column("slack_channel", sa.TEXT(), autoincrement=False, nullable=True), + sa.Column("uuid", postgresql.UUID(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + name="dashboard_email_schedules_changed_by_fk_fkey", + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + name="dashboard_email_schedules_created_by_fk_fkey", + ), + sa.ForeignKeyConstraint( + ["dashboard_id"], + ["dashboards.id"], + name="dashboard_email_schedules_dashboard_id_fkey", + ), + sa.ForeignKeyConstraint( + ["user_id"], ["ab_user.id"], name="dashboard_email_schedules_user_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="dashboard_email_schedules_pkey"), + sa.UniqueConstraint("uuid", name="uq_dashboard_email_schedules_uuid"), + ) + op.create_index( + "ix_dashboard_email_schedules_active", + "dashboard_email_schedules", + ["active"], + unique=False, + ) + # ### end Alembic commands ###