From 33a06e3147b4106ab07f5ab8a09783e009fc284a Mon Sep 17 00:00:00 2001
From: Stefano Alberto Russo <stefano.russo@gmail.com>
Date: Fri, 14 Jan 2022 15:52:06 +0100
Subject: [PATCH] Updated the migrations to support JSON filed in SQlite as
 well.

---
 .../code/rosetta/core_app/migrations/0001_initial.py | 12 ++++++++----
 .../core_app/migrations/0007_auto_20211103_1228.py   |  9 +++++++--
 .../core_app/migrations/0009_auto_20211103_2256.py   |  9 +++++++--
 .../code/rosetta/core_app/migrations/0011_storage.py |  8 ++++++--
 .../core_app/migrations/0013_auto_20211108_1529.py   |  9 +++++++--
 .../core_app/migrations/0015_auto_20211108_1639.py   |  8 ++++++--
 .../core_app/migrations/0016_profile_extra_conf.py   |  9 +++++++--
 .../core_app/migrations/0023_auto_20211121_1342.py   |  9 +++++++--
 .../migrations/0024_computing_emulated_archs.py      |  9 +++++++--
 .../migrations/0027_computing_supported_archs.py     |  9 +++++++--
 .../core_app/migrations/0030_auto_20211218_2355.py   |  9 +++++++--
 11 files changed, 76 insertions(+), 24 deletions(-)

diff --git a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
index 40576cf..b6bec6d 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
@@ -1,12 +1,16 @@
 # Generated by Django 2.2.1 on 2020-05-28 15:12
 
 from django.conf import settings
-import django.contrib.postgres.fields.jsonb
 from django.db import migrations, models
 import django.db.models.deletion
 import django.utils.timezone
 import uuid
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -68,7 +72,7 @@ class Migration(migrations.Migration):
                 ('auth_user', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth user')),
                 ('auth_pass', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth pass')),
                 ('access_method', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task access method')),
-                ('computing_options', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('computing_options', JSONField(blank=True, null=True)),
                 ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
                 ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Container')),
                 ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
@@ -108,7 +112,7 @@ class Migration(migrations.Migration):
             name='ComputingUserConf',
             fields=[
                 ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
-                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('data', JSONField(blank=True, null=True)),
                 ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
                 ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
             ],
@@ -117,7 +121,7 @@ class Migration(migrations.Migration):
             name='ComputingSysConf',
             fields=[
                 ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
-                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('data', JSONField(blank=True, null=True)),
                 ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
             ],
         ),
diff --git a/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py b/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
index ad56e41..be72fb0 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-03 12:28
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -34,7 +39,7 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='task',
             name='computing_options',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Task computing options'),
+            field=JSONField(blank=True, null=True, verbose_name='Task computing options'),
         ),
         migrations.AlterField(
             model_name='task',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py b/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
index 70021da..a879dc3 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-03 22:56
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -114,7 +119,7 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='task',
             name='computing_options',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Computing options'),
+            field=JSONField(blank=True, null=True, verbose_name='Computing options'),
         ),
         migrations.AlterField(
             model_name='task',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0011_storage.py b/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
index 78c1666..a29e6ed 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
@@ -1,11 +1,15 @@
 # Generated by Django 2.2.1 on 2021-11-08 14:45
 
 from django.conf import settings
-import django.contrib.postgres.fields.jsonb
 from django.db import migrations, models
 import django.db.models.deletion
 import uuid
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -26,7 +30,7 @@ class Migration(migrations.Migration):
                 ('base_path', models.CharField(max_length=4096, verbose_name='Base path')),
                 ('bind_path', models.CharField(max_length=4096, verbose_name='Bind path')),
                 ('access_through_computing', models.BooleanField(default=False, verbose_name='Access through linked computing resource?')),
-                ('config', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('config', JSONField(blank=True, null=True)),
                 ('computing', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='storages', to='core_app.Computing')),
                 ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
             ],
diff --git a/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py b/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
index 10d1fbb..3286556 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
@@ -1,10 +1,15 @@
 # Generated by Django 2.2.1 on 2021-11-08 15:29
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 import django.db.models.deletion
 import uuid
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -17,7 +22,7 @@ class Migration(migrations.Migration):
             name='ComputingConf',
             fields=[
                 ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
-                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('data', JSONField(blank=True, null=True)),
             ],
         ),
         migrations.RemoveField(
diff --git a/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py b/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
index e2a20f7..b5219fe 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
@@ -1,10 +1,14 @@
 # Generated by Django 2.2.1 on 2021-11-08 16:39
 
 from django.conf import settings
-import django.contrib.postgres.fields.jsonb
 from django.db import migrations, models
 import django.db.models.deletion
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -30,7 +34,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='conf',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True),
+            field=JSONField(blank=True, null=True),
         ),
         migrations.AddField(
             model_name='computing',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py b/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
index 0c6a1a9..6aed2af 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-08 17:53
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='profile',
             name='extra_conf',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True),
+            field=JSONField(blank=True, null=True),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py b/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
index dcde2e0..640a474 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-21 13:42
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -18,7 +23,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='container_runtimes',
-            field=django.contrib.postgres.fields.jsonb.JSONField(default=['docker'], verbose_name='Container runtimes'),
+            field=JSONField(default=['docker'], verbose_name='Container runtimes'),
             preserve_default=False,
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py b/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
index 0add854..e913761 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-21 13:42
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='emulated_archs',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Emulated architectures'),
+            field=JSONField(blank=True, null=True, verbose_name='Emulated architectures'),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py b/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
index cb6ee53..477bcd8 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-24 00:25
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='supported_archs',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Supported architectures'),
+            field=JSONField(blank=True, null=True, verbose_name='Supported architectures'),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py b/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
index 13b707a..0612c91 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-12-18 23:55
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='computing',
             name='container_engines',
-            field=django.contrib.postgres.fields.jsonb.JSONField(verbose_name='Container engines/runtimes'),
+            field=JSONField(verbose_name='Container engines/runtimes'),
         ),
     ]
-- 
GitLab