Sha256: 0819744160393b30c8a805339d7f4eee15e6f1753b673b97813ac30a9a15b19f
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
# frozen_string_literals: true module Jobshop module Helpers module Migration def idx_table_name_pkey(table_name) execute <<~SQL ALTER TABLE #{table_name} ADD PRIMARY KEY USING INDEX idx_#{table_name}_pkey; SQL end def fk_organization_id(table_name) foreign_key table_name, :jobshop_organizations, :organization_id end def fk_created_by_id(table_name) foreign_key table_name, :jobshop_people, { organization_id: :organization_id, created_by_id: :person_id } end def nested_set_attrs(table_name) reference_column = table_name.sub(/jobshop_/, "").singularize + "_id" add_column table_name, :parent_id, :uuid add_column table_name, :lft, :uuid add_column table_name, :rgt, :uuid foreign_key table_name, table_name, { organization_id: :organization_id, parent_id: reference_column } end def foreign_key(table_name, reference_table, columns, options = "") if columns.is_a?(Hash) keys = [] references = [] columns.each do |k, v| keys.push(k) references.push(v) end else keys = references = Array(columns) end constraint_name = "fk_#{table_name}_#{keys.join('_')}" execute <<~SQL ALTER TABLE #{table_name} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{keys.join(", ")}) REFERENCES #{reference_table} (#{references.join(", ")}) #{options}; SQL end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jobshop-0.0.163 | lib/jobshop/helpers/migration.rb |