class PGTrunk::Operations::Sequences::CreateSequence

@private

Public Instance Methods

invert() click to toggle source
# File lib/pg_trunk/operations/sequences/create_sequence.rb, line 141
def invert
  irreversible!("if_not_exists: true") if if_not_exists
  DropSequence.new(**to_h.except(:if_not_exists))
end
to_sql(_server_version) click to toggle source
# File lib/pg_trunk/operations/sequences/create_sequence.rb, line 137
def to_sql(_server_version)
  [create_sequence, *comment_sequence, register_sequence].join(" ")
end

Private Instance Methods

comment_sequence() click to toggle source
# File lib/pg_trunk/operations/sequences/create_sequence.rb, line 163
    def comment_sequence
      <<~SQL.squish if comment.present?
        COMMENT ON SEQUENCE #{name.to_sql} IS $comment$#{comment}$comment$;
      SQL
    end
create_sequence() click to toggle source
# File lib/pg_trunk/operations/sequences/create_sequence.rb, line 148
def create_sequence
  sql = "CREATE SEQUENCE"
  sql << " IF NOT EXISTS" if if_not_exists
  sql << " #{name.to_sql}"
  sql << " AS #{type}" if type.present?
  sql << " INCREMENT BY #{increment_by}" if increment_by.present?
  sql << " MINVALUE #{min_value}" if min_value.present?
  sql << " MAXVALUE #{max_value}" if max_value.present?
  sql << " START WITH #{start_with}" if start_with.present?
  sql << " CACHE #{cache}" if cache.present?
  sql << " OWNED BY #{table}.#{column}" if table.present? && column.present?
  sql << " CYCLE" if cycle
  sql << ";"
end
register_sequence() click to toggle source
# File lib/pg_trunk/operations/sequences/create_sequence.rb, line 169
    def register_sequence
      <<~SQL.squish
        INSERT INTO pg_trunk (oid, classid)
          SELECT c.oid, 'pg_sequence'::regclass
          FROM pg_sequence s JOIN pg_class c ON c.oid = s.seqrelid
          WHERE c.relname = #{name.quoted}
            AND c.relnamespace = #{name.namespace}
        ON CONFLICT DO NOTHING;
      SQL
    end