Skip to content

Data model audit & refactor#57

Merged
windoze95 merged 2 commits intomainfrom
refactor/data-model-audit
Mar 8, 2026
Merged

Data model audit & refactor#57
windoze95 merged 2 commits intomainfrom
refactor/data-model-audit

Conversation

@windoze95
Copy link
Owner

Summary

  • Drop RecipeHistory system — regen/fork now use tree node ancestors for AI context; removed models, routes, repo methods, and migration
  • Unify UnitSystemPersonalization.UnitSystem is now a string ("us_customary"/"metric"); removed int enum, Recipe.UnitSystem duplicate column, and all enum helpers
  • Remove RecipeDef.Hashtags — hashtags threaded separately through the creation pipeline; only stored in join table
  • Merge duplicate functionsaiResultToRecipeDef() consolidated into single recipeResultToRecipeDef()
  • DRY canonical resolution — extracted effectiveRecipeDef() helper used in 3 places
  • Add Recipe.Status field"generating" / "ready" / "failed" for async generation tracking
  • Performance — added composite index (created_by_id, created_at DESC) on recipes table

Net: -552 lines (244 added, 796 removed)

Test plan

  • go test ./... -count=1 — all tests pass
  • Test all creation paths (chat, import URL, import image, import text, manual, fork, regen) via curl/Postman
  • Verify tree operations: create recipe → regen → check tree has correct nodes → switch active node
  • Verify canonical flow: import URL → re-import same URL → verify dedup still works
  • Deploy and run AutoMigrate to verify schema changes apply cleanly

Note: The companion Flutter PR (saltybytes-app) aligns all Flutter models to these API changes.

🤖 Generated with Claude Code

- Remove RecipeHistory/RecipeHistoryEntry system; regen/fork now use
  tree node ancestors for AI context via nodeChainToMessages()
- Change Personalization.UnitSystem from int enum to string; remove
  Recipe.UnitSystem duplicate column and all enum helpers
- Remove RecipeDef.Hashtags; thread hashtags separately through pipeline
- Merge duplicate aiResultToRecipeDef into single recipeResultToRecipeDef
- Extract effectiveRecipeDef() helper to DRY canonical resolution
- Add Recipe.Status field (generating/ready/failed) for async tracking
- Add composite index (created_by_id, created_at DESC) on recipes
- Simplify UpdateRecipeDef to not require history entry parameter
- Remove /recipes/chat-history/:history_id route
- Remove MigrateRecipeHistoryToTree migration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1c3687c6ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Add MetricUnit/MetricAmount fields to Ingredient structs across the
full pipeline (models, AI tool schema, service layer, handlers).
Update all 6 recipe prompts to instruct dual-unit generation.
Add tests for metric field round-trip serialization and omitempty.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@windoze95 windoze95 merged commit 1a881e0 into main Mar 8, 2026
1 check passed
@windoze95 windoze95 deleted the refactor/data-model-audit branch March 8, 2026 15:40
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