85 lines
3.8 KiB
SQL
85 lines
3.8 KiB
SQL
create table
|
|
public.ak_contents (
|
|
id uuid not null default gen_random_uuid (),
|
|
raw_content_id uuid null,
|
|
title text not null,
|
|
content text not null,
|
|
summary text null,
|
|
author character varying(128) null,
|
|
source_url text null,
|
|
original_language character varying(10) not null,
|
|
category_id uuid null,
|
|
tags text[] null,
|
|
keywords text[] null,
|
|
entities jsonb null,
|
|
sentiment_score double precision null,
|
|
readability_score double precision null,
|
|
credibility_score double precision null,
|
|
quality_score double precision null,
|
|
view_count integer null default 0,
|
|
like_count integer null default 0,
|
|
share_count integer null default 0,
|
|
comment_count integer null default 0,
|
|
published_at timestamp with time zone null,
|
|
featured_until timestamp with time zone null,
|
|
status character varying(32) null default 'published'::character varying,
|
|
ai_processed_at timestamp with time zone null,
|
|
created_at timestamp with time zone null default now(),
|
|
updated_at timestamp with time zone null default now(),
|
|
favorite_count integer null default 0,
|
|
is_featured boolean null default false,
|
|
content_type character varying null default ''::character varying,
|
|
video_url text null,
|
|
video_duration integer null,
|
|
video_poster text null,
|
|
video_width integer null,
|
|
video_height integer null,
|
|
video_size bigint null,
|
|
video_format character varying(10) null,
|
|
video_quality character varying(10) null,
|
|
audio_url text null,
|
|
audio_duration integer null,
|
|
audio_size bigint null,
|
|
audio_format character varying(10) null,
|
|
audio_bitrate integer null,
|
|
audio_sample_rate integer null,
|
|
audio_cover text null,
|
|
image_url text null,
|
|
image_width integer null,
|
|
image_height integer null,
|
|
image_size bigint null,
|
|
image_format character varying(10) null,
|
|
image_quality character varying(10) null,
|
|
image_alt_text text null,
|
|
images jsonb null,
|
|
allow_danmu boolean null default true,
|
|
allow_download boolean null default false,
|
|
media_metadata jsonb null,
|
|
cid bigserial,
|
|
constraint ak_contents_pkey primary key (id),
|
|
constraint ak_contents_cid_key unique (cid),
|
|
constraint ak_contents_category_id_fkey foreign key (category_id) references ak_content_categories (id),
|
|
constraint ak_contents_raw_content_id_fkey foreign key (raw_content_id) references ak_raw_contents (id) on delete cascade
|
|
) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_title_text on public.ak_contents using btree (title) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_favorite_count on public.ak_contents using btree (favorite_count desc) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_category on public.ak_contents using btree (category_id) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_language on public.ak_contents using btree (original_language) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_published on public.ak_contents using btree (published_at desc) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_quality on public.ak_contents using btree (quality_score desc) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_status on public.ak_contents using btree (status) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_type on public.ak_contents using btree (content_type) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_type_published on public.ak_contents using btree (content_type, published_at desc) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_images_gin on public.ak_contents using gin (images) tablespace pg_default;
|
|
|
|
create index if not exists idx_contents_tags on public.ak_contents using gin (tags) tablespace pg_default; |