From 49ff85734cfac445c6450908acaeaff50af5089f Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Tue, 24 Jan 2023 12:49:03 +0100 Subject: [PATCH] DB: Add the is_virtual flag on karas Note that virtual karas are not returned in search functions. --- .../lektor_db/migrations/2022-09-30-204512_initial/up.sql | 1 + src/rust/liblektor-rs/lektor_db/src/connexion.rs | 5 +++++ src/rust/liblektor-rs/lektor_db/src/schema.rs | 1 + 3 files changed, 7 insertions(+) diff --git a/src/rust/liblektor-rs/lektor_db/migrations/2022-09-30-204512_initial/up.sql b/src/rust/liblektor-rs/lektor_db/migrations/2022-09-30-204512_initial/up.sql index 0817dea3..1e8c4967 100644 --- a/src/rust/liblektor-rs/lektor_db/migrations/2022-09-30-204512_initial/up.sql +++ b/src/rust/liblektor-rs/lektor_db/migrations/2022-09-30-204512_initial/up.sql @@ -19,6 +19,7 @@ CREATE TABLE repo_kara CREATE TABLE kara ( id BIGINT NOT NULL PRIMARY KEY REFERENCES repo(local_kara_id) ON DELETE CASCADE , is_dl BOOLEAN NOT NULL DEFAULT false + , is_virtual BOOLEAN NOT NULL DEFAULT false , song_title TEXT NOT NULL , song_type TEXT NOT NULL , song_origin TEXT NOT NULL diff --git a/src/rust/liblektor-rs/lektor_db/src/connexion.rs b/src/rust/liblektor-rs/lektor_db/src/connexion.rs index 8829bb5b..bebc0286 100644 --- a/src/rust/liblektor-rs/lektor_db/src/connexion.rs +++ b/src/rust/liblektor-rs/lektor_db/src/connexion.rs @@ -281,6 +281,7 @@ impl LktDatabaseConnection { match uri_type { LktUriField::Id => Ok(vec![with_dsl!(kara => kara .filter(id.is(uri_as_int!("id" :/ uri))) + .filter(is_virtual.is(false)) .select(id) .first::<i64>(&mut self.sqlite) .map_err(|err| format!("{err}"))? @@ -289,6 +290,7 @@ impl LktDatabaseConnection { LktUriField::KaraMaker => Ok(with_dsl!(kara_maker => kara_maker .filter(name.like(uri_str!("author" :/ uri))) .inner_join(schema::kara::table) + .filter(schema::kara::is_virtual.is(false)) .select(id) .load::<i64>(&mut self.sqlite) .map_err(|err| format!("{err}"))? @@ -296,12 +298,14 @@ impl LktDatabaseConnection { LktUriField::Origin => Ok(with_dsl!(kara => kara .filter(song_origin.like(uri_str!("origin" :/ uri))) + .filter(is_virtual.is(false)) .select(id).load::<i64>(&mut self.sqlite) .map_err(|err| format!("{err}"))? )), LktUriField::Type => Ok(with_dsl!(kara => kara .filter(song_type.is(uri_str!("type" :/ uri))) + .filter(is_virtual.is(false)) .select(id).load::<i64>(&mut self.sqlite) .map_err(|err| format!("{err}"))? )), @@ -309,6 +313,7 @@ impl LktDatabaseConnection { LktUriField::Language => Ok(with_dsl!(kara_lang => kara_lang .filter(code.like(uri_str!("language" :/ uri))) .inner_join(schema::kara::table) + .filter(schema::kara::is_virtual.is(false)) .select(id) .load::<i64>(&mut self.sqlite) .map_err(|err| format!("{err}"))? diff --git a/src/rust/liblektor-rs/lektor_db/src/schema.rs b/src/rust/liblektor-rs/lektor_db/src/schema.rs index 82791c51..09d100a6 100644 --- a/src/rust/liblektor-rs/lektor_db/src/schema.rs +++ b/src/rust/liblektor-rs/lektor_db/src/schema.rs @@ -20,6 +20,7 @@ diesel::table! { kara (id) { id -> BigInt, is_dl -> Bool, + is_virtual -> Bool, song_title -> Text, song_type -> Text, song_origin -> Text, -- GitLab