mirror of https://github.com/zulip/zulip.git
392 lines
14 KiB
Python
392 lines
14 KiB
Python
from typing import Any
|
|
|
|
from django.db import migrations, models
|
|
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
|
from django.db.migrations.operations.base import Operation
|
|
from typing_extensions import override
|
|
|
|
|
|
class MigrateIdToBigint(Operation):
|
|
"""A helper to migrate the id of a given table to bigint.
|
|
|
|
Necessary for many-to-many intermediate tables without models, due
|
|
to https://code.djangoproject.com/ticket/32674"""
|
|
|
|
def __init__(self, model_name: str) -> None:
|
|
self.model_name = model_name
|
|
|
|
@override
|
|
def state_forwards(self, app_label: str, state: Any) -> None:
|
|
pass
|
|
|
|
@override
|
|
def database_forwards(
|
|
self,
|
|
app_label: str,
|
|
schema_editor: BaseDatabaseSchemaEditor,
|
|
from_state: Any,
|
|
to_state: Any,
|
|
) -> None:
|
|
model = from_state.apps.get_model(app_label, self.model_name)
|
|
table_name = model._meta.db_table
|
|
seq_name = table_name + "_id_seq"
|
|
schema_editor.execute(
|
|
f"ALTER TABLE {schema_editor.quote_name(table_name)} ALTER COLUMN id SET DATA TYPE bigint"
|
|
)
|
|
schema_editor.execute(f"ALTER SEQUENCE {schema_editor.quote_name(seq_name)} AS bigint")
|
|
|
|
@override
|
|
def database_backwards(
|
|
self,
|
|
app_label: str,
|
|
schema_editor: BaseDatabaseSchemaEditor,
|
|
from_state: Any,
|
|
to_state: Any,
|
|
) -> None:
|
|
model = from_state.apps.get_model(app_label, self.model_name)
|
|
table_name = model._meta.db_table
|
|
seq_name = table_name + "_id_seq"
|
|
schema_editor.execute(
|
|
f"ALTER TABLE {schema_editor.quote_name(table_name)} ALTER COLUMN id SET DATA TYPE int"
|
|
)
|
|
schema_editor.execute(f"ALTER SEQUENCE {schema_editor.quote_name(seq_name)} AS int")
|
|
|
|
@override
|
|
def describe(self) -> str:
|
|
return f"Migrates the 'id' column of {self.model_name} and its sequence to be a bigint. Requires that the table have no foreign keys."
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
atomic = False
|
|
|
|
dependencies = [
|
|
("zerver", "0530_alter_useractivity_id_alter_useractivityinterval_id"),
|
|
]
|
|
|
|
operations = [
|
|
MigrateIdToBigint("archivedattachment_messages"),
|
|
MigrateIdToBigint("attachment_messages"),
|
|
MigrateIdToBigint("attachment_scheduled_messages"),
|
|
MigrateIdToBigint("defaultstreamgroup_streams"),
|
|
MigrateIdToBigint("multiuseinvite_streams"),
|
|
MigrateIdToBigint("preregistrationuser_streams"),
|
|
MigrateIdToBigint("scheduledemail_users"),
|
|
MigrateIdToBigint("userprofile_groups"),
|
|
MigrateIdToBigint("userprofile_user_permissions"),
|
|
migrations.AlterField(
|
|
model_name="alertword",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="archivedattachment",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="archivedreaction",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="archivedsubmessage",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="archivetransaction",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="attachment",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="botconfigdata",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="botstoragedata",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="customprofilefield",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="customprofilefieldvalue",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="defaultstream",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="defaultstreamgroup",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="draft",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="emailchangestatus",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="groupgroupmembership",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="huddle",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="missedmessageemailaddress",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="multiuseinvite",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="muteduser",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="onboardingstep",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="preregistrationrealm",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="preregistrationuser",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="presencesequence",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="pushdevicetoken",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="reaction",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmauditlog",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmauthenticationmethod",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmdomain",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmemoji",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmfilter",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmplayground",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmreactivationstatus",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="realmuserdefault",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="scheduledemail",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="scheduledmessage",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="scheduledmessagenotificationemail",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="service",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="stream",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="submessage",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="subscription",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="usergroup",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="usergroupmembership",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="userpresence",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="userstatus",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="usertopic",
|
|
name="id",
|
|
field=models.BigAutoField(
|
|
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
),
|
|
),
|
|
]
|