Thanks Jeremy, that was also my train of thought.

But I don't see an easy way in `pg_enum` to check for existing enum values.
The only way I see would be to check the schema of an existing table, which
is not easily replicable.

Best,
Michael


Le jeu. 9 juil. 2020 à 19:55, Jeremy Evans <[email protected]> a
écrit :

> On Thursday, July 9, 2020 at 8:54:42 AM UTC-7, Michael Monerau wrote:
>>
>> Hi,
>>
>> When using `add_enum_value` in an `up` block with pg_enum, what is the
>> best practice for the `down` block?
>>
>> I understand a `remove_enum_value` does not exist since it could leave
>> rows in a corrupt state.
>>
>> I'm inclined to leave the `down` block empty. But then, re-running the up
>> block and its `add_enum_value` would fail because the enum value already
>> exists (wasn't removed by the `down` block). That leaves the migrations in
>> a non-runnable state.
>>
>> So the migration is irreversible.
>>
>> Adding `add_enum_value?` similar to `create_table?` would provide a
>> good-enough workaround in my use case. Is it something that can be done
>> through pg_enum or with custom queries?
>>
>
> The best way to handle this is to raise an exception in the down block, to
> make it irreversible.  Then you shouldn't need to worry about the up block
> running when the enum value is already present. I'm not sure if that
> approach is considered acceptable.  If not, you'll have to change the up
> block to check for the existing enum values, and if the one you want to add
> is already present, then don't attempt to add it again.  I don't think it's
> worth adding an add_enum_value? method to handle that.
>
> Thanks,
> Jeremy
>
> --
> You received this message because you are subscribed to the Google Groups
> "sequel-talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sequel-talk/cf000b7a-082e-47b1-b633-2687620add91o%40googlegroups.com
> <https://groups.google.com/d/msgid/sequel-talk/cf000b7a-082e-47b1-b633-2687620add91o%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/CAAkfp_Sbx4O%2BNqNKZKjdi8e7traxZBoGw%3D2kTfvrMOu7sSSYAw%40mail.gmail.com.

Reply via email to