Module: AR::Sequence::Adapter
- Defined in:
- lib/ar/sequence/adapter.rb
Constant Summary collapse
- SEQUENCE_COMMENT =
"created by ar-sequence"
Instance Method Summary collapse
- #check_sequences ⇒ Object
- #create_sequence(name, options = {}) ⇒ Object
- #custom_sequence?(sequence_name) ⇒ Boolean
-
#drop_sequence(name) ⇒ Object
Drop a sequence by its name.
- #quote_name(name) ⇒ Object
Instance Method Details
#check_sequences ⇒ Object
14 15 16 17 18 |
# File 'lib/ar/sequence/adapter.rb', line 14 def check_sequences select_all( "SELECT * FROM information_schema.sequences ORDER BY sequence_name" ).to_a end |
#create_sequence(name, options = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ar/sequence/adapter.rb', line 20 def create_sequence(name, = {}) increment = [:increment] || [:step] name = quote_name(name) sql = ["CREATE SEQUENCE IF NOT EXISTS #{name}"] sql << "INCREMENT BY #{increment}" if increment sql << "START WITH #{options[:start]}" if [:start] sql << ";" sql << "COMMENT ON SEQUENCE #{name} IS '#{SEQUENCE_COMMENT}';" execute(sql.join("\n")) end |
#custom_sequence?(sequence_name) ⇒ Boolean
8 9 10 11 12 |
# File 'lib/ar/sequence/adapter.rb', line 8 def custom_sequence?(sequence_name) execute( "SELECT obj_description('#{sequence_name}'::regclass, 'pg_class');" ).first["obj_description"] == SEQUENCE_COMMENT end |
#drop_sequence(name) ⇒ Object
Drop a sequence by its name.
drop_sequence :user_position
37 38 39 40 41 |
# File 'lib/ar/sequence/adapter.rb', line 37 def drop_sequence(name) name = quote_name(name) sql = "DROP SEQUENCE #{name}" execute(sql) end |
#quote_name(name) ⇒ Object
43 44 45 |
# File 'lib/ar/sequence/adapter.rb', line 43 def quote_name(name) name.split(".", 2).map {|part| quote_column_name(part) }.join(".") end |