Files
JuYou/API/migrations/000052_product_image_templates.up.sql
T
2026-08-25 17:59:42 +08:00

63 lines
4.0 KiB
SQL

-- 图片生成模板结构,保存用户的生成配置与参考图关系。
CREATE TABLE product_image_templates (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid NOT NULL REFERENCES web_users(id) ON DELETE CASCADE,
name varchar(120) NOT NULL,
prompt text NOT NULL DEFAULT '',
model_id uuid REFERENCES models(id),
aspect_ratio varchar(12) NOT NULL DEFAULT '1:1',
resolution varchar(12) NOT NULL DEFAULT '1K',
image_count smallint NOT NULL DEFAULT 1,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamptz,
CONSTRAINT chk_product_image_template_ratio CHECK (aspect_ratio IN ('1:1', '3:4', '4:3', '9:16', '16:9')),
CONSTRAINT chk_product_image_template_resolution CHECK (resolution IN ('1K', '2K', '4K')),
CONSTRAINT chk_product_image_template_count CHECK (image_count BETWEEN 1 AND 4)
);
CREATE INDEX idx_product_image_templates_user_updated
ON product_image_templates(user_id, updated_at DESC)
WHERE deleted_at IS NULL;
-- 图片生成参考图关系,使用顺序字段稳定传递多张参考图。
CREATE TABLE product_image_references (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
template_id uuid NOT NULL REFERENCES product_image_templates(id) ON DELETE CASCADE,
media_asset_id uuid NOT NULL REFERENCES media_assets(id),
sort_order smallint NOT NULL,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT uq_product_image_reference_media UNIQUE (template_id, media_asset_id),
CONSTRAINT uq_product_image_reference_order UNIQUE (template_id, sort_order),
CONSTRAINT chk_product_image_reference_order CHECK (sort_order BETWEEN 1 AND 4)
);
CREATE INDEX idx_product_image_references_template
ON product_image_references(template_id, sort_order);
COMMENT ON TABLE product_image_templates IS '用户保存的图片生成生成模板';
COMMENT ON COLUMN product_image_templates.id IS '图片生成模板主键';
COMMENT ON COLUMN product_image_templates.user_id IS '模板所属用户';
COMMENT ON COLUMN product_image_templates.name IS '模板名称';
COMMENT ON COLUMN product_image_templates.prompt IS '图片生成生成提示词';
COMMENT ON COLUMN product_image_templates.model_id IS '模板选用的图片模型';
COMMENT ON COLUMN product_image_templates.aspect_ratio IS '生成图片宽高比';
COMMENT ON COLUMN product_image_templates.resolution IS '生成图片分辨率档位';
COMMENT ON COLUMN product_image_templates.image_count IS '单次生成图片张数';
COMMENT ON COLUMN product_image_templates.created_at IS '模板创建时间';
COMMENT ON COLUMN product_image_templates.updated_at IS '模板最近更新时间';
COMMENT ON COLUMN product_image_templates.deleted_at IS '模板软删除时间';
COMMENT ON CONSTRAINT chk_product_image_template_ratio ON product_image_templates IS '限制图片生成支持的宽高比';
COMMENT ON CONSTRAINT chk_product_image_template_resolution ON product_image_templates IS '限制图片生成支持的分辨率档位';
COMMENT ON CONSTRAINT chk_product_image_template_count ON product_image_templates IS '限制单次生成一至四张图片';
COMMENT ON TABLE product_image_references IS '图片生成模板引用的参考图片';
COMMENT ON COLUMN product_image_references.id IS '参考图关系主键';
COMMENT ON COLUMN product_image_references.template_id IS '所属图片生成模板';
COMMENT ON COLUMN product_image_references.media_asset_id IS '引用的媒体文件';
COMMENT ON COLUMN product_image_references.sort_order IS '参考图传递顺序';
COMMENT ON COLUMN product_image_references.created_at IS '参考图添加时间';
COMMENT ON CONSTRAINT uq_product_image_reference_media ON product_image_references IS '同一模板不能重复引用同一媒体';
COMMENT ON CONSTRAINT uq_product_image_reference_order ON product_image_references IS '同一模板的参考图顺序不可重复';
COMMENT ON CONSTRAINT chk_product_image_reference_order ON product_image_references IS '每个模板最多保存四张参考图';