mirror of
https://github.com/tgdrive/teldrive.git
synced 2025-01-11 01:28:27 +08:00
88 lines
No EOL
2.3 KiB
SQL
88 lines
No EOL
2.3 KiB
SQL
-- +goose Up
|
|
create table teldrive.files (
|
|
id text primary key not null default teldrive.generate_uid(16),
|
|
name text not null,
|
|
type text not null,
|
|
mime_type text not null,
|
|
path text null,
|
|
size bigint null,
|
|
starred bool not null,
|
|
depth integer null,
|
|
user_id bigint not null,
|
|
parent_id text null,
|
|
status text default 'active'::text,
|
|
channel_id bigint null,
|
|
parts jsonb null,
|
|
created_at timestamp not null default timezone('utc'::text,
|
|
now()),
|
|
updated_at timestamp not null default timezone('utc'::text,
|
|
now()),
|
|
constraint unique_file unique (name,
|
|
parent_id,user_id)
|
|
);
|
|
|
|
create table teldrive.uploads (
|
|
id text not null primary key default teldrive.generate_uid(16),
|
|
upload_id text not null,
|
|
name text not null,
|
|
part_no int4 not null,
|
|
part_id int4 not null,
|
|
total_parts int4 not null,
|
|
channel_id int8 not null,
|
|
size int8 not null,
|
|
created_at timestamp null default timezone('utc'::text,
|
|
now())
|
|
);
|
|
|
|
create table teldrive.users (
|
|
user_id bigint not null primary key,
|
|
name text null,
|
|
user_name text null,
|
|
is_premium bool not null,
|
|
tg_session text not null,
|
|
settings jsonb null,
|
|
created_at timestamptz not null default timezone('utc'::text,
|
|
now()),
|
|
updated_at timestamptz not null default timezone('utc'::text,
|
|
now())
|
|
);
|
|
|
|
create collation if not exists numeric (provider = icu, locale = 'en@colnumeric=yes');
|
|
create index name_search_idx on
|
|
teldrive.files
|
|
using gin (teldrive.get_tsvector(name),
|
|
updated_at);
|
|
|
|
create index name_numeric_idx on
|
|
teldrive.files(name collate numeric nulls first);
|
|
|
|
create index parent_name_numeric_idx on
|
|
teldrive.files (parent_id,
|
|
name collate numeric desc);
|
|
|
|
create index path_idx on
|
|
teldrive.files (path);
|
|
|
|
create index parent_idx on
|
|
teldrive.files (parent_id);
|
|
|
|
create index starred_updated_at_idx on
|
|
teldrive.files (starred,
|
|
updated_at desc);
|
|
|
|
create index status_idx on teldrive.files (status);
|
|
|
|
create index user_id_idx on teldrive.files (user_id);
|
|
|
|
-- +goose Down
|
|
drop table if exists teldrive.files;
|
|
drop table if exists teldrive.uploads;
|
|
drop table if exists teldrive.users;
|
|
drop index if exists teldrive.name_search_idx;
|
|
drop index if exists teldrive.name_numeric_idx;
|
|
drop index if exists teldrive.parent_name_numeric_idx;
|
|
drop index if exists teldrive.path_idx;
|
|
drop index if exists teldrive.parent_idx;
|
|
drop index if exists teldrive.starred_updated_at_idx;
|
|
drop index if exists teldrive.status_idx;
|
|
drop index if exists teldrive.user_id_idx; |