mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-01 15:37:32 +08:00
Merge pull request #18267 from jdavcs/231_ts_migration
[23.1] Add missing TS migration
This commit is contained in:
@@ -92,7 +92,7 @@ class APIKeys(Base):
|
||||
user_id = Column(ForeignKey("galaxy_user.id"), index=True)
|
||||
key = Column(TrimmedString(32), index=True, unique=True)
|
||||
user = relationship("User", back_populates="api_keys")
|
||||
deleted = Column(Boolean, index=True, default=False)
|
||||
deleted = Column(Boolean, index=True, default=False, nullable=False)
|
||||
|
||||
|
||||
class User(Base, Dictifiable):
|
||||
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
"""add non-nullable column deleted to API keys
|
||||
|
||||
Revision ID: 1b5bf427db25
|
||||
Revises: 969bbf7bcc29
|
||||
Create Date: 2024-05-29 21:53:53.516506
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
from sqlalchemy import (
|
||||
Boolean,
|
||||
Column,
|
||||
false,
|
||||
ForeignKey,
|
||||
func,
|
||||
Integer,
|
||||
select,
|
||||
)
|
||||
|
||||
from galaxy.model.database_object_names import build_index_name
|
||||
from galaxy.model.migrations.util import (
|
||||
add_column,
|
||||
drop_column,
|
||||
drop_index,
|
||||
transaction,
|
||||
)
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "1b5bf427db25"
|
||||
down_revision = "969bbf7bcc29"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
# database object names used in this revision
|
||||
table_name = "api_keys"
|
||||
column_name = "deleted"
|
||||
index_name = build_index_name(table_name, column_name)
|
||||
|
||||
|
||||
def upgrade():
|
||||
with transaction():
|
||||
# Add a deleted column
|
||||
add_column(table_name, Column(column_name, Boolean(), nullable=False, index=True, server_default=false()))
|
||||
table = sa.sql.table(
|
||||
table_name,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column("user_id", ForeignKey("galaxy_user.id"), index=True),
|
||||
Column(column_name, Boolean, index=True, default=False),
|
||||
)
|
||||
# Set everything to deleted
|
||||
op.execute(table.update().values(deleted=True))
|
||||
# Select the latest api keys
|
||||
s = select(func.max(table.c.id)).group_by(table.c.user_id)
|
||||
# Set all of these api keys to not deleted
|
||||
op.execute(table.update().where(table.c.id.in_(s)).values(deleted=False))
|
||||
|
||||
|
||||
def downgrade():
|
||||
with transaction():
|
||||
drop_index(index_name, table_name)
|
||||
drop_column(table_name, column_name)
|
||||
Reference in New Issue
Block a user