diff --git a/migrations/Version20261120120000.php b/migrations/Version20261120120000.php new file mode 100644 index 0000000..cfbb0f4 --- /dev/null +++ b/migrations/Version20261120120000.php @@ -0,0 +1,28 @@ +addSql('ALTER TABLE profiles ADD COLUMN IF NOT EXISTS email VARCHAR(180) DEFAULT NULL'); + $this->addSql('CREATE UNIQUE INDEX IF NOT EXISTS uniq_profiles_email ON profiles (email)'); + } + + public function down(Schema $schema): void + { + $this->addSql('DROP INDEX IF EXISTS uniq_profiles_email'); + $this->addSql('ALTER TABLE profiles DROP COLUMN IF EXISTS email'); + } +} diff --git a/migrations/Version20261120123000.php b/migrations/Version20261120123000.php new file mode 100644 index 0000000..52e400c --- /dev/null +++ b/migrations/Version20261120123000.php @@ -0,0 +1,28 @@ +addSql('ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS email VARCHAR(180) DEFAULT NULL'); + $this->addSql('CREATE UNIQUE INDEX IF NOT EXISTS uniq_profiles_email ON public.profiles (email)'); + } + + public function down(Schema $schema): void + { + $this->addSql('DROP INDEX IF EXISTS uniq_profiles_email'); + $this->addSql('ALTER TABLE public.profiles DROP COLUMN IF EXISTS email'); + } +} diff --git a/migrations/Version20261120124000.php b/migrations/Version20261120124000.php new file mode 100644 index 0000000..dc817bb --- /dev/null +++ b/migrations/Version20261120124000.php @@ -0,0 +1,94 @@ +addSql(<<<'SQL' +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'firstname' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN firstname TO "firstName"; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'lastname' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN lastname TO "lastName"; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'isactive' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN isactive TO "isActive"; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'createdat' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN createdat TO "createdAt"; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'updatedat' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN updatedat TO "updatedAt"; + END IF; +END $$; +SQL); + } + + public function down(Schema $schema): void + { + $this->addSql(<<<'SQL' +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'firstName' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN "firstName" TO firstname; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'lastName' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN "lastName" TO lastname; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'isActive' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN "isActive" TO isactive; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'createdAt' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN "createdAt" TO createdat; + END IF; + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = 'profiles' AND column_name = 'updatedAt' + ) THEN + ALTER TABLE public.profiles RENAME COLUMN "updatedAt" TO updatedat; + END IF; +END $$; +SQL); + } +} diff --git a/migrations/Version20261120125000.php b/migrations/Version20261120125000.php new file mode 100644 index 0000000..ae197a7 --- /dev/null +++ b/migrations/Version20261120125000.php @@ -0,0 +1,32 @@ +addSql('ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS email VARCHAR(180) DEFAULT NULL'); + $this->addSql('ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS roles JSON DEFAULT \'["ROLE_USER"]\' NOT NULL'); + $this->addSql('ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS password VARCHAR(255) DEFAULT NULL'); + $this->addSql('CREATE UNIQUE INDEX IF NOT EXISTS uniq_profiles_email ON public.profiles (email)'); + } + + public function down(Schema $schema): void + { + $this->addSql('DROP INDEX IF EXISTS uniq_profiles_email'); + $this->addSql('ALTER TABLE public.profiles DROP COLUMN IF EXISTS password'); + $this->addSql('ALTER TABLE public.profiles DROP COLUMN IF EXISTS roles'); + $this->addSql('ALTER TABLE public.profiles DROP COLUMN IF EXISTS email'); + } +} diff --git a/migrations/Version20261120131000.php b/migrations/Version20261120131000.php new file mode 100644 index 0000000..5a52654 --- /dev/null +++ b/migrations/Version20261120131000.php @@ -0,0 +1,66 @@ +addSql(<<<'SQL' +DO $$ +DECLARE + r RECORD; +BEGIN + -- Special-case legacy table name from Prisma. + IF EXISTS ( + SELECT 1 FROM information_schema.tables + WHERE table_schema = 'public' AND table_name = 'ModelType' + ) THEN + EXECUTE 'ALTER TABLE public."ModelType" RENAME TO model_types'; + END IF; + + -- Rename columns containing uppercase letters. + FOR r IN + SELECT table_name, column_name + FROM information_schema.columns + WHERE table_schema = 'public' AND column_name ~ '[A-Z]' + LOOP + EXECUTE format( + 'ALTER TABLE public.%I RENAME COLUMN %I TO %I', + r.table_name, + r.column_name, + lower(r.column_name) + ); + END LOOP; + + -- Rename tables containing uppercase letters. + FOR r IN + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'public' AND table_name ~ '[A-Z]' + LOOP + EXECUTE format( + 'ALTER TABLE public.%I RENAME TO %I', + r.table_name, + lower(r.table_name) + ); + END LOOP; +END $$; +SQL); + } + + public function down(Schema $schema): void + { + // Irreversible: cannot restore original casing reliably. + } +} diff --git a/migrations/Version20261120140000.php b/migrations/Version20261120140000.php new file mode 100644 index 0000000..9a65ad0 --- /dev/null +++ b/migrations/Version20261120140000.php @@ -0,0 +1,26 @@ +addSql("ALTER TABLE custom_fields ALTER COLUMN options TYPE JSON USING to_json(options)"); + } + + public function down(Schema $schema): void + { + $this->addSql("ALTER TABLE custom_fields ALTER COLUMN options TYPE TEXT[] USING ARRAY(SELECT json_array_elements_text(options))"); + } +}