Class: Dumbo::Extension
- Inherits:
-
Struct
- Object
- Struct
- Dumbo::Extension
- Defined in:
- lib/dumbo/extension.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#version ⇒ Object
Returns the value of attribute version.
Class Method Summary collapse
Instance Method Summary collapse
- #casts ⇒ Object
- #create ⇒ Object
- #functions ⇒ Object
- #obj_id ⇒ Object
- #objects ⇒ Object
- #operators ⇒ Object
-
#releases ⇒ Object
main releases without migrations.
- #types ⇒ Object
- #versions ⇒ Object
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name
2 3 4 |
# File 'lib/dumbo/extension.rb', line 2 def name @name end |
#version ⇒ Object
Returns the value of attribute version
2 3 4 |
# File 'lib/dumbo/extension.rb', line 2 def version @version end |
Class Method Details
.file_name ⇒ Object
22 23 24 |
# File 'lib/dumbo/extension.rb', line 22 def file_name "#{name}--#{version}.sql" end |
.name ⇒ Object
4 5 6 |
# File 'lib/dumbo/extension.rb', line 4 def name @_name ||= File.read(makefile)[/EXTENSION\s*=\s*([^\s]*)/, 1] end |
.version ⇒ Object
8 9 10 |
# File 'lib/dumbo/extension.rb', line 8 def version @_version ||= File.read(control_file)[/default_version\s*=\s*'([^']*)'/, 1] end |
.version!(string) ⇒ Object
16 17 18 19 20 |
# File 'lib/dumbo/extension.rb', line 16 def version!(string) content = File.read(control_file) new_content = content.gsub(version, new_version) File.open(control_file, 'w') { |file| file.puts new_content } end |
.versions ⇒ Object
12 13 14 |
# File 'lib/dumbo/extension.rb', line 12 def versions new.versions end |
Instance Method Details
#casts ⇒ Object
103 104 105 |
# File 'lib/dumbo/extension.rb', line 103 def casts objects.select { |o| o.kind_of?(Cast) } end |
#create ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/dumbo/extension.rb', line 60 def create execute "DROP EXTENSION IF EXISTS #{name}" create_sql = "CREATE EXTENSION #{name}" create_sql = "#{create_sql} VERSION '#{version}'" unless version.nil? execute create_sql self end |
#functions ⇒ Object
99 100 101 |
# File 'lib/dumbo/extension.rb', line 99 def functions objects.select { |o| o.kind_of?(Function) } end |
#obj_id ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/dumbo/extension.rb', line 70 def obj_id @obj_id ||= begin result = execute <<-SQL SELECT e.extname, e.oid FROM pg_catalog.pg_extension e WHERE e.extname ~ '^(#{name})$' ORDER BY 1; SQL result.first['oid'] end end |
#objects ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/dumbo/extension.rb', line 82 def objects @objects ||= begin result = execute <<-SQL SELECT classid::pg_catalog.regclass, objid FROM pg_catalog.pg_depend WHERE refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass AND refobjid = '#{obj_id}' AND deptype = 'e' ORDER BY 1; SQL result.map { |r| PgObject.new(r['objid']).get(r['classid']) } end end |
#operators ⇒ Object
107 108 109 |
# File 'lib/dumbo/extension.rb', line 107 def operators objects.select { |o| o.kind_of?(Operator) } end |
#releases ⇒ Object
main releases without migrations
46 47 48 |
# File 'lib/dumbo/extension.rb', line 46 def releases Dir.glob("#{name}--*.sql").reject { |f| f =~ /\d--\d/ } end |
#types ⇒ Object
95 96 97 |
# File 'lib/dumbo/extension.rb', line 95 def types objects.select { |o| o.kind_of?(Type) } end |
#versions ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/dumbo/extension.rb', line 50 def versions releases.map do |file_name| if version_string = file_name[/([\d+\.]+)\.sql$/, 1] ExtensionVersion.new_from_string(version_string) else nil end end.compact.sort end |