Skip to content

Commit cf13c11

Browse files
Migrations tweaks
1 parent 8ec992a commit cf13c11

16 files changed

+149
-134
lines changed

src/invidious.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ require "compress/zip"
2727
require "protodec/utils"
2828

2929
require "./invidious/database/*"
30+
require "./invidious/database/migrations/*"
3031
require "./invidious/helpers/*"
3132
require "./invidious/yt_backend/*"
3233
require "./invidious/*"
3334
require "./invidious/channels/*"
3435
require "./invidious/user/*"
3536
require "./invidious/routes/**"
3637
require "./invidious/jobs/**"
37-
require "./invidious/migrations/*"
3838

3939
CONFIG = Config.load
4040
HMAC_KEY = CONFIG.hmac_key || Random::Secure.hex(32)
@@ -113,7 +113,7 @@ OUTPUT = CONFIG.output.upcase == "STDOUT" ? STDOUT : File.open(CONFIG.output, mo
113113
LOGGER = Invidious::LogHandler.new(OUTPUT, CONFIG.log_level)
114114

115115
# Run migrations
116-
Invidious::Migrator.new(PG_DB).migrate
116+
Invidious::Database::Migrator.new(PG_DB).migrate
117117
# Check table integrity
118118
Invidious::Database.check_integrity(CONFIG)
119119

src/invidious/migration.cr renamed to src/invidious/database/migration.cr

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
abstract class Invidious::Migration
1+
abstract class Invidious::Database::Migration
22
macro inherited
3-
Invidious::Migrator.migrations << self
3+
Migrator.migrations << self
44
end
55

66
@@version : Int64?
@@ -33,6 +33,6 @@ abstract class Invidious::Migration
3333
end
3434

3535
private def track(conn : DB::Connection)
36-
conn.exec("INSERT INTO #{Invidious::Migrator::MIGRATIONS_TABLE}(version) VALUES ($1)", version)
36+
conn.exec("INSERT INTO #{Migrator::MIGRATIONS_TABLE} (version) VALUES ($1)", version)
3737
end
3838
end

src/invidious/migrations/0000_create_channels_table.cr renamed to src/invidious/database/migrations/0001_create_channels_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateChannelsTable < Migration
3-
version 0
3+
version 1
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0001_create_videos_table.cr renamed to src/invidious/database/migrations/0002_create_videos_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateVideosTable < Migration
3-
version 1
3+
version 2
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0002_create_channel_videos_table.cr renamed to src/invidious/database/migrations/0003_create_channel_videos_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateChannelVideosTable < Migration
3-
version 2
3+
version 3
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0003_create_users_table.cr renamed to src/invidious/database/migrations/0004_create_users_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateUsersTable < Migration
3-
version 3
3+
version 4
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0004_create_session_ids_table.cr renamed to src/invidious/database/migrations/0005_create_session_ids_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateSessionIdsTable < Migration
3-
version 4
3+
version 5
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0005_create_nonces_table.cr renamed to src/invidious/database/migrations/0006_create_nonces_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateNoncesTable < Migration
3-
version 5
3+
version 6
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL

src/invidious/migrations/0006_create_annotations_table.cr renamed to src/invidious/database/migrations/0007_create_annotations_table.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
module Invidious::Migrations
1+
module Invidious::Database::Migrations
22
class CreateAnnotationsTable < Migration
3-
version 6
3+
version 7
44

55
def up(conn : DB::Connection)
66
conn.exec <<-SQL
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
module Invidious::Database::Migrations
2+
class CreatePlaylistsTable < Migration
3+
version 8
4+
5+
def up(conn : DB::Connection)
6+
if !privacy_type_exists?(conn)
7+
conn.exec <<-SQL
8+
CREATE TYPE public.privacy AS ENUM
9+
(
10+
'Public',
11+
'Unlisted',
12+
'Private'
13+
);
14+
SQL
15+
end
16+
17+
conn.exec <<-SQL
18+
CREATE TABLE IF NOT EXISTS public.playlists
19+
(
20+
title text,
21+
id text primary key,
22+
author text,
23+
description text,
24+
video_count integer,
25+
created timestamptz,
26+
updated timestamptz,
27+
privacy privacy,
28+
index int8[]
29+
);
30+
SQL
31+
32+
conn.exec <<-SQL
33+
GRANT ALL ON public.playlists TO current_user;
34+
SQL
35+
end
36+
37+
private def privacy_type_exists?(conn : DB::Connection) : Bool
38+
request = <<-SQL
39+
SELECT 1 AS one
40+
FROM pg_type
41+
INNER JOIN pg_namespace ON pg_namespace.oid = pg_type.typnamespace
42+
WHERE pg_namespace.nspname = 'public'
43+
AND pg_type.typname = 'privacy'
44+
LIMIT 1;
45+
SQL
46+
47+
!conn.query_one?(request, as: Int32).nil?
48+
end
49+
end
50+
end

0 commit comments

Comments
 (0)