initial commit

This commit is contained in:
2025-05-22 19:39:08 +08:00
commit 531bb42d01
103 changed files with 10291 additions and 0 deletions

40
sql/images.sql Normal file
View File

@ -0,0 +1,40 @@
-- 图片主表基础版
CREATE TABLE images (
-- 核心标识字段
image_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- 存储元数据
storage_key TEXT NOT NULL CHECK (storage_key ~ '^[a-z0-9/-]+$'),
file_name TEXT NOT NULL,
mime_type VARCHAR(32) NOT NULL CHECK (mime_type LIKE 'image/%'),
file_size BIGINT NOT NULL CHECK (file_size > 0),
width INT CHECK (width > 0),
height INT CHECK (height > 0),
-- 业务元数据
category_id UUID, -- 分类服务提供的UUID
tags TEXT[] DEFAULT '{}'::TEXT[],
-- 系统管控字段
created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
is_deleted BOOLEAN DEFAULT FALSE NOT NULL
);
-- 索引配置
CREATE INDEX idx_images_category ON images (category_id);
CREATE INDEX idx_images_created ON images (created_at);
CREATE INDEX idx_images_tags ON images USING GIN(tags);
-- 自动更新时间触发器
CREATE OR REPLACE FUNCTION update_image_modified()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_update_image
BEFORE UPDATE ON images
FOR EACH ROW EXECUTE FUNCTION update_image_modified();