broke
This commit is contained in:
@ -2,32 +2,30 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
import json
|
||||
import importlib
|
||||
|
||||
from logging.config import fileConfig
|
||||
from sqlalchemy import create_engine, pool
|
||||
from alembic import context
|
||||
|
||||
# ─── Ensure we can load .env and app code ────────────────────────────────────
|
||||
# ─── Suppress harmless warnings about FK cycles ───────────────────────────────
|
||||
warnings.filterwarnings(
|
||||
"ignore",
|
||||
r"Cannot correctly sort tables; there are unresolvable cycles between tables.*"
|
||||
)
|
||||
|
||||
# ─── Ensure project root is on sys.path ──────────────────────────────────────
|
||||
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||||
sys.path.insert(0, project_root)
|
||||
|
||||
# ─── Load .env (so MYSQL_* and other vars are available) ─────────────────────
|
||||
# ─── Load environment vars so DB URL is available ────────────────────────────
|
||||
from dotenv import load_dotenv, find_dotenv
|
||||
dotenv_path = find_dotenv() # looks in project root or parents
|
||||
if dotenv_path:
|
||||
load_dotenv(dotenv_path, override=True)
|
||||
dotenv = find_dotenv()
|
||||
if dotenv:
|
||||
load_dotenv(dotenv, override=True)
|
||||
|
||||
# ─── Alembic Config & Logging ────────────────────────────────────────────────
|
||||
config = context.config
|
||||
fileConfig(config.config_file_name)
|
||||
|
||||
# ─── Import your app’s metadata for 'autogenerate' support ─────────────────
|
||||
from app import db
|
||||
target_metadata = db.metadata
|
||||
|
||||
# ─── Dynamically import all plugin models listed in plugin.json ─────────────
|
||||
# ─── Dynamically import every plugin’s models *before* capturing metadata ────
|
||||
plugins_dir = os.path.join(project_root, "plugins")
|
||||
for plugin in sorted(os.listdir(plugins_dir)):
|
||||
manifest = os.path.join(plugins_dir, plugin, "plugin.json")
|
||||
@ -37,7 +35,6 @@ for plugin in sorted(os.listdir(plugins_dir)):
|
||||
meta = json.load(open(manifest))
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
for model_mod in meta.get("models", []):
|
||||
try:
|
||||
importlib.import_module(model_mod)
|
||||
@ -50,59 +47,70 @@ for plugin in sorted(os.listdir(plugins_dir)):
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# ─── Build or retrieve the database URL ──────────────────────────────────────
|
||||
def get_database_url():
|
||||
# 1) alembic.ini setting
|
||||
# ─── Alembic config & logging ────────────────────────────────────────────────
|
||||
config = context.config
|
||||
fileConfig(config.config_file_name)
|
||||
|
||||
# ─── Now import the application’s metadata ───────────────────────────────────
|
||||
from app import db
|
||||
target_metadata = db.metadata
|
||||
|
||||
# ─── Hook to skip unwanted objects (never drop tables) ───────────────────────
|
||||
def include_object(obj, name, type_, reflected, compare_to):
|
||||
# skip tables present in DB but not in models
|
||||
if type_ == "table" and reflected and compare_to is None:
|
||||
return False
|
||||
# skip constraints & indexes
|
||||
if type_ in ("foreign_key_constraint", "unique_constraint", "index"):
|
||||
return False
|
||||
return True
|
||||
|
||||
# ─── Helper to build the DB URL ───────────────────────────────────────────────
|
||||
def get_url():
|
||||
url = config.get_main_option("sqlalchemy.url")
|
||||
if url:
|
||||
return url
|
||||
|
||||
# 2) Generic DATABASE_URL env var
|
||||
return url.strip()
|
||||
url = os.environ.get("DATABASE_URL")
|
||||
if url:
|
||||
return url
|
||||
u = os.environ.get("MYSQL_USER")
|
||||
p = os.environ.get("MYSQL_PASSWORD")
|
||||
h = os.environ.get("MYSQL_HOST", "db")
|
||||
pt= os.environ.get("MYSQL_PORT", "3306")
|
||||
dbn= os.environ.get("MYSQL_DATABASE")
|
||||
if u and p and dbn:
|
||||
return f"mysql+pymysql://{u}:{p}@{h}:{pt}/{dbn}"
|
||||
raise RuntimeError("No DB URL configured")
|
||||
|
||||
# 3) MySQL env vars (from .env or docker-compose)
|
||||
user = os.environ.get("MYSQL_USER")
|
||||
pwd = os.environ.get("MYSQL_PASSWORD")
|
||||
host = os.environ.get("MYSQL_HOST", "db")
|
||||
port = os.environ.get("MYSQL_PORT", "3306")
|
||||
dbn = os.environ.get("MYSQL_DATABASE")
|
||||
if user and pwd and dbn:
|
||||
return f"mysql+pymysql://{user}:{pwd}@{host}:{port}/{dbn}"
|
||||
|
||||
raise RuntimeError(
|
||||
"Database URL not configured for Alembic migrations; "
|
||||
"set 'sqlalchemy.url' in alembic.ini, or DATABASE_URL, "
|
||||
"or MYSQL_USER/MYSQL_PASSWORD/MYSQL_DATABASE in the environment"
|
||||
)
|
||||
|
||||
# ─── Offline migration ───────────────────────────────────────────────────────
|
||||
# ─── Offline migrations ──────────────────────────────────────────────────────
|
||||
def run_migrations_offline():
|
||||
url = get_database_url()
|
||||
context.configure(
|
||||
url=url,
|
||||
url=get_url(),
|
||||
target_metadata=target_metadata,
|
||||
literal_binds=True,
|
||||
dialect_opts={"paramstyle": "named"},
|
||||
compare_type=True,
|
||||
compare_server_default=True,
|
||||
include_object=include_object,
|
||||
)
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
# ─── Online migration ────────────────────────────────────────────────────────
|
||||
# ─── Online migrations ───────────────────────────────────────────────────────
|
||||
def run_migrations_online():
|
||||
url = get_database_url()
|
||||
connectable = create_engine(url, poolclass=pool.NullPool)
|
||||
with connectable.connect() as connection:
|
||||
engine = create_engine(get_url(), poolclass=pool.NullPool)
|
||||
with engine.connect() as conn:
|
||||
context.configure(
|
||||
connection=connection,
|
||||
connection=conn,
|
||||
target_metadata=target_metadata,
|
||||
compare_type=True,
|
||||
compare_server_default=True,
|
||||
include_object=include_object,
|
||||
)
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
# ─── Entrypoint ─────────────────────────────────────────────────────────────
|
||||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 01876f89899b
|
||||
Revises: a69f613f9cd5
|
||||
Create Date: 2025-06-28 08:15:57.708963
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '01876f89899b'
|
||||
down_revision = 'a69f613f9cd5'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 03650b9a0f3a
|
||||
Revises: 85b7ca21ec19
|
||||
Create Date: 2025-06-28 07:57:56.370633
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '03650b9a0f3a'
|
||||
down_revision = '85b7ca21ec19'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 0514fb24a61e
|
||||
Revises: fe0ebdec3255
|
||||
Create Date: 2025-06-28 09:25:58.833912
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0514fb24a61e'
|
||||
down_revision = 'fe0ebdec3255'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 06234a515bde
|
||||
Revises: 87c6df96bef3
|
||||
Create Date: 2025-06-30 09:44:06.865642
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '06234a515bde'
|
||||
down_revision = '87c6df96bef3'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 076bfc1a441b
|
||||
Revises: 7229fe50de09
|
||||
Create Date: 2025-06-30 08:22:10.087506
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '076bfc1a441b'
|
||||
down_revision = '7229fe50de09'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 08ebb5577232
|
||||
Revises: 0efc1a18285f
|
||||
Create Date: 2025-06-28 09:34:14.207419
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '08ebb5577232'
|
||||
down_revision = '0efc1a18285f'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 0964777a3294
|
||||
Revises: 53d0e3d0cd47
|
||||
Create Date: 2025-06-30 09:37:40.005273
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0964777a3294'
|
||||
down_revision = '53d0e3d0cd47'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 0efc1a18285f
|
||||
Revises: 886aa234b3b7
|
||||
Create Date: 2025-06-28 09:30:43.185721
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0efc1a18285f'
|
||||
down_revision = '886aa234b3b7'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 10e39b33d4e7
|
||||
Revises: ee4be515bb55
|
||||
Create Date: 2025-06-30 10:06:13.159708
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '10e39b33d4e7'
|
||||
down_revision = 'ee4be515bb55'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 12cc29f97b11
|
||||
Revises: dcc114909948
|
||||
Create Date: 2025-06-30 07:59:46.612023
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '12cc29f97b11'
|
||||
down_revision = 'dcc114909948'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 12ef820b5618
|
||||
Revises: 228e71f1a33b
|
||||
Create Date: 2025-06-30 08:45:15.427549
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '12ef820b5618'
|
||||
down_revision = '228e71f1a33b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 19e2a1b15b5e
|
||||
Revises: f00a9585a348
|
||||
Create Date: 2025-06-27 22:59:54.162560
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '19e2a1b15b5e'
|
||||
down_revision = 'f00a9585a348'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 209596f02c2a
|
||||
Revises: 42ce181f4eab
|
||||
Create Date: 2025-06-27 09:50:03.962692
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '209596f02c2a'
|
||||
down_revision = '42ce181f4eab'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 228e71f1a33b
|
||||
Revises: 493fbb46e881
|
||||
Create Date: 2025-06-30 08:40:05.646744
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '228e71f1a33b'
|
||||
down_revision = '493fbb46e881'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,36 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 24de4aa78a43
|
||||
Revises: 4082065b932b
|
||||
Create Date: 2025-06-28 23:24:05.909001
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '24de4aa78a43'
|
||||
down_revision = '4082065b932b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('zip_jobs',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('filename', sa.String(length=255), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(), nullable=True),
|
||||
sa.Column('status', sa.String(length=20), nullable=True),
|
||||
sa.Column('error', sa.Text(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('zip_jobs')
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 27f1b3976f3f
|
||||
Revises: 10e39b33d4e7
|
||||
Create Date: 2025-06-30 10:09:47.442196
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '27f1b3976f3f'
|
||||
down_revision = '10e39b33d4e7'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 2d11e31941d9
|
||||
Revises: acd3093204e7
|
||||
Create Date: 2025-06-30 07:45:03.061969
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '2d11e31941d9'
|
||||
down_revision = 'acd3093204e7'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 30376c514135
|
||||
Revises: 01876f89899b
|
||||
Create Date: 2025-06-28 08:20:23.577743
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '30376c514135'
|
||||
down_revision = '01876f89899b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 310f500a3d2f
|
||||
Revises: d49ee8d82364
|
||||
Create Date: 2025-06-30 10:13:54.468427
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '310f500a3d2f'
|
||||
down_revision = 'd49ee8d82364'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 390c977fe679
|
||||
Revises: c23c31ae3a1d
|
||||
Create Date: 2025-06-28 08:34:18.914877
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '390c977fe679'
|
||||
down_revision = 'c23c31ae3a1d'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 4082065b932b
|
||||
Revises: 08ebb5577232
|
||||
Create Date: 2025-06-28 09:41:11.323777
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '4082065b932b'
|
||||
down_revision = '08ebb5577232'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 42ce181f4eab
|
||||
Revises: 93f8a5cbc643
|
||||
Create Date: 2025-06-27 09:47:28.698481
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '42ce181f4eab'
|
||||
down_revision = '93f8a5cbc643'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 493fbb46e881
|
||||
Revises: faeca4f53b04
|
||||
Create Date: 2025-06-30 08:28:50.667633
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '493fbb46e881'
|
||||
down_revision = 'faeca4f53b04'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 51640ecd70ee
|
||||
Revises: 390c977fe679
|
||||
Create Date: 2025-06-28 08:35:37.016653
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '51640ecd70ee'
|
||||
down_revision = '390c977fe679'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 53d0e3d0cd47
|
||||
Revises: c6fad4522e3c
|
||||
Create Date: 2025-06-30 09:32:22.487970
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '53d0e3d0cd47'
|
||||
down_revision = 'c6fad4522e3c'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 7229fe50de09
|
||||
Revises: 12cc29f97b11
|
||||
Create Date: 2025-06-30 08:20:50.414985
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '7229fe50de09'
|
||||
down_revision = '12cc29f97b11'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 807ca973d0cf
|
||||
Revises: 51640ecd70ee
|
||||
Create Date: 2025-06-28 08:46:56.744709
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '807ca973d0cf'
|
||||
down_revision = '51640ecd70ee'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 85b7ca21ec19
|
||||
Revises: 8c1e8db7b3cb
|
||||
Create Date: 2025-06-27 23:34:04.669553
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '85b7ca21ec19'
|
||||
down_revision = '8c1e8db7b3cb'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 87c6df96bef3
|
||||
Revises: f34b5e058563
|
||||
Create Date: 2025-06-30 09:43:22.353321
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '87c6df96bef3'
|
||||
down_revision = 'f34b5e058563'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 886aa234b3b7
|
||||
Revises: 0514fb24a61e
|
||||
Create Date: 2025-06-28 09:27:59.962665
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '886aa234b3b7'
|
||||
down_revision = '0514fb24a61e'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 892da654697c
|
||||
Revises: f7f41136c073
|
||||
Create Date: 2025-06-28 08:56:06.592485
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '892da654697c'
|
||||
down_revision = 'f7f41136c073'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 8c1e8db7b3cb
|
||||
Revises: 19e2a1b15b5e
|
||||
Create Date: 2025-06-27 23:21:19.031362
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '8c1e8db7b3cb'
|
||||
down_revision = '19e2a1b15b5e'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 93f8a5cbc643
|
||||
Revises: 9cc2626a6e79
|
||||
Create Date: 2025-06-27 09:31:27.528072
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '93f8a5cbc643'
|
||||
down_revision = '9cc2626a6e79'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: 9cc2626a6e79
|
||||
Revises: d54a88422a68
|
||||
Create Date: 2025-06-27 09:28:40.656166
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '9cc2626a6e79'
|
||||
down_revision = 'd54a88422a68'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: a5cb08298ee4
|
||||
Revises: 0964777a3294
|
||||
Create Date: 2025-06-30 09:40:06.234651
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a5cb08298ee4'
|
||||
down_revision = '0964777a3294'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: a69f613f9cd5
|
||||
Revises: a87d4c1df4e5
|
||||
Create Date: 2025-06-28 08:13:00.288626
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a69f613f9cd5'
|
||||
down_revision = 'a87d4c1df4e5'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,39 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: a79453aefa45
|
||||
Revises: 892da654697c
|
||||
Create Date: 2025-06-28 09:18:37.918669
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a79453aefa45'
|
||||
down_revision = '892da654697c'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('analytics_event',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('timestamp', sa.DateTime(), nullable=False),
|
||||
sa.Column('method', sa.String(length=10), nullable=False),
|
||||
sa.Column('path', sa.String(length=200), nullable=False),
|
||||
sa.Column('status_code', sa.Integer(), nullable=False),
|
||||
sa.Column('response_time', sa.Float(), nullable=False),
|
||||
sa.Column('user_agent', sa.String(length=200), nullable=True),
|
||||
sa.Column('referer', sa.String(length=200), nullable=True),
|
||||
sa.Column('accept_language', sa.String(length=200), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('analytics_event')
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: a87d4c1df4e5
|
||||
Revises: 03650b9a0f3a
|
||||
Create Date: 2025-06-28 08:04:13.547254
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a87d4c1df4e5'
|
||||
down_revision = '03650b9a0f3a'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: acd3093204e7
|
||||
Revises: f741addef1a1
|
||||
Create Date: 2025-06-30 07:29:07.401797
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'acd3093204e7'
|
||||
down_revision = 'f741addef1a1'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: b1e37dc718f2
|
||||
Revises: c92477263320
|
||||
Create Date: 2025-06-30 09:46:40.791979
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b1e37dc718f2'
|
||||
down_revision = 'c92477263320'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: b56cd5e57987
|
||||
Revises: a79453aefa45
|
||||
Create Date: 2025-06-28 09:20:55.842491
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b56cd5e57987'
|
||||
down_revision = 'a79453aefa45'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: b57c767ad0d6
|
||||
Revises: 310f500a3d2f
|
||||
Create Date: 2025-06-30 10:15:24.093788
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b57c767ad0d6'
|
||||
down_revision = '310f500a3d2f'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: b684611b27b1
|
||||
Revises: 12ef820b5618
|
||||
Create Date: 2025-06-30 08:51:21.461638
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b684611b27b1'
|
||||
down_revision = '12ef820b5618'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,36 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: c23c31ae3a1d
|
||||
Revises: 30376c514135
|
||||
Create Date: 2025-06-28 08:31:46.351949
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'c23c31ae3a1d'
|
||||
down_revision = '30376c514135'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('users', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('is_deleted', sa.Boolean(), nullable=False))
|
||||
batch_op.add_column(sa.Column('is_banned', sa.Boolean(), nullable=False))
|
||||
batch_op.add_column(sa.Column('suspended_until', sa.DateTime(), nullable=True))
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('users', schema=None) as batch_op:
|
||||
batch_op.drop_column('suspended_until')
|
||||
batch_op.drop_column('is_banned')
|
||||
batch_op.drop_column('is_deleted')
|
||||
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: c6fad4522e3c
|
||||
Revises: dd2492e0ede0
|
||||
Create Date: 2025-06-30 09:30:35.084623
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'c6fad4522e3c'
|
||||
down_revision = 'dd2492e0ede0'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: c92477263320
|
||||
Revises: fa34eb3f6084
|
||||
Create Date: 2025-06-30 09:45:35.016682
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'c92477263320'
|
||||
down_revision = 'fa34eb3f6084'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: d49ee8d82364
|
||||
Revises: 27f1b3976f3f
|
||||
Create Date: 2025-06-30 10:12:13.065540
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'd49ee8d82364'
|
||||
down_revision = '27f1b3976f3f'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: d54a88422a68
|
||||
Revises: d7bbffbbc931
|
||||
Create Date: 2025-06-27 09:24:27.947480
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'd54a88422a68'
|
||||
down_revision = 'd7bbffbbc931'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: d647dd4d3fbd
|
||||
Revises: b684611b27b1
|
||||
Create Date: 2025-06-30 08:54:56.276182
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'd647dd4d3fbd'
|
||||
down_revision = 'b684611b27b1'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,32 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: d7bbffbbc931
|
||||
Revises:
|
||||
Create Date: 2025-06-27 09:20:35.600333
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'd7bbffbbc931'
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('grow_logs', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('event_type', sa.String(length=50), nullable=False))
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('grow_logs', schema=None) as batch_op:
|
||||
batch_op.drop_column('event_type')
|
||||
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: dcc114909948
|
||||
Revises: 2d11e31941d9
|
||||
Create Date: 2025-06-30 07:49:55.919638
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'dcc114909948'
|
||||
down_revision = '2d11e31941d9'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: dd2492e0ede0
|
||||
Revises: d647dd4d3fbd
|
||||
Create Date: 2025-06-30 09:18:20.337888
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'dd2492e0ede0'
|
||||
down_revision = 'd647dd4d3fbd'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: ee4be515bb55
|
||||
Revises: b1e37dc718f2
|
||||
Create Date: 2025-06-30 09:57:22.706206
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'ee4be515bb55'
|
||||
down_revision = 'b1e37dc718f2'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: f00a9585a348
|
||||
Revises: 209596f02c2a
|
||||
Create Date: 2025-06-27 09:55:08.249023
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f00a9585a348'
|
||||
down_revision = '209596f02c2a'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: f34b5e058563
|
||||
Revises: a5cb08298ee4
|
||||
Create Date: 2025-06-30 09:40:49.692944
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f34b5e058563'
|
||||
down_revision = 'a5cb08298ee4'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,59 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: f741addef1a1
|
||||
Revises: 24de4aa78a43
|
||||
Create Date: 2025-06-29 10:16:35.487343
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f741addef1a1'
|
||||
down_revision = '24de4aa78a43'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('update_images')
|
||||
op.drop_table('plant_updates')
|
||||
with op.batch_alter_table('grow_logs', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('media_id', sa.Integer(), nullable=True))
|
||||
batch_op.create_foreign_key(None, 'media', ['media_id'], ['id'])
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('grow_logs', schema=None) as batch_op:
|
||||
batch_op.drop_constraint(None, type_='foreignkey')
|
||||
batch_op.drop_column('media_id')
|
||||
|
||||
op.create_table('plant_updates',
|
||||
sa.Column('id', mysql.INTEGER(), autoincrement=True, nullable=False),
|
||||
sa.Column('growlog_id', mysql.INTEGER(), autoincrement=False, nullable=False),
|
||||
sa.Column('description', mysql.TEXT(), nullable=True),
|
||||
sa.Column('created_at', mysql.DATETIME(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['growlog_id'], ['grow_logs.id'], name=op.f('plant_updates_ibfk_1')),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_collate='utf8mb4_0900_ai_ci',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('update_images',
|
||||
sa.Column('id', mysql.INTEGER(), autoincrement=True, nullable=False),
|
||||
sa.Column('update_id', mysql.INTEGER(), autoincrement=False, nullable=False),
|
||||
sa.Column('media_id', mysql.INTEGER(), autoincrement=False, nullable=False),
|
||||
sa.Column('created_at', mysql.DATETIME(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['media_id'], ['media.id'], name=op.f('update_images_ibfk_2')),
|
||||
sa.ForeignKeyConstraint(['update_id'], ['plant_updates.id'], name=op.f('update_images_ibfk_1')),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_collate='utf8mb4_0900_ai_ci',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: f7f41136c073
|
||||
Revises: 807ca973d0cf
|
||||
Create Date: 2025-06-28 08:50:28.814054
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f7f41136c073'
|
||||
down_revision = '807ca973d0cf'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: f81a9a44a7fb
|
||||
Revises: b56cd5e57987
|
||||
Create Date: 2025-06-28 09:22:10.689435
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'f81a9a44a7fb'
|
||||
down_revision = 'b56cd5e57987'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: fa34eb3f6084
|
||||
Revises: 06234a515bde
|
||||
Create Date: 2025-06-30 09:44:53.445644
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'fa34eb3f6084'
|
||||
down_revision = '06234a515bde'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: faeca4f53b04
|
||||
Revises: 076bfc1a441b
|
||||
Create Date: 2025-06-30 08:27:15.001657
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'faeca4f53b04'
|
||||
down_revision = '076bfc1a441b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -1,28 +0,0 @@
|
||||
"""auto-migrate
|
||||
|
||||
Revision ID: fe0ebdec3255
|
||||
Revises: f81a9a44a7fb
|
||||
Create Date: 2025-06-28 09:23:36.801994
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'fe0ebdec3255'
|
||||
down_revision = 'f81a9a44a7fb'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
pass
|
||||
# ### end Alembic commands ###
|
Reference in New Issue
Block a user