init
This commit is contained in:
@@ -0,0 +1,300 @@
|
||||
-- 最小初始表结构,与 backend-node 业务代码对齐(若无 backend-node/migrations 则使用本文件)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS dramas (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL DEFAULT '',
|
||||
description TEXT,
|
||||
genre TEXT,
|
||||
style TEXT DEFAULT 'realistic',
|
||||
tags TEXT,
|
||||
thumbnail TEXT,
|
||||
total_episodes INTEGER DEFAULT 1,
|
||||
total_duration INTEGER DEFAULT 0,
|
||||
status TEXT DEFAULT 'draft',
|
||||
metadata TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS episodes (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER NOT NULL,
|
||||
episode_number INTEGER DEFAULT 0,
|
||||
title TEXT DEFAULT '',
|
||||
script_content TEXT,
|
||||
description TEXT,
|
||||
duration INTEGER DEFAULT 0,
|
||||
video_url TEXT,
|
||||
thumbnail TEXT,
|
||||
status TEXT DEFAULT 'draft',
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS storyboards (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
episode_id INTEGER NOT NULL,
|
||||
scene_id INTEGER,
|
||||
storyboard_number INTEGER DEFAULT 0,
|
||||
title TEXT,
|
||||
description TEXT,
|
||||
location TEXT,
|
||||
time TEXT,
|
||||
duration REAL,
|
||||
dialogue TEXT,
|
||||
action TEXT,
|
||||
atmosphere TEXT,
|
||||
image_prompt TEXT,
|
||||
video_prompt TEXT,
|
||||
characters TEXT,
|
||||
shot_type TEXT,
|
||||
angle TEXT,
|
||||
movement TEXT,
|
||||
video_url TEXT,
|
||||
status TEXT DEFAULT 'draft',
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS characters (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
role TEXT,
|
||||
description TEXT,
|
||||
personality TEXT,
|
||||
appearance TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
voice_style TEXT,
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS episode_characters (
|
||||
episode_id INTEGER NOT NULL,
|
||||
character_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (episode_id, character_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS scenes (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER NOT NULL,
|
||||
episode_id INTEGER,
|
||||
location TEXT,
|
||||
time TEXT,
|
||||
prompt TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
storyboard_count INTEGER DEFAULT 0,
|
||||
status TEXT DEFAULT 'draft',
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS props (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
type TEXT,
|
||||
description TEXT,
|
||||
prompt TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS storyboard_props (
|
||||
storyboard_id INTEGER NOT NULL,
|
||||
prop_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (storyboard_id, prop_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS frame_prompts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
storyboard_id INTEGER NOT NULL,
|
||||
frame_type TEXT,
|
||||
prompt TEXT,
|
||||
description TEXT,
|
||||
layout TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ai_service_configs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
service_type TEXT NOT NULL,
|
||||
provider TEXT DEFAULT '',
|
||||
name TEXT DEFAULT '',
|
||||
base_url TEXT DEFAULT '',
|
||||
api_key TEXT,
|
||||
model TEXT,
|
||||
default_model TEXT,
|
||||
endpoint TEXT,
|
||||
query_endpoint TEXT,
|
||||
priority INTEGER DEFAULT 0,
|
||||
is_default INTEGER DEFAULT 0,
|
||||
is_active INTEGER DEFAULT 1,
|
||||
settings TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS async_tasks (
|
||||
id TEXT PRIMARY KEY,
|
||||
type TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
progress INTEGER DEFAULT 0,
|
||||
message TEXT,
|
||||
resource_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
completed_at TEXT,
|
||||
error TEXT,
|
||||
result TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS image_generations (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
storyboard_id INTEGER,
|
||||
drama_id INTEGER,
|
||||
scene_id INTEGER,
|
||||
character_id INTEGER,
|
||||
provider TEXT,
|
||||
prompt TEXT,
|
||||
negative_prompt TEXT,
|
||||
model TEXT,
|
||||
frame_type TEXT,
|
||||
reference_images TEXT,
|
||||
size TEXT,
|
||||
quality TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
status TEXT,
|
||||
task_id TEXT,
|
||||
completed_at TEXT,
|
||||
error_msg TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS video_generations (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
storyboard_id INTEGER,
|
||||
provider TEXT,
|
||||
prompt TEXT,
|
||||
model TEXT,
|
||||
duration REAL,
|
||||
aspect_ratio TEXT,
|
||||
image_url TEXT,
|
||||
first_frame_url TEXT,
|
||||
last_frame_url TEXT,
|
||||
reference_image_urls TEXT,
|
||||
video_url TEXT,
|
||||
local_path TEXT,
|
||||
status TEXT,
|
||||
task_id TEXT,
|
||||
scene_id INTEGER,
|
||||
completed_at TEXT,
|
||||
error_msg TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS video_merges (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
episode_id INTEGER,
|
||||
drama_id INTEGER,
|
||||
title TEXT,
|
||||
provider TEXT,
|
||||
model TEXT,
|
||||
status TEXT,
|
||||
scenes TEXT,
|
||||
task_id TEXT,
|
||||
created_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS character_libraries (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
category TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
description TEXT,
|
||||
tags TEXT,
|
||||
source_type TEXT,
|
||||
source_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS scene_libraries (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
location TEXT NOT NULL DEFAULT '',
|
||||
time TEXT,
|
||||
prompt TEXT,
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
category TEXT,
|
||||
tags TEXT,
|
||||
source_type TEXT,
|
||||
source_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prop_libraries (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
description TEXT,
|
||||
prompt TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
category TEXT,
|
||||
tags TEXT,
|
||||
source_type TEXT,
|
||||
source_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS assets (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
name TEXT,
|
||||
type TEXT,
|
||||
category TEXT,
|
||||
url TEXT,
|
||||
local_path TEXT,
|
||||
file_size INTEGER,
|
||||
mime_type TEXT,
|
||||
width INTEGER,
|
||||
height INTEGER,
|
||||
duration REAL,
|
||||
image_gen_id INTEGER,
|
||||
video_gen_id INTEGER,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
@@ -0,0 +1,2 @@
|
||||
-- 生成时使用的默认模型(在该配置的 model 列表中选一个)
|
||||
ALTER TABLE ai_service_configs ADD COLUMN default_model TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- 道具归属集:从某集剧本提取的道具记入该集,本集资源列表会展示
|
||||
ALTER TABLE props ADD COLUMN episode_id INTEGER;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- async_tasks 缺少 completed_at、error、result 时补上(与 taskService 一致)
|
||||
ALTER TABLE async_tasks ADD COLUMN completed_at TEXT;
|
||||
ALTER TABLE async_tasks ADD COLUMN error TEXT;
|
||||
ALTER TABLE async_tasks ADD COLUMN result TEXT;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- image_generations 缺少 completed_at / error_msg 时补上(imageClient 更新完成状态与错误信息用)
|
||||
ALTER TABLE image_generations ADD COLUMN completed_at TEXT;
|
||||
ALTER TABLE image_generations ADD COLUMN error_msg TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- characters 表缺少 local_path 时补上(角色本地图片路径)
|
||||
ALTER TABLE characters ADD COLUMN local_path TEXT;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- scenes 表缺少 image_url / local_path 时补上(场景上传/生成图用)
|
||||
ALTER TABLE scenes ADD COLUMN image_url TEXT;
|
||||
ALTER TABLE scenes ADD COLUMN local_path TEXT;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- video_generations 缺少 completed_at / error_msg 时补上(videoService 更新完成状态用)
|
||||
ALTER TABLE video_generations ADD COLUMN completed_at TEXT;
|
||||
ALTER TABLE video_generations ADD COLUMN error_msg TEXT;
|
||||
@@ -0,0 +1,35 @@
|
||||
-- 公共场景库、公共道具库(仿 character_libraries)
|
||||
CREATE TABLE IF NOT EXISTS scene_libraries (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
location TEXT NOT NULL DEFAULT '',
|
||||
time TEXT,
|
||||
prompt TEXT,
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
category TEXT,
|
||||
tags TEXT,
|
||||
source_type TEXT,
|
||||
source_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prop_libraries (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
drama_id INTEGER,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
description TEXT,
|
||||
prompt TEXT,
|
||||
image_url TEXT,
|
||||
local_path TEXT,
|
||||
category TEXT,
|
||||
tags TEXT,
|
||||
source_type TEXT,
|
||||
source_id TEXT,
|
||||
created_at TEXT,
|
||||
updated_at TEXT,
|
||||
deleted_at TEXT
|
||||
);
|
||||
@@ -0,0 +1,6 @@
|
||||
CREATE TABLE IF NOT EXISTS prompt_overrides (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
key TEXT UNIQUE NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,4 @@
|
||||
-- 新增 api_protocol 字段:显式指定接口规范,独立于 provider(厂商名)。
|
||||
-- 优先级高于 provider 推断,便于中转站/自定义厂商明确接口格式。
|
||||
-- 可选值:openai / volcengine / dashscope / gemini / nano_banana
|
||||
ALTER TABLE ai_service_configs ADD COLUMN api_protocol TEXT DEFAULT '' NOT NULL;
|
||||
@@ -0,0 +1,8 @@
|
||||
-- 图床上传缓存表:记录本地文件与中转图床 URL 的对应关系,避免重复上传。
|
||||
-- cache_key: 本地相对路径(如 scenes/ig_xxx.png)或 data URL 内容的 sha256 hash 前缀
|
||||
CREATE TABLE IF NOT EXISTS image_proxy_cache (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
cache_key TEXT NOT NULL UNIQUE,
|
||||
proxy_url TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,12 @@
|
||||
-- character_libraries 补充外貌字段(分镜生成时引用)
|
||||
ALTER TABLE character_libraries ADD COLUMN appearance TEXT;
|
||||
ALTER TABLE character_libraries ADD COLUMN identity_anchors TEXT;
|
||||
ALTER TABLE character_libraries ADD COLUMN style_tokens TEXT;
|
||||
ALTER TABLE character_libraries ADD COLUMN color_palette TEXT;
|
||||
ALTER TABLE character_libraries ADD COLUMN four_view_image_url TEXT;
|
||||
|
||||
-- characters 补充锚点字段(AI 角色生成时提炼)
|
||||
ALTER TABLE characters ADD COLUMN identity_anchors TEXT;
|
||||
ALTER TABLE characters ADD COLUMN style_tokens TEXT;
|
||||
ALTER TABLE characters ADD COLUMN color_palette TEXT;
|
||||
ALTER TABLE characters ADD COLUMN four_view_image_url TEXT;
|
||||
@@ -0,0 +1,19 @@
|
||||
-- storyboards 表新增段落分组字段
|
||||
ALTER TABLE storyboards ADD COLUMN segment_index INTEGER DEFAULT 0;
|
||||
ALTER TABLE storyboards ADD COLUMN segment_title TEXT;
|
||||
|
||||
-- 模型路由表:按业务场景配置不同 AI 模型
|
||||
-- key: 业务键(storyboard_gen / character_gen / frame_prompt / image_polish 等)
|
||||
-- service_type: text / image
|
||||
-- config_id: 对应 ai_service_configs.id(NULL = 使用默认配置)
|
||||
-- model_override: 可选,在该配置下使用指定模型名(NULL = 用配置默认模型)
|
||||
CREATE TABLE IF NOT EXISTS ai_model_map (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
key TEXT NOT NULL UNIQUE,
|
||||
service_type TEXT NOT NULL DEFAULT 'text',
|
||||
config_id INTEGER,
|
||||
model_override TEXT,
|
||||
description TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT '',
|
||||
updated_at TEXT NOT NULL DEFAULT ''
|
||||
);
|
||||
@@ -0,0 +1,8 @@
|
||||
-- storyboards 表新增结构化视角字段(三元组)
|
||||
-- angle_h: 水平方向(front / front_left / left / back_left / back / back_right / right / front_right)
|
||||
-- angle_v: 俯仰角度(worm / low / eye_level / high)
|
||||
-- angle_s: 景别 (close_up / medium / wide)
|
||||
-- 保留原 angle 字段(旧文本)以兼容存量数据,新数据优先使用三元组字段
|
||||
ALTER TABLE storyboards ADD COLUMN angle_h TEXT;
|
||||
ALTER TABLE storyboards ADD COLUMN angle_v TEXT;
|
||||
ALTER TABLE storyboards ADD COLUMN angle_s TEXT;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- characters 表新增预生成的四视图图片提示词字段
|
||||
-- polished_prompt: 经文字AI润色后的完整图片生成提示词,可由用户编辑,生成图片时直接使用
|
||||
ALTER TABLE characters ADD COLUMN polished_prompt TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- 角色多阶段造型支持(不同集不同外貌)
|
||||
ALTER TABLE characters ADD COLUMN stages TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- 分镜解说/旁白文案(TTS、成片旁轨),与角色对白 dialogue 分离
|
||||
ALTER TABLE storyboards ADD COLUMN narration TEXT;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- 分镜:经典参考图模式 / 全能创建模式(片段描述,独立字段)
|
||||
ALTER TABLE storyboards ADD COLUMN creation_mode TEXT DEFAULT 'classic';
|
||||
ALTER TABLE storyboards ADD COLUMN universal_segment_text TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Seedance 2.0 / 即梦素材库认证信息(JSON),与官方业务素材 API 字段一致
|
||||
ALTER TABLE characters ADD COLUMN seedance2_asset TEXT;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- 角色 / 场景 / 道具:可选负面提示词(显式指定生图 model 时与图生 API 合并传入)
|
||||
ALTER TABLE characters ADD COLUMN negative_prompt TEXT;
|
||||
ALTER TABLE scenes ADD COLUMN negative_prompt TEXT;
|
||||
ALTER TABLE props ADD COLUMN negative_prompt TEXT;
|
||||
@@ -0,0 +1,70 @@
|
||||
ALTER TABLE character_libraries ADD COLUMN drama_id INTEGER;
|
||||
ALTER TABLE scene_libraries ADD COLUMN drama_id INTEGER;
|
||||
ALTER TABLE prop_libraries ADD COLUMN drama_id INTEGER;
|
||||
|
||||
ALTER TABLE character_libraries ADD COLUMN source_id TEXT;
|
||||
ALTER TABLE scene_libraries ADD COLUMN source_id TEXT;
|
||||
ALTER TABLE prop_libraries ADD COLUMN source_id TEXT;
|
||||
|
||||
UPDATE character_libraries
|
||||
SET source_id = (
|
||||
SELECT CAST(c.id AS TEXT)
|
||||
FROM characters c
|
||||
WHERE c.deleted_at IS NULL
|
||||
AND character_libraries.source_type = 'character'
|
||||
AND (character_libraries.drama_id IS NULL OR c.drama_id = character_libraries.drama_id)
|
||||
AND (
|
||||
(c.local_path IS NOT NULL AND c.local_path <> '' AND (
|
||||
c.local_path = character_libraries.local_path
|
||||
OR '/static/' || c.local_path = character_libraries.image_url
|
||||
))
|
||||
OR (c.image_url IS NOT NULL AND c.image_url <> '' AND c.image_url = character_libraries.image_url)
|
||||
)
|
||||
ORDER BY c.id ASC
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE source_id IS NULL
|
||||
AND deleted_at IS NULL
|
||||
AND source_type = 'character';
|
||||
|
||||
UPDATE scene_libraries
|
||||
SET source_id = (
|
||||
SELECT CAST(s.id AS TEXT)
|
||||
FROM scenes s
|
||||
WHERE s.deleted_at IS NULL
|
||||
AND scene_libraries.source_type = 'scene'
|
||||
AND (scene_libraries.drama_id IS NULL OR s.drama_id = scene_libraries.drama_id)
|
||||
AND (
|
||||
(s.local_path IS NOT NULL AND s.local_path <> '' AND (
|
||||
s.local_path = scene_libraries.local_path
|
||||
OR '/static/' || s.local_path = scene_libraries.image_url
|
||||
))
|
||||
OR (s.image_url IS NOT NULL AND s.image_url <> '' AND s.image_url = scene_libraries.image_url)
|
||||
)
|
||||
ORDER BY s.id ASC
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE source_id IS NULL
|
||||
AND deleted_at IS NULL
|
||||
AND source_type = 'scene';
|
||||
|
||||
UPDATE prop_libraries
|
||||
SET source_id = (
|
||||
SELECT CAST(p.id AS TEXT)
|
||||
FROM props p
|
||||
WHERE p.deleted_at IS NULL
|
||||
AND prop_libraries.source_type = 'prop'
|
||||
AND (prop_libraries.drama_id IS NULL OR p.drama_id = prop_libraries.drama_id)
|
||||
AND (
|
||||
(p.local_path IS NOT NULL AND p.local_path <> '' AND (
|
||||
p.local_path = prop_libraries.local_path
|
||||
OR '/static/' || p.local_path = prop_libraries.image_url
|
||||
))
|
||||
OR (p.image_url IS NOT NULL AND p.image_url <> '' AND p.image_url = prop_libraries.image_url)
|
||||
)
|
||||
ORDER BY p.id ASC
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE source_id IS NULL
|
||||
AND deleted_at IS NULL
|
||||
AND source_type = 'prop';
|
||||
Reference in New Issue
Block a user