"""initial

Revision ID: 3c651a0d1fe0
Revises:
Create Date: 2023-10-27 18:19:47.402501

"""
import random
import time
from datetime import datetime, timedelta

from alembic import op
import sqlalchemy as sa

# revision identifiers, used by Alembic.
revision = '3c651a0d1fe0'
down_revision = None
branch_labels = None
depends_on = None

def generate_normal_random(mean, std_dev):
    return int(random.gauss(mean, std_dev))
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('camera',
                    sa.Column('camera_type', sa.String(), nullable=False),
                    sa.Column('order_numb', sa.Integer(), nullable=True),
                    sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
                    sa.Column('created_at', sa.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'),
                              nullable=False),
                    sa.Column('updated_at', sa.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'),
                              nullable=False),
                    sa.PrimaryKeyConstraint('id', name=op.f('pk_camera')),
                    sa.UniqueConstraint('id', name=op.f('uq_camera_id')),
                    sa.UniqueConstraint('order_numb', name=op.f('uq_camera_order_numb'))
                    )
    op.create_table('conveer',
                    sa.Column('wood', sa.Integer(), nullable=True),
                    sa.Column('metal', sa.Integer(), nullable=True),
                    sa.Column('glass', sa.Integer(), nullable=True),
                    sa.Column('plastic', sa.Integer(), nullable=True),
                    sa.Column('camera_id', sa.Integer(), nullable=False),
                    sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
                    sa.Column('created_at', sa.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'),
                              nullable=False),
                    sa.Column('updated_at', sa.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'),
                              nullable=False),
                    sa.ForeignKeyConstraint(['camera_id'], ['camera.id'], name=op.f('fk_conveer_camera_id_camera')),
                    sa.PrimaryKeyConstraint('id', name=op.f('pk_conveer')),
                    sa.UniqueConstraint('id', name=op.f('uq_conveer_id'))
                    )
    op.execute('''INSERT INTO camera(id,order_numb, camera_type) VALUES (1,1, 'По умолчанию')''')
    import random
    from datetime import datetime, timedelta

    # Устанавливаем параметры нормального распределения
    mean_metal = 10  # Среднее значение для металла
    std_dev_metal = 3  # Стандартное отклонение для металла

    mean_glass = 5  # Среднее значение для стекла
    std_dev_glass = 2  # Стандартное отклонение для стекла

    mean_plastic = 7.5  # Среднее значение для пластика
    std_dev_plastic = 2.5  # Стандартное отклонение для пластика

    mean_wood = 15  # Среднее значение для дерева
    std_dev_wood = 5  # Стандартное отклонение для дерева

    for _ in range(0, 10):
        random_date = datetime.now() - timedelta(days=random.randint(1, 365))

        # Генерируем случайные значения, следующие нормальному распределению
        metal = generate_normal_random(mean_metal, std_dev_metal)
        glass = generate_normal_random(mean_glass, std_dev_glass)
        plastic = generate_normal_random(mean_plastic, std_dev_plastic)
        wood = generate_normal_random(mean_wood, std_dev_wood)

        # Далее вы можете выполнить ваш SQL-запрос с этими случайными значениями
        op.execute(f'''INSERT INTO conveer (metal, glass, plastic, wood, camera_id, created_at)
                     VALUES ({metal}, {glass}, {plastic}, {wood}, 1, '{random_date}');''')


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('conveer')
    op.drop_table('camera')
    # ### end Alembic commands ###
