Skip to main content

max / makenotwork

Filter unlisted items from discover page, remove dead code Unlisted bundle children were appearing in Products discover queries. Added `i.listed = true` to all 7 discover WHERE/FILTER clauses. Removed unused get_active_tiers_by_item and create_item_subscription_tier. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-03-29 18:48 UTC
Commit: fd0b2fecb03e4c70747e7475dae6851ab980b552
Parent: 2958cbe
3 files changed, +8 insertions, -48 deletions
@@ -3350,7 +3350,7 @@ dependencies = [
3350 3350
3351 3351 [[package]]
3352 3352 name = "makenotwork"
3353 - version = "0.3.16"
3353 + version = "0.3.17"
3354 3354 dependencies = [
3355 3355 "anyhow",
3356 3356 "argon2",
@@ -136,7 +136,7 @@ pub async fn discover_items(
136 136 JOIN users u ON p.user_id = u.id
137 137 LEFT JOIN item_tags pit ON pit.item_id = i.id AND pit.is_primary = true
138 138 LEFT JOIN tags pt ON pt.id = pit.tag_id
139 - WHERE i.is_public = true AND p.is_public = true AND i.scan_status != 'quarantined'
139 + WHERE i.is_public = true AND i.listed = true AND p.is_public = true AND i.scan_status != 'quarantined'
140 140 "#,
141 141 )
142 142 } else {
@@ -161,7 +161,7 @@ pub async fn discover_items(
161 161 JOIN users u ON p.user_id = u.id
162 162 LEFT JOIN item_tags pit ON pit.item_id = i.id AND pit.is_primary = true
163 163 LEFT JOIN tags pt ON pt.id = pit.tag_id
164 - WHERE i.is_public = true AND p.is_public = true AND i.scan_status != 'quarantined'
164 + WHERE i.is_public = true AND i.listed = true AND p.is_public = true AND i.scan_status != 'quarantined'
165 165 "#,
166 166 )
167 167 };
@@ -208,7 +208,7 @@ pub async fn count_discover_items(
208 208 SELECT COUNT(*)
209 209 FROM items i
210 210 JOIN projects p ON i.project_id = p.id
211 - WHERE i.is_public = true AND p.is_public = true AND i.scan_status != 'quarantined'
211 + WHERE i.is_public = true AND i.listed = true AND p.is_public = true AND i.scan_status != 'quarantined'
212 212 "#,
213 213 );
214 214
@@ -251,7 +251,7 @@ pub async fn discover_projects(
251 251 p.project_type,
252 252 p.created_at,
253 253 u.username,
254 - COUNT(i.id) FILTER (WHERE i.is_public = true) as item_count,
254 + COUNT(i.id) FILTER (WHERE i.is_public = true AND i.listed = true) as item_count,
255 255 GREATEST(
256 256 similarity(p.title, $1),
257 257 similarity(COALESCE(p.description, ''), $1) * 0.5
@@ -275,7 +275,7 @@ pub async fn discover_projects(
275 275 p.project_type,
276 276 p.created_at,
277 277 u.username,
278 - COUNT(i.id) FILTER (WHERE i.is_public = true) as item_count,
278 + COUNT(i.id) FILTER (WHERE i.is_public = true AND i.listed = true) as item_count,
279 279 NULL::real as match_score,
280 280 pc.name as category_name,
281 281 pc.slug as category_slug
@@ -392,7 +392,7 @@ pub async fn get_item_type_counts(
392 392 SELECT i.item_type as category, COUNT(*) as count
393 393 FROM items i
394 394 JOIN projects p ON i.project_id = p.id
395 - WHERE i.is_public = true AND p.is_public = true AND i.scan_status != 'quarantined'
395 + WHERE i.is_public = true AND i.listed = true AND p.is_public = true AND i.scan_status != 'quarantined'
396 396 "#,
397 397 );
398 398
@@ -456,7 +456,7 @@ pub async fn get_price_range_counts(
456 456 COUNT(*) FILTER (WHERE i.price_cents >= 10000) as over_100
457 457 FROM items i
458 458 JOIN projects p ON i.project_id = p.id
459 - WHERE i.is_public = true AND p.is_public = true AND i.scan_status != 'quarantined'
459 + WHERE i.is_public = true AND i.listed = true AND p.is_public = true AND i.scan_status != 'quarantined'
460 460 "#,
461 461 );
462 462
@@ -346,46 +346,6 @@ pub async fn has_active_subscription_to_item(
346 346 Ok(count > 0)
347 347 }
348 348
349 - /// Get all active subscription tiers for an item, ordered by sort_order.
350 - pub async fn get_active_tiers_by_item(
351 - pool: &PgPool,
352 - item_id: super::ItemId,
353 - ) -> Result<Vec<DbSubscriptionTier>> {
354 - let tiers = sqlx::query_as::<_, DbSubscriptionTier>(
355 - "SELECT * FROM subscription_tiers WHERE item_id = $1 AND is_active = true ORDER BY sort_order, created_at",
356 - )
357 - .bind(item_id)
358 - .fetch_all(pool)
359 - .await?;
360 -
361 - Ok(tiers)
362 - }
363 -
364 - /// Create a subscription tier linked to an item (not a project).
365 - pub async fn create_item_subscription_tier(
366 - pool: &PgPool,
367 - item_id: super::ItemId,
368 - name: &str,
369 - description: Option<&str>,
370 - price_cents: i32,
371 - ) -> Result<DbSubscriptionTier> {
372 - let tier = sqlx::query_as::<_, DbSubscriptionTier>(
373 - r#"
374 - INSERT INTO subscription_tiers (item_id, name, description, price_cents)
375 - VALUES ($1, $2, $3, $4)
376 - RETURNING *
377 - "#,
378 - )
379 - .bind(item_id)
380 - .bind(name)
381 - .bind(description)
382 - .bind(price_cents)
383 - .fetch_one(pool)
384 - .await?;
385 -
386 - Ok(tier)
387 - }
388 -
389 349 /// Get all item IDs that a user has active subscriptions to (for batch access checks).
390 350 pub async fn get_user_subscribed_item_ids(
391 351 pool: &PgPool,