Compare commits

..

2 Commits

Author SHA1 Message Date
9cec32ba3e fix: normalize series status casing to avoid duplicates
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 6s
- LOWER() all series_metadata.status values in the statuses endpoint
  to prevent "One shot" / "one shot" appearing as separate targets
- Migration 0040: lowercase all existing status values in DB
- Use LOWER() in series status filter queries for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 12:56:02 +01:00
e8768dfad7 chore: bump version to 1.9.0 2026-03-19 12:44:30 +01:00
5 changed files with 14 additions and 9 deletions

8
Cargo.lock generated
View File

@@ -64,7 +64,7 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
[[package]]
name = "api"
version = "1.8.1"
version = "1.9.0"
dependencies = [
"anyhow",
"argon2",
@@ -1232,7 +1232,7 @@ dependencies = [
[[package]]
name = "indexer"
version = "1.8.1"
version = "1.9.0"
dependencies = [
"anyhow",
"axum",
@@ -1771,7 +1771,7 @@ dependencies = [
[[package]]
name = "parsers"
version = "1.8.1"
version = "1.9.0"
dependencies = [
"anyhow",
"flate2",
@@ -2906,7 +2906,7 @@ dependencies = [
[[package]]
name = "stripstream-core"
version = "1.8.1"
version = "1.9.0"
dependencies = [
"anyhow",
"serde",

View File

@@ -9,7 +9,7 @@ resolver = "2"
[workspace.package]
edition = "2021"
version = "1.8.1"
version = "1.9.0"
license = "MIT"
[workspace.dependencies]

View File

@@ -398,7 +398,7 @@ pub async fn list_series(
} else { String::new() };
let ss_cond = if query.series_status.is_some() {
p += 1; format!("AND sm.status = ${p}")
p += 1; format!("AND LOWER(sm.status) = ${p}")
} else { String::new() };
let missing_cond = if has_missing {
@@ -655,7 +655,7 @@ pub async fn list_all_series(
} else { String::new() };
let ss_cond = if query.series_status.is_some() {
p += 1; format!("AND sm.status = ${p}")
p += 1; format!("AND LOWER(sm.status) = ${p}")
} else { String::new() };
let missing_cond = if has_missing {
@@ -868,7 +868,7 @@ pub async fn series_statuses(
) -> Result<Json<Vec<String>>, ApiError> {
let rows: Vec<String> = sqlx::query_scalar(
r#"SELECT DISTINCT s FROM (
SELECT status AS s FROM series_metadata WHERE status IS NOT NULL
SELECT LOWER(status) AS s FROM series_metadata WHERE status IS NOT NULL
UNION
SELECT mapped_status AS s FROM status_mappings
) t ORDER BY s"#,

View File

@@ -1,6 +1,6 @@
{
"name": "stripstream-backoffice",
"version": "1.8.1",
"version": "1.9.0",
"private": true,
"scripts": {
"dev": "next dev -p 7082",

View File

@@ -0,0 +1,5 @@
-- Normalize all series_metadata.status values to lowercase for consistency.
-- This fixes case mismatches like "One shot" vs "one shot".
UPDATE series_metadata
SET status = LOWER(status), updated_at = NOW()
WHERE status IS NOT NULL AND status != LOWER(status);