Sha256: afb719b06b59f2ab556fd11082b86178f2b2dea3a9dcb75f30015f7ac4343c1a
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
module Sequel module Mysql module GeneratedColumns # The order of column modifiers to use when defining a column. GENERATED_COLUMN_DEFINITION_ORDER = [:stored, :unique, :null, :primary_key] STORED = ' STORED'.freeze UNIQUE = ' UNIQUE'.freeze NULL = ' NULL'.freeze NOT_NULL = ' NOT NULL'.freeze PRIMARY_KEY = ' PRIMARY KEY'.freeze # Modify column definition generator method to support generated columns def column_definition_sql(column) if expr = column[:as] sql = String.new sql << "#{quote_identifier(column[:name])} #{type_literal(column)}" sql << " AS (#{literal(expr)})" generated_column_definition_order.each{|m| send(:"generated_column_definition_#{m}_sql", sql, column)} sql else super end end # The order of the generated column definition, as an array of symbols. def generated_column_definition_order GENERATED_COLUMN_DEFINITION_ORDER end # Add stored SQL fragment to column creation SQL. def generated_column_definition_stored_sql(sql, column) sql << STORED if column[:stored] end # Add unique SQL fragment to column creation SQL. def generated_column_definition_unique_sql(sql, column) sql << UNIQUE if column[:unique] end # Add null SQL fragment to column creation SQL. def generated_column_definition_null_sql(sql, column) null = column.fetch(:null, column[:allow_null]) sql << NOT_NULL if null == false sql << NULL if null == true end # Add unique SQL fragment to column creation SQL. def generated_column_definition_primary_key_sql(sql, column) sql << PRIMARY_KEY if column[:primary_key] end end end Database.register_extension(:mysql_generated_columns, Mysql::GeneratedColumns) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sequel-mysql_generated_columns-0.2.0 | lib/sequel/extensions/mysql_generated_columns.rb |