fix: no migration occurs when adding unique true to indexed field (#414)
* feat: alter unique for indexed column * chore: update docs and change some var names
This commit is contained in:
@@ -365,6 +365,21 @@ old_models_describe = {
|
||||
"constraints": {"max_length": 200},
|
||||
"db_field_types": {"": "VARCHAR(200)"},
|
||||
},
|
||||
{
|
||||
"name": "company",
|
||||
"field_type": "CharField",
|
||||
"db_column": "company",
|
||||
"python_type": "str",
|
||||
"generated": False,
|
||||
"nullable": False,
|
||||
"unique": False,
|
||||
"indexed": True,
|
||||
"default": None,
|
||||
"description": None,
|
||||
"docstring": None,
|
||||
"constraints": {"max_length": 100},
|
||||
"db_field_types": {"": "VARCHAR(100)"},
|
||||
},
|
||||
{
|
||||
"name": "is_primary",
|
||||
"field_type": "BooleanField",
|
||||
@@ -929,6 +944,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
- drop fk field: Email.user
|
||||
- drop field: User.avatar
|
||||
- add index: Email.email
|
||||
- add unique to indexed field: Email.company
|
||||
- change index type for indexed field: Email.slug
|
||||
- add many to many: Email.users
|
||||
- add one to one: Email.config
|
||||
@@ -977,6 +993,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
"ALTER TABLE `email` ADD `address` VARCHAR(200) NOT NULL",
|
||||
"ALTER TABLE `email` ADD CONSTRAINT `fk_email_config_76a9dc71` FOREIGN KEY (`config_id`) REFERENCES `config` (`id`) ON DELETE CASCADE",
|
||||
"ALTER TABLE `email` ADD `config_id` INT NOT NULL UNIQUE",
|
||||
"ALTER TABLE `email` DROP INDEX `idx_email_company_1c9234`, ADD UNIQUE (`company`)",
|
||||
"ALTER TABLE `configs` RENAME TO `config`",
|
||||
"ALTER TABLE `product` DROP COLUMN `uuid`",
|
||||
"ALTER TABLE `product` DROP INDEX `uuid`",
|
||||
@@ -1019,20 +1036,21 @@ def test_migrate(mocker: MockerFixture):
|
||||
"ALTER TABLE `config` ADD UNIQUE INDEX `name` (`name`)",
|
||||
"ALTER TABLE `config` DROP FOREIGN KEY `fk_config_user_17daa970`",
|
||||
"ALTER TABLE `config` ALTER COLUMN `status` SET DEFAULT 1",
|
||||
"ALTER TABLE `email` ADD `user_id` INT NOT NULL",
|
||||
"ALTER TABLE `config` DROP COLUMN `user_id`",
|
||||
"ALTER TABLE `config` RENAME TO `configs`",
|
||||
"ALTER TABLE `email` ADD `user_id` INT NOT NULL",
|
||||
"ALTER TABLE `email` DROP COLUMN `address`",
|
||||
"ALTER TABLE `email` DROP COLUMN `config_id`",
|
||||
"ALTER TABLE `email` DROP FOREIGN KEY `fk_email_config_76a9dc71`",
|
||||
"ALTER TABLE `config` RENAME TO `configs`",
|
||||
"ALTER TABLE `product` RENAME COLUMN `pic` TO `image`",
|
||||
"ALTER TABLE `email` RENAME COLUMN `email_id` TO `id`",
|
||||
"ALTER TABLE `email` DROP INDEX `company`, ADD INDEX (`idx_email_company_1c9234`)",
|
||||
"ALTER TABLE `email` DROP INDEX `idx_email_email_4a1a33`",
|
||||
"ALTER TABLE `product` RENAME COLUMN `pic` TO `image`",
|
||||
"ALTER TABLE `product` ADD `uuid` INT NOT NULL UNIQUE",
|
||||
"ALTER TABLE `product` ADD UNIQUE INDEX `uuid` (`uuid`)",
|
||||
"ALTER TABLE `product` DROP INDEX `idx_product_name_869427`",
|
||||
"ALTER TABLE `product` DROP COLUMN `price`",
|
||||
"ALTER TABLE `product` DROP COLUMN `no`",
|
||||
"ALTER TABLE `email` DROP INDEX `idx_email_email_4a1a33`",
|
||||
"ALTER TABLE `product` DROP INDEX `uid_product_name_869427`",
|
||||
"ALTER TABLE `product` DROP INDEX `idx_product_no_e4d701`",
|
||||
"ALTER TABLE `product` ALTER COLUMN `view_num` DROP DEFAULT",
|
||||
@@ -1074,6 +1092,8 @@ def test_migrate(mocker: MockerFixture):
|
||||
'ALTER TABLE "email" DROP COLUMN "user_id"',
|
||||
'ALTER TABLE "email" ADD CONSTRAINT "fk_email_config_76a9dc71" FOREIGN KEY ("config_id") REFERENCES "config" ("id") ON DELETE CASCADE',
|
||||
'ALTER TABLE "email" ADD "config_id" INT NOT NULL UNIQUE',
|
||||
'DROP INDEX IF EXISTS "idx_email_company_1c9234"',
|
||||
'CREATE UNIQUE INDEX IF NOT EXISTS "uid_email_company_1c9234" ON "email" ("company")',
|
||||
'DROP INDEX IF EXISTS "uid_product_uuid_d33c18"',
|
||||
'ALTER TABLE "product" DROP COLUMN "uuid"',
|
||||
'ALTER TABLE "product" ALTER COLUMN "view_num" SET DEFAULT 0',
|
||||
@@ -1121,6 +1141,8 @@ def test_migrate(mocker: MockerFixture):
|
||||
'ALTER TABLE "email" RENAME COLUMN "email_id" TO "id"',
|
||||
'ALTER TABLE "email" DROP COLUMN "config_id"',
|
||||
'ALTER TABLE "email" DROP CONSTRAINT IF EXISTS "fk_email_config_76a9dc71"',
|
||||
'CREATE INDEX IF NOT EXISTS "idx_email_company_1c9234" ON "email" ("company")',
|
||||
'DROP INDEX IF EXISTS "uid_email_company_1c9234"',
|
||||
'ALTER TABLE "product" ADD "uuid" INT NOT NULL UNIQUE',
|
||||
'CREATE UNIQUE INDEX IF NOT EXISTS "uid_product_uuid_d33c18" ON "product" ("uuid")',
|
||||
'ALTER TABLE "product" ALTER COLUMN "view_num" DROP DEFAULT',
|
||||
|
Reference in New Issue
Block a user