berrypod/priv/repo/migrations/20260328091440_allow_null_social_link_url.exs
jamey 638bb4fb70
Some checks failed
deploy / deploy (push) Has been cancelled
add Site context with social links editor and site-wide settings
- Add Site context for managing site-wide content (social links, nav items,
  announcement bar, footer content)
- Add SocialLink schema with URL normalization and platform auto-detection
  supporting 40+ platforms via host and 25+ via URI scheme
- Add NavItem schema for header/footer navigation (editor UI coming next)
- Add SiteEditor component with collapsible sections for each content type
- Wire social links card block and footer to use database data
- Filter empty URLs from display in shop components
- Add DetailsPreserver hook to preserve collapsible section state
- Add comprehensive tests for Site context and SocialLink functions
- Remove unused helper functions from onboarding to fix compiler warnings
- Move sync_edit_url_param helper to group handle_editor_event clauses

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-28 10:09:33 +00:00

44 lines
1.1 KiB
Elixir

defmodule Berrypod.Repo.Migrations.AllowNullSocialLinkUrl do
use Ecto.Migration
def change do
# Allow blank URLs so users can add a link and then paste the URL
# SQLite doesn't support ALTER COLUMN, so we recreate the table
execute(
"CREATE TABLE social_links_new (
id BLOB PRIMARY KEY,
platform TEXT NOT NULL,
url TEXT,
position INTEGER NOT NULL DEFAULT 0,
inserted_at TEXT NOT NULL,
updated_at TEXT NOT NULL
)",
"DROP TABLE social_links_new"
)
execute(
"INSERT INTO social_links_new SELECT * FROM social_links",
"INSERT INTO social_links SELECT * FROM social_links_new"
)
execute(
"DROP TABLE social_links",
"CREATE TABLE social_links (
id BLOB PRIMARY KEY,
platform TEXT NOT NULL,
url TEXT NOT NULL,
position INTEGER NOT NULL DEFAULT 0,
inserted_at TEXT NOT NULL,
updated_at TEXT NOT NULL
)"
)
execute(
"ALTER TABLE social_links_new RENAME TO social_links",
"ALTER TABLE social_links RENAME TO social_links_new"
)
create index(:social_links, [:position])
end
end