Skip to content

Support case studies linked to multiple solutions - #103

Merged
mathix420 merged 1 commit into
masterfrom
many-to-many-case-studies
Aug 2, 2026
Merged

Support case studies linked to multiple solutions#103
mathix420 merged 1 commit into
masterfrom
many-to-many-case-studies

Conversation

@mathix420

Copy link
Copy Markdown
Owner

Summary

  • replace the singular case-study solution relationship with a many-to-many case_study_solutions join table, including backfill and integrity migrations
  • update authoring, editing, moderation, revisions, discovery, MCP, and OpenAPI flows to read and write multiple solution links
  • retain a descriptive case-study title/tagline for SEO while keeping location as the visible identity
  • refine the case-study relationship and metadata cards, and improve responsive issue-tree controls

Why

Case studies can document deployments that combine several catalog solutions. The previous solutionId model forced an artificial primary solution and leaked that choice throughout the schema, APIs, moderation flow, and UI.

Impact

  • existing case-study solution links are migrated into the join table
  • case-study writes require one or more solution IDs
  • case_studies.solution_id is removed; deployment may include the agreed migration downtime
  • case studies now show every implemented solution
  • issue, solution, and case-study metadata navigation is consistent
  • the mobile issue tree scrolls horizontally with sticky row status controls and a single expand/collapse action

Validation

  • bun run format:check
  • bunx vue-tsc --noEmit --project .nuxt/tsconfig.json
  • bunx vitest run — 184 passed, 1 skipped
  • bun run build
  • fresh and populated migration smoke tests, including join-table constraints

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

🧹 Code quality

Check Summary
vize lint 0 errors · 314 warnings
vize format all files formatted
fallow audit fail · 0 dead-code · 79 complexity · 0 dupes (66 files)
fallow audit output
  app/components/user/AvatarStack.vue
    :42 tooltip
           5 cyclomatic    5 cognitive    5 lines
          30.0 CRAP
  server/api/admin/case-study/[id]/reject.post.ts
    :5 default
           5 cyclomatic    4 cognitive   47 lines
          30.0 CRAP
  app/components/revision/Diff.vue
    :59 <arrow>
           5 cyclomatic    3 cognitive    9 lines
          30.0 CRAP
  server/utils/mcp-tools.ts
    :430 listCaseStudiesFor
           5 cyclomatic    5 cognitive   34 lines
         react: 1 hooks
          30.0 CRAP
  server/api/revisions/inbox.get.ts
    :22 default
           5 cyclomatic    6 cognitive   56 lines
         react: 1 hooks
          30.0 CRAP
  app/components/OgImage/Community.takumi.vue
    :29 idLabel
           5 cyclomatic    3 cognitive    4 lines
          30.0 CRAP
  server/api/issue/[id]/case-studies.get.ts
    :12 default
           5 cyclomatic    5 cognitive   38 lines
         react: 1 hooks
          30.0 CRAP
  Functions and synthetic template or component entries exceeding cyclomatic, cognitive, or CRAP thresholds (https://docs.fallow.tools/explanations/health#complexity-metrics)
  To suppress inline templates: // fallow-ignore-next-line complexity (above @Component)
  To suppress: // fallow-ignore-next-line complexity

✗ 79 above threshold · 630 analyzed (0.00s)
note: skipped 26 files matching default duplicates ignores (use --explain-skipped for the list)
note: hid 25 clone groups below minOccurrences=3 (lower --min-occurrences to see them)
✗ complexity: 79 findings · 65 changed files (0.76s)
  audit gate excluded 73 inherited findings (run with --gate all to enforce)

updated for 3f97168 · run #293

@mathix420
mathix420 marked this pull request as ready for review August 2, 2026 12:25
@mathix420
mathix420 merged commit 68c072f into master Aug 2, 2026
10 of 12 checks passed
@mathix420
mathix420 deleted the many-to-many-case-studies branch August 2, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant