forked from kodorvan/stcs
Merge pull request 'Updated database, added new migrations' (#31) from Alex/stcs:devel into stable
Reviewed-on: kodorvan/stcs#31
This commit is contained in:
@@ -84,7 +84,7 @@ path_separator = os
|
|||||||
# database URL. This is consumed by the user-maintained env.py script only.
|
# database URL. This is consumed by the user-maintained env.py script only.
|
||||||
# other means of configuring database URLs may be customized within the env.py
|
# other means of configuring database URLs may be customized within the env.py
|
||||||
# file.
|
# file.
|
||||||
sqlalchemy.url = sqlite+aiosqlite:///./database/db/stcs.db
|
sqlalchemy.url = sqlite+aiosqlite:///./database/dbases/stcs.db
|
||||||
|
|
||||||
|
|
||||||
[post_write_hooks]
|
[post_write_hooks]
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
"""Added column current_series
|
|
||||||
|
|
||||||
Revision ID: 0ee52ab23e66
|
|
||||||
Revises: e5d612e44563
|
|
||||||
Create Date: 2025-10-26 11:48:48.055031
|
|
||||||
|
|
||||||
"""
|
|
||||||
from typing import Sequence, Union
|
|
||||||
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision: str = '0ee52ab23e66'
|
|
||||||
down_revision: Union[str, Sequence[str], None] = 'e5d612e44563'
|
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade() -> None:
|
|
||||||
"""Upgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('user_deals', sa.Column('current_series', sa.Integer(), nullable=True))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
|
||||||
"""Downgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('user_deals', 'current_series')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
"""Added TP_SL and PNL
|
|
||||||
|
|
||||||
Revision ID: 3fca121b7554
|
|
||||||
Revises: adf3d2991896
|
|
||||||
Create Date: 2025-10-29 11:07:45.350771
|
|
||||||
|
|
||||||
"""
|
|
||||||
from typing import Sequence, Union
|
|
||||||
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy import inspect
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision: str = '3fca121b7554'
|
|
||||||
down_revision: Union[str, Sequence[str], None] = 'adf3d2991896'
|
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade() -> None:
|
|
||||||
"""Upgrade schema."""
|
|
||||||
conn = op.get_bind()
|
|
||||||
inspector = inspect(conn)
|
|
||||||
|
|
||||||
columns = [col['name'] for col in inspector.get_columns('user_deals')]
|
|
||||||
|
|
||||||
if 'pnl_series' not in columns:
|
|
||||||
op.add_column('user_deals', sa.Column('pnl_series', sa.Float(), nullable=True))
|
|
||||||
if 'take_profit' not in columns:
|
|
||||||
op.add_column('user_deals', sa.Column('take_profit', sa.Boolean(), nullable=False, server_default=sa.false()))
|
|
||||||
if 'stop_loss' not in columns:
|
|
||||||
op.add_column('user_deals', sa.Column('stop_loss', sa.Boolean(), nullable=False, server_default=sa.false()))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
|
||||||
"""Downgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('user_deals', 'stop_loss')
|
|
||||||
op.drop_column('user_deals', 'take_profit')
|
|
||||||
op.drop_column('user_deals', 'pnl_series')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
"""Fixed TP_SL type
|
|
||||||
|
|
||||||
Revision ID: 8329c0994b26
|
|
||||||
Revises: 3fca121b7554
|
|
||||||
Create Date: 2025-10-29 13:07:52.161139
|
|
||||||
|
|
||||||
"""
|
|
||||||
from typing import Sequence, Union
|
|
||||||
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision: str = '8329c0994b26'
|
|
||||||
down_revision: Union[str, Sequence[str], None] = '3fca121b7554'
|
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
with op.batch_alter_table('user_deals', recreate='always') as batch_op:
|
|
||||||
# Добавляем новую колонку с нужным типом
|
|
||||||
batch_op.add_column(sa.Column('take_profit_new', sa.Float(), nullable=False, server_default='0'))
|
|
||||||
|
|
||||||
# После закрытия batch создается и переименовывается таблица.
|
|
||||||
# Теперь мы можем обновить данные.
|
|
||||||
op.execute(
|
|
||||||
"UPDATE user_deals SET take_profit_new = CAST(take_profit AS FLOAT)"
|
|
||||||
)
|
|
||||||
|
|
||||||
with op.batch_alter_table('user_deals', recreate='always') as batch_op:
|
|
||||||
# Удаляем старую колонку
|
|
||||||
batch_op.drop_column('take_profit')
|
|
||||||
# Меняем имя новой колонки на старое
|
|
||||||
batch_op.alter_column('take_profit_new', new_column_name='take_profit')
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# Аналогично, но в обратном порядке и типе
|
|
||||||
with op.batch_alter_table('user_deals', recreate='always') as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('take_profit_old', sa.Boolean(), nullable=False, server_default='0'))
|
|
||||||
|
|
||||||
op.execute(
|
|
||||||
"UPDATE user_deals SET take_profit_old = CAST(take_profit AS BOOLEAN)"
|
|
||||||
)
|
|
||||||
|
|
||||||
with op.batch_alter_table('user_deals', recreate='always') as batch_op:
|
|
||||||
batch_op.drop_column('take_profit')
|
|
||||||
batch_op.alter_column('take_profit_old', new_column_name='take_profit')
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
"""Added column commission_place
|
|
||||||
|
|
||||||
Revision ID: adf3d2991896
|
|
||||||
Revises: 0ee52ab23e66
|
|
||||||
Create Date: 2025-10-26 13:37:33.662318
|
|
||||||
|
|
||||||
"""
|
|
||||||
from typing import Sequence, Union
|
|
||||||
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy import inspect
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision: str = 'adf3d2991896'
|
|
||||||
down_revision: Union[str, Sequence[str], None] = '0ee52ab23e66'
|
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade() -> None:
|
|
||||||
"""Upgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
bind = op.get_bind()
|
|
||||||
inspector = inspect(bind)
|
|
||||||
columns_user_deals = [col['name'] for col in inspector.get_columns('user_deals')]
|
|
||||||
if 'commission_fee' not in columns_user_deals:
|
|
||||||
op.add_column('user_deals', sa.Column('commission_fee', sa.String(), server_default='', nullable=True))
|
|
||||||
if 'commission_place' not in columns_user_deals:
|
|
||||||
op.add_column('user_deals', sa.Column('commission_place', sa.String(), server_default='', nullable=True))
|
|
||||||
|
|
||||||
columns_user_risk_mgmt = [col['name'] for col in inspector.get_columns('user_risk_management')]
|
|
||||||
if 'commission_place' not in columns_user_risk_mgmt:
|
|
||||||
op.add_column('user_risk_management',
|
|
||||||
sa.Column('commission_place', sa.String(), server_default='', nullable=False))
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
|
||||||
"""Downgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('user_risk_management', 'commission_place')
|
|
||||||
op.drop_column('user_deals', 'commission_place')
|
|
||||||
op.drop_column('user_deals', 'commission_fee')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
"""Added side_mode column
|
"""Create new database
|
||||||
|
|
||||||
Revision ID: fbf4e3658310
|
Revision ID: dd8d3ee75389
|
||||||
Revises:
|
Revises:
|
||||||
Create Date: 2025-10-22 13:08:02.317419
|
Create Date: 2025-11-09 15:16:52.424676
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from typing import Sequence, Union
|
from typing import Sequence, Union
|
||||||
@@ -12,7 +12,7 @@ import sqlalchemy as sa
|
|||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
# revision identifiers, used by Alembic.
|
||||||
revision: str = 'fbf4e3658310'
|
revision: str = 'dd8d3ee75389'
|
||||||
down_revision: Union[str, Sequence[str], None] = None
|
down_revision: Union[str, Sequence[str], None] = None
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
@@ -21,12 +21,12 @@ depends_on: Union[str, Sequence[str], None] = None
|
|||||||
def upgrade() -> None:
|
def upgrade() -> None:
|
||||||
"""Upgrade schema."""
|
"""Upgrade schema."""
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
op.add_column('user_deals', sa.Column('side_mode', sa.String(), nullable=True))
|
pass
|
||||||
# ### end Alembic commands ###
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
def downgrade() -> None:
|
||||||
"""Downgrade schema."""
|
"""Downgrade schema."""
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
op.drop_column('user_deals', 'side_mode')
|
pass
|
||||||
# ### end Alembic commands ###
|
# ### end Alembic commands ###
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
"""Added column side for additional_setiings
|
|
||||||
|
|
||||||
Revision ID: e5d612e44563
|
|
||||||
Revises: fbf4e3658310
|
|
||||||
Create Date: 2025-10-25 18:25:52.746250
|
|
||||||
|
|
||||||
"""
|
|
||||||
from typing import Sequence, Union
|
|
||||||
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision: str = 'e5d612e44563'
|
|
||||||
down_revision: Union[str, Sequence[str], None] = 'fbf4e3658310'
|
|
||||||
branch_labels: Union[str, Sequence[str], None] = None
|
|
||||||
depends_on: Union[str, Sequence[str], None] = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade() -> None:
|
|
||||||
"""Upgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('user_additional_settings',
|
|
||||||
sa.Column('side', sa.String(), nullable=False, server_default='')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
|
||||||
"""Downgrade schema."""
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('user_additional_settings', 'side')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -10,7 +10,7 @@ logging.config.dictConfig(LOGGING_CONFIG)
|
|||||||
logger = logging.getLogger("database")
|
logger = logging.getLogger("database")
|
||||||
|
|
||||||
BASE_DIR = Path(__file__).parent.resolve()
|
BASE_DIR = Path(__file__).parent.resolve()
|
||||||
DATA_DIR = BASE_DIR / "db"
|
DATA_DIR = BASE_DIR / "dbases"
|
||||||
DATA_DIR.mkdir(parents=True, exist_ok=True)
|
DATA_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
DATABASE_URL = f"sqlite+aiosqlite:///{DATA_DIR / 'stcs.db'}"
|
DATABASE_URL = f"sqlite+aiosqlite:///{DATA_DIR / 'stcs.db'}"
|
||||||
|
|||||||
Reference in New Issue
Block a user