From 5316b8d5a443f538417a8fb416024ec3b1ef799a Mon Sep 17 00:00:00 2001 From: mortezaei Date: Wed, 1 Oct 2025 19:59:19 +0330 Subject: [PATCH] fix db --- .../0003_alter_blog_fields_to_json.py | 39 ------------------- .../0003_convert_varchar_to_jsonb.py | 39 +++++++++++++++++++ 2 files changed, 39 insertions(+), 39 deletions(-) delete mode 100644 apps/blog/migrations/0003_alter_blog_fields_to_json.py create mode 100644 apps/blog/migrations/0003_convert_varchar_to_jsonb.py diff --git a/apps/blog/migrations/0003_alter_blog_fields_to_json.py b/apps/blog/migrations/0003_alter_blog_fields_to_json.py deleted file mode 100644 index c6488d0..0000000 --- a/apps/blog/migrations/0003_alter_blog_fields_to_json.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated manually to fix varchar to JSONField migration - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('blog', '0002_blogseo'), - ] - - operations = [ - migrations.AlterField( - model_name='blog', - name='title', - field=models.JSONField(blank=True, default=list, null=True, verbose_name='title'), - ), - migrations.AlterField( - model_name='blog', - name='slug', - field=models.JSONField(blank=True, default=list, help_text='URL slug for the blog', null=True, verbose_name='slug'), - ), - migrations.AlterField( - model_name='blog', - name='slogan', - field=models.JSONField(blank=True, default=list, null=True, verbose_name='slogan'), - ), - migrations.AlterField( - model_name='blogcontent', - name='title', - field=models.JSONField(blank=True, default=list, help_text='Title of this content section', null=True, verbose_name='Content title'), - ), - migrations.AlterField( - model_name='blogcontent', - name='slug', - field=models.JSONField(blank=True, default=list, help_text='URL slug for this content (optional)', null=True, verbose_name='slug'), - ), - ] - diff --git a/apps/blog/migrations/0003_convert_varchar_to_jsonb.py b/apps/blog/migrations/0003_convert_varchar_to_jsonb.py new file mode 100644 index 0000000..75c34d6 --- /dev/null +++ b/apps/blog/migrations/0003_convert_varchar_to_jsonb.py @@ -0,0 +1,39 @@ +# Generated manually to convert varchar fields to jsonb + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0002_blogseo'), + ] + + operations = [ + migrations.RunSQL( + sql=""" + -- Step 1: Drop constraints and indexes on slug fields + ALTER TABLE blog_blog DROP CONSTRAINT IF EXISTS blog_blog_slug_key; + DROP INDEX IF EXISTS blog_blog_slug_4812aa2c_like; + DROP INDEX IF EXISTS blog_blogcontent_slug_4842a829; + DROP INDEX IF EXISTS blog_blogcontent_slug_4842a829_like; + + -- Step 2: Convert Blog table fields to jsonb + ALTER TABLE blog_blog ALTER COLUMN title TYPE jsonb USING '[]'::jsonb; + ALTER TABLE blog_blog ALTER COLUMN slogan TYPE jsonb USING '[]'::jsonb; + ALTER TABLE blog_blog ALTER COLUMN slug TYPE jsonb USING '[]'::jsonb; + + -- Step 3: Convert BlogContent table fields to jsonb + ALTER TABLE blog_blogcontent ALTER COLUMN title TYPE jsonb USING '[]'::jsonb; + ALTER TABLE blog_blogcontent ALTER COLUMN slug TYPE jsonb USING '[]'::jsonb; + """, + reverse_sql=""" + ALTER TABLE blog_blog ALTER COLUMN title TYPE varchar(255); + ALTER TABLE blog_blog ALTER COLUMN slogan TYPE varchar(500); + ALTER TABLE blog_blog ALTER COLUMN slug TYPE varchar(255); + ALTER TABLE blog_blogcontent ALTER COLUMN title TYPE varchar(255); + ALTER TABLE blog_blogcontent ALTER COLUMN slug TYPE varchar(255); + """ + ), + ] +