From b6cd60a041324c047a2f9b3a6e5deaa7547bb8b3 Mon Sep 17 00:00:00 2001 From: bivashy Date: Fri, 2 Jan 2026 21:45:27 +0500 Subject: [PATCH] Remove `SourceProvider` to remove redundant complexity --- .../composer/model/SourceProvider.java | 47 ------------------- .../composer/model/SourceProviders.java | 8 ---- .../backend/composer/model/SourceType.java | 11 ----- .../composer/service/TrackService.java | 2 + .../migration/V1_10__create_base_tables.sql | 10 +--- .../db/migration/V1_20__insert_enums.sql | 18 ++----- 6 files changed, 8 insertions(+), 88 deletions(-) delete mode 100644 src/main/java/com/bivashy/backend/composer/model/SourceProvider.java delete mode 100644 src/main/java/com/bivashy/backend/composer/model/SourceProviders.java diff --git a/src/main/java/com/bivashy/backend/composer/model/SourceProvider.java b/src/main/java/com/bivashy/backend/composer/model/SourceProvider.java deleted file mode 100644 index 7132f1c..0000000 --- a/src/main/java/com/bivashy/backend/composer/model/SourceProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.bivashy.backend.composer.model; - -import java.util.HashSet; -import java.util.Set; - -import jakarta.persistence.CascadeType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; - -@Entity -@Table(name = "source_provider") -public class SourceProvider { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(nullable = false, length = 500) - private String name; - - @OneToMany(mappedBy = "provider", cascade = CascadeType.ALL, orphanRemoval = true) - private Set sourceTypes = new HashSet<>(); - - SourceProvider() { - } - - public SourceProvider(String name) { - this.name = name; - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } - - public Set getSourceTypes() { - return sourceTypes; - } - -} diff --git a/src/main/java/com/bivashy/backend/composer/model/SourceProviders.java b/src/main/java/com/bivashy/backend/composer/model/SourceProviders.java deleted file mode 100644 index b1e48af..0000000 --- a/src/main/java/com/bivashy/backend/composer/model/SourceProviders.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.bivashy.backend.composer.model; - -public class SourceProviders { - public static final String YOUTUBE = "YOUTUBE"; - public static final String LOCAL = "SOUNDCLOUD"; - public static final String EXTERNAL = "EXTERNAL"; - -} diff --git a/src/main/java/com/bivashy/backend/composer/model/SourceType.java b/src/main/java/com/bivashy/backend/composer/model/SourceType.java index 398cb89..d456aba 100644 --- a/src/main/java/com/bivashy/backend/composer/model/SourceType.java +++ b/src/main/java/com/bivashy/backend/composer/model/SourceType.java @@ -6,12 +6,9 @@ import java.util.Set; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; @@ -22,10 +19,6 @@ public class SourceType { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "provider_id", nullable = false) - private SourceProvider provider; - @Column(nullable = false, length = 500) private String name; @@ -43,10 +36,6 @@ public class SourceType { return id; } - public SourceProvider getProvider() { - return provider; - } - public String getName() { return name; } diff --git a/src/main/java/com/bivashy/backend/composer/service/TrackService.java b/src/main/java/com/bivashy/backend/composer/service/TrackService.java index f35c548..9a2bf72 100644 --- a/src/main/java/com/bivashy/backend/composer/service/TrackService.java +++ b/src/main/java/com/bivashy/backend/composer/service/TrackService.java @@ -55,6 +55,8 @@ public class TrackService { String artist = metadata.map(Metadata::artist).orElse(null); int durationSeconds = metadata.map(Metadata::durationSeconds).map(Float::intValue).orElse(0); // TODO: thumbnail + // TODO: Recognize music if the duration is less than five minutes + // (configurable), and if not, it is a playlist and should be marked as is trackMetadataService.createTrackMetadata( track, title, fileName, trackSource.getSourceUrl(), artist, null, durationSeconds); diff --git a/src/main/resources/db/migration/V1_10__create_base_tables.sql b/src/main/resources/db/migration/V1_10__create_base_tables.sql index 61ec98f..5c4c53b 100644 --- a/src/main/resources/db/migration/V1_10__create_base_tables.sql +++ b/src/main/resources/db/migration/V1_10__create_base_tables.sql @@ -5,17 +5,9 @@ CREATE TABLE IF NOT EXISTS "users" ( "updated_at" timestamp NOT NULL DEFAULT NOW() ); -CREATE TABLE IF NOT EXISTS "source_provider" ( - "id" bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, - "name" varchar(500) NOT NULL -); - CREATE TABLE IF NOT EXISTS "source_type" ( "id" bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, - "provider_id" bigint NOT NULL, - "name" varchar(500) NOT NULL, - CONSTRAINT "fk_source_type_provider_id" - FOREIGN KEY ("provider_id") REFERENCES "source_provider" ("id") + "name" varchar(500) NOT NULL ); CREATE TABLE IF NOT EXISTS "track_source" ( diff --git a/src/main/resources/db/migration/V1_20__insert_enums.sql b/src/main/resources/db/migration/V1_20__insert_enums.sql index 0c837d3..652794c 100644 --- a/src/main/resources/db/migration/V1_20__insert_enums.sql +++ b/src/main/resources/db/migration/V1_20__insert_enums.sql @@ -1,17 +1,9 @@ -INSERT INTO "source_provider" ("id", "name") +INSERT INTO "source_type" ("id", "name") OVERRIDING SYSTEM VALUE VALUES - (1, 'YOUTUBE'), - (2, 'LOCAL'), - (3, 'EXTERNAL') -ON CONFLICT ("id") DO NOTHING; - -INSERT INTO "source_type" ("id", "provider_id", "name") -OVERRIDING SYSTEM VALUE -VALUES - (1, 1, 'VIDEO'), - (2, 1, 'PLAYLIST'), - (3, 2, 'FILE'), - (4, 3, 'URL') + (1, 'VIDEO'), + (2, 'PLAYLIST'), + (3, 'FILE'), + (4, 'URL') ON CONFLICT ("id") DO NOTHING;