chore: combine migrations into one

episode-actions
Jef Roosens 2025-02-28 09:46:26 +01:00
parent 2be126a7b3
commit 7ce41cd034
No known key found for this signature in database
GPG Key ID: 21FD3D77D56BAF49
10 changed files with 77 additions and 51 deletions

View File

@ -1,2 +0,0 @@
drop table sessions;
drop table users;

View File

@ -1,13 +0,0 @@
create table users (
id integer primary key not null,
username text unique not null,
password_hash text not null
);
create table sessions (
id bigint primary key not null,
user_id bigint not null
references users (id)
on delete cascade,
unique (id, user_id)
);

View File

@ -0,0 +1,8 @@
drop table episode_actions;
drop table subscriptions;
drop table devices;
drop table sessions;
drop table users;

View File

@ -0,0 +1,69 @@
create table users (
id integer primary key not null,
username text unique not null,
password_hash text not null
);
create table sessions (
id bigint primary key not null,
user_id bigint not null
references users (id)
on delete cascade,
unique (id, user_id)
);
create table devices (
id integer primary key not null,
device_id text not null,
user_id bigint not null
references users (id)
on delete cascade,
caption text not null,
type text not null,
unique (user_id, device_id)
);
create table subscriptions (
id integer primary key not null,
device_id bigint not null
references devices (id)
on delete cascade,
url text not null,
time_changed bigint not null default 0,
deleted boolean not null default false,
unique (device_id, url)
);
create table episode_actions (
id integer primary key not null,
subscription_id bigint not null
references subscriptions (id)
on delete cascade,
-- Can be null, as the device is not always provided
device_id bigint
references devices (id)
on delete set null,
episode text not null,
timestamp bigint,
action text not null,
started integer,
position integer,
total integer,
-- Position should be set if the action type is "Play" and null otherwise
check ((action = "Play") = (position is not null)),
-- Started and position can only be set if the action type is "Play"
check (action = "Play" or (started is null and position is null)),
-- Started and position should be provided together
check ((started is null) = (total is null))
);

View File

@ -1 +0,0 @@
drop table devices;

View File

@ -1,13 +0,0 @@
create table devices (
id integer primary key not null,
device_id text not null,
user_id bigint not null
references users (id)
on delete cascade,
caption text not null,
type text not null,
unique (user_id, device_id)
);

View File

@ -1 +0,0 @@
drop table subscriptions;

View File

@ -1,9 +0,0 @@
create table subscriptions (
id integer primary key not null,
device_id bigint not null
references devices (id)
on delete cascade,
url text not null,
unique (device_id, url)
);

View File

@ -1,6 +0,0 @@
-- This file should undo anything in `up.sql`
alter table subscriptions
drop column time_changed;
alter table subscriptions
drop column deleted;

View File

@ -1,6 +0,0 @@
-- Your SQL goes here
alter table subscriptions
add column time_changed bigint not null default 0;
alter table subscriptions
add column deleted boolean not null default false;