lib/ridgepole/dsl_parser/context.rb in ridgepole-1.2.1 vs lib/ridgepole/dsl_parser/context.rb in ridgepole-2.0.0.beta
- old
+ new
@@ -104,9 +104,39 @@
expression: expression,
options: options,
}
end
+ def add_exclusion_constraint(table_name, expression, options = {})
+ table_name = table_name.to_s
+ expression = expression.to_s
+ options[:name] = options[:name].to_s if options[:name]
+
+ idx = options[:name] || expression
+
+ @__definition[table_name] ||= {}
+ @__definition[table_name][:exclusion_constraints] ||= {}
+ @__definition[table_name][:exclusion_constraints][idx] = {
+ expression: expression,
+ options: options,
+ }
+ end
+
+ def add_unique_constraint(table_name, column_name, options = {})
+ table_name = table_name.to_s
+ column_name = Array(column_name).map(&:to_sym)
+ options[:name] = options[:name].to_s if options[:name]
+
+ idx = options[:name] || column_name
+
+ @__definition[table_name] ||= {}
+ @__definition[table_name][:unique_constraints] ||= {}
+ @__definition[table_name][:unique_constraints][idx] = {
+ column_name: column_name,
+ options: options,
+ }
+ end
+
def require(file)
schemafile = %r{\A/}.match?(file) ? file : File.join(@__working_dir, file)
if File.exist?(schemafile)
instance_eval(File.read(schemafile), schemafile)