diff --git a/musicus/migrations/2020-09-27-201047_initial_schema/down.sql b/musicus/migrations/2020-09-27-201047_initial_schema/down.sql
index 0a31654..39e9f73 100644
--- a/musicus/migrations/2020-09-27-201047_initial_schema/down.sql
+++ b/musicus/migrations/2020-09-27-201047_initial_schema/down.sql
@@ -12,5 +12,4 @@ DROP TABLE "performances";
DROP TABLE "mediums";
DROP TABLE "track_sets";
DROP TABLE "tracks";
-DROP TABLE "files";
diff --git a/musicus/migrations/2020-09-27-201047_initial_schema/up.sql b/musicus/migrations/2020-09-27-201047_initial_schema/up.sql
index 1983a84..51c17f4 100644
--- a/musicus/migrations/2020-09-27-201047_initial_schema/up.sql
+++ b/musicus/migrations/2020-09-27-201047_initial_schema/up.sql
@@ -72,11 +72,7 @@ CREATE TABLE "tracks" (
"id" TEXT NOT NULL PRIMARY KEY,
"track_set" TEXT NOT NULL REFERENCES "track_sets"("id") ON DELETE CASCADE,
"index" INTEGER NOT NULL,
- "work_parts" TEXT NOT NULL
-);
-
-CREATE TABLE "files" (
- "file_name" TEXT NOT NULL PRIMARY KEY,
- "track" TEXT NOT NULL REFERENCES "tracks"("id")
+ "work_parts" TEXT NOT NULL,
+ "path" TEXT NOT NULL
);
diff --git a/musicus/res/ui/medium_editor.ui b/musicus/res/ui/medium_editor.ui
index 7408cf5..0ad182e 100644
--- a/musicus/res/ui/medium_editor.ui
+++ b/musicus/res/ui/medium_editor.ui
@@ -2,151 +2,181 @@
-
diff --git a/musicus/src/database/files.rs b/musicus/src/database/files.rs
deleted file mode 100644
index bc3a254..0000000
--- a/musicus/src/database/files.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-use super::schema::files;
-use super::Database;
-use anyhow::Result;
-use diesel::prelude::*;
-
-/// Table data to associate audio files with tracks.
-#[derive(Insertable, Queryable, Debug, Clone)]
-#[table_name = "files"]
-struct FileRow {
- pub file_name: String,
- pub track: String,
-}
-
-impl Database {
- /// Insert or update a file. This assumes that the track is already in the
- /// database.
- pub fn update_file(&self, file_name: &str, track_id: &str) -> Result<()> {
- let row = FileRow {
- file_name: file_name.to_owned(),
- track: track_id.to_owned(),
- };
-
- diesel::insert_into(files::table)
- .values(row)
- .execute(&self.connection)?;
-
- Ok(())
- }
-
- /// Delete an existing file. This will not delete the file from the file
- /// system but just the representing row from the database.
- pub fn delete_file(&self, file_name: &str) -> Result<()> {
- diesel::delete(files::table.filter(files::file_name.eq(file_name)))
- .execute(&self.connection)?;
-
- Ok(())
- }
-
- /// Get the file name of the audio file for the specified track.
- pub fn get_file(&self, track_id: &str) -> Result