Module: DynamicMigrations::Postgres::Server::Database::Schema::Enums
- Defined in:
- lib/dynamic_migrations/postgres/server/database/schema/enums.rb
Defined Under Namespace
Classes: EnumAlreadyExistsError, EnumDoesNotExistError
Instance Method Summary collapse
-
#add_enum(enum_name, values, description: nil) ⇒ Object
create and add a new enum.
-
#enum(enum_name) ⇒ Object
return a enum by its name, raises an error if the enum does not exist.
-
#enums ⇒ Object
returns an array of all enums in the schema.
- #enums_hash ⇒ Object
-
#has_enum?(enum_name) ⇒ Boolean
returns true/false representing if a enum with the provided name exists.
Instance Method Details
#add_enum(enum_name, values, description: nil) ⇒ Object
create and add a new enum
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/dynamic_migrations/postgres/server/database/schema/enums.rb', line 16 def add_enum enum_name, values, description: nil raise ExpectedSymbolError, enum_name unless enum_name.is_a? Symbol if has_enum? enum_name raise(EnumAlreadyExistsError, "Enum #{enum_name} already exists") end included_target = self if included_target.is_a? Schema new_enum = @enums[enum_name] = Enum.new source, included_target, enum_name, values, description: description else raise ModuleIncludedIntoUnexpectedTargetError, included_target end # sort the hash so that the enums are in alphabetical order by name sorted_enums = {} @enums.keys.sort.each do |enum_name| sorted_enums[enum_name] = @enums[enum_name] end @enums = sorted_enums # return the new enum new_enum end |
#enum(enum_name) ⇒ Object
return a enum by its name, raises an error if the enum does not exist
38 39 40 41 42 43 44 |
# File 'lib/dynamic_migrations/postgres/server/database/schema/enums.rb', line 38 def enum enum_name raise ExpectedSymbolError, enum_name unless enum_name.is_a? Symbol unless has_enum? enum_name raise EnumDoesNotExistError, "Enum `#{enum_name}` does not exist" end @enums[enum_name] end |
#enums ⇒ Object
returns an array of all enums in the schema
53 54 55 |
# File 'lib/dynamic_migrations/postgres/server/database/schema/enums.rb', line 53 def enums @enums.values end |
#enums_hash ⇒ Object
57 58 59 |
# File 'lib/dynamic_migrations/postgres/server/database/schema/enums.rb', line 57 def enums_hash @enums end |
#has_enum?(enum_name) ⇒ Boolean
returns true/false representing if a enum with the provided name exists
47 48 49 50 |
# File 'lib/dynamic_migrations/postgres/server/database/schema/enums.rb', line 47 def has_enum? enum_name raise ExpectedSymbolError, enum_name unless enum_name.is_a? Symbol @enums.key? enum_name end |