first commit
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
-- 简化镜像管理:移除 Image 表,直接在 HostImage 中存储镜像信息
|
||||
|
||||
-- 1. 备份现有数据(如果需要恢复)
|
||||
-- 创建临时表保存现有的 host_images 数据
|
||||
CREATE TEMP TABLE temp_host_images AS
|
||||
SELECT
|
||||
hi.id,
|
||||
hi.host_id,
|
||||
i.remote_alias as image_id,
|
||||
i.name,
|
||||
i.os_type,
|
||||
i.remote_alias,
|
||||
COALESCE(i.icon, SPLIT_PART(i.remote_alias, '/', 1)) as icon,
|
||||
hi.fingerprint,
|
||||
hi.alias,
|
||||
hi.size,
|
||||
hi.status,
|
||||
hi.error_message,
|
||||
hi.synced_at,
|
||||
hi.created_at,
|
||||
hi.updated_at
|
||||
FROM host_images hi
|
||||
JOIN images i ON hi.image_id = i.id;
|
||||
|
||||
-- 2. 删除外键约束和旧表
|
||||
DROP TABLE IF EXISTS host_images;
|
||||
DROP TABLE IF EXISTS images;
|
||||
|
||||
-- 3. 创建新的 host_images 表
|
||||
CREATE TABLE host_images (
|
||||
id SERIAL PRIMARY KEY,
|
||||
host_id INTEGER NOT NULL,
|
||||
image_id VARCHAR(100) NOT NULL,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
os_type VARCHAR(50) NOT NULL DEFAULT 'Linux',
|
||||
remote_alias VARCHAR(200) NOT NULL,
|
||||
icon VARCHAR(50),
|
||||
fingerprint VARCHAR(100),
|
||||
alias VARCHAR(100),
|
||||
size INTEGER NOT NULL DEFAULT 0,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
error_message TEXT,
|
||||
synced_at TIMESTAMP,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_host_images_host FOREIGN KEY (host_id) REFERENCES hosts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT uq_host_images_host_image UNIQUE (host_id, image_id)
|
||||
);
|
||||
|
||||
-- 4. 创建索引
|
||||
CREATE INDEX idx_host_images_host_id ON host_images(host_id);
|
||||
|
||||
-- 5. 恢复数据(将 remote_alias 转换为 image_id 格式)
|
||||
INSERT INTO host_images (
|
||||
host_id, image_id, name, os_type, remote_alias, icon,
|
||||
fingerprint, alias, size, status, error_message, synced_at, created_at, updated_at
|
||||
)
|
||||
SELECT
|
||||
host_id,
|
||||
LOWER(REPLACE(REPLACE(remote_alias, '/', '-'), '.', '-')) as image_id,
|
||||
name,
|
||||
os_type,
|
||||
remote_alias,
|
||||
icon,
|
||||
fingerprint,
|
||||
alias,
|
||||
size,
|
||||
status::VARCHAR,
|
||||
error_message,
|
||||
synced_at,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM temp_host_images;
|
||||
|
||||
-- 6. 清理临时表
|
||||
DROP TABLE temp_host_images;
|
||||
Reference in New Issue
Block a user