sangsangfinder / crawling /supabase_schema.sql
cksleigen's picture
Initial clean deploy
54656fc
Raw
History Blame Contribute Delete
2.56 kB
create table if not exists notices (
id bigserial primary key,
source text not null default 'hansung',
notice_id text,
title text not null,
url text not null unique,
posted_at date,
posted_date_text text,
category text,
category_type text[] not null default '{}',
job_types text[] not null default '{}',
body text,
views integer,
notice_score double precision,
embedding jsonb,
raw jsonb not null default '{}'::jsonb,
crawled_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
create index if not exists idx_notices_source_posted_at
on notices (source, posted_at desc);
create index if not exists idx_notices_category
on notices (category);
alter table notices add column if not exists category_type text[] not null default '{}';
alter table notices add column if not exists job_types text[] not null default '{}';
alter table notices add column if not exists notice_score double precision;
alter table notices add column if not exists embedding jsonb;
create table if not exists users (
user_id text primary key,
name text not null default '',
phone text not null,
interests text[] not null default '{}',
track text not null default '',
created_at timestamptz not null default now(),
updated_at timestamptz not null default now(),
unique (phone)
);
create index if not exists idx_users_interests
on users using gin (interests);
create table if not exists notification_deliveries (
id bigserial primary key,
notice_db_id bigint references notices(id) on delete cascade,
notice_id text,
user_id text not null references users(user_id) on delete cascade,
channel text not null default 'imessage',
category text not null default '',
status text not null default 'pending',
error text,
sent_at timestamptz,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now(),
unique (notice_db_id, user_id, channel, category)
);
alter table notification_deliveries add column if not exists category text not null default '';
alter table notification_deliveries
drop constraint if exists notification_deliveries_notice_db_id_user_id_channel_key;
create unique index if not exists idx_notification_deliveries_notice_user_channel_category
on notification_deliveries (notice_db_id, user_id, channel, category);
create index if not exists idx_notification_deliveries_status
on notification_deliveries (status, created_at desc);