61 lines
2.6 KiB
SQL
61 lines
2.6 KiB
SQL
CREATE TABLE `character_provider_bindings` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`global_character_id` BIGINT NOT NULL,
|
|
`look_version_id` BIGINT NULL,
|
|
`source_asset_id` BIGINT NULL,
|
|
`provider_code` VARCHAR(100) NOT NULL,
|
|
`provider_asset_type` VARCHAR(50) NOT NULL DEFAULT 'video_character_element',
|
|
`provider_element_id` VARCHAR(191) NOT NULL,
|
|
`element_name` VARCHAR(160) NOT NULL,
|
|
`element_description` TEXT NULL,
|
|
`source_duration` DECIMAL(5,2) NULL,
|
|
`voice_bound` BOOLEAN NOT NULL DEFAULT false,
|
|
`voice_id` VARCHAR(160) NULL,
|
|
`voice_description` TEXT NULL,
|
|
`binding_version` INTEGER NOT NULL DEFAULT 1,
|
|
`validation_score` DECIMAL(5,2) NULL,
|
|
`validation_report_json` JSON NULL,
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'candidate',
|
|
`is_primary` BOOLEAN NOT NULL DEFAULT false,
|
|
`created_by_user_id` BIGINT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
UNIQUE INDEX `cpb_provider_element_key`(`provider_code`, `provider_element_id`),
|
|
INDEX `cpb_character_provider_status_idx`(`global_character_id`, `provider_code`, `status`),
|
|
INDEX `cpb_look_version_idx`(`look_version_id`),
|
|
INDEX `cpb_source_asset_idx`(`source_asset_id`),
|
|
INDEX `cpb_primary_status_idx`(`is_primary`, `status`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
UPDATE `provider_configs`
|
|
SET `config_json` = JSON_SET(
|
|
COALESCE(`config_json`, JSON_OBJECT()),
|
|
'$.aspect_ratio', '16:9',
|
|
'$.allowed_aspect_ratios', JSON_ARRAY('16:9'),
|
|
'$.production_aspect_ratio', '16:9'
|
|
)
|
|
WHERE `provider_type` IN ('ImageProvider', 'VideoProvider');
|
|
|
|
UPDATE `provider_configs`
|
|
SET `config_json` = JSON_SET(`config_json`, '$.size', '2560x1440')
|
|
WHERE `provider_type` = 'ImageProvider'
|
|
AND JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.size')) = '1440x2560';
|
|
|
|
UPDATE `provider_configs`
|
|
SET `config_json` = JSON_SET(`config_json`, '$.size', '1536x1024')
|
|
WHERE `provider_type` = 'ImageProvider'
|
|
AND JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.size')) = '1024x1792';
|
|
|
|
UPDATE `provider_configs`
|
|
SET `config_json` = JSON_SET(
|
|
`config_json`,
|
|
'$.width', CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.height')) AS UNSIGNED),
|
|
'$.height', CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.width')) AS UNSIGNED)
|
|
)
|
|
WHERE `provider_type` IN ('ImageProvider', 'VideoProvider')
|
|
AND JSON_TYPE(JSON_EXTRACT(`config_json`, '$.width')) IN ('INTEGER', 'DOUBLE')
|
|
AND JSON_TYPE(JSON_EXTRACT(`config_json`, '$.height')) IN ('INTEGER', 'DOUBLE')
|
|
AND CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.width')) AS UNSIGNED)
|
|
< CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.height')) AS UNSIGNED);
|