Class: Baza::Driver::Pg::Tables

Inherits:
Object
  • Object
show all
Defined in:
lib/baza/driver/pg/tables.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Tables

Returns a new instance of Tables.



4
5
6
7
# File 'lib/baza/driver/pg/tables.rb', line 4

def initialize(args)
  @args = args
  @db = @args.fetch(:db)
end

Instance Attribute Details

#dbObject (readonly)

Returns the value of attribute db.



2
3
4
# File 'lib/baza/driver/pg/tables.rb', line 2

def db
  @db
end

Instance Method Details

#[](table_name) ⇒ Object



9
10
11
12
13
# File 'lib/baza/driver/pg/tables.rb', line 9

def [](table_name)
  table = list(name: table_name).first
  raise Baza::Errors::TableNotFound unless table
  table
end

#create(name, data, args = nil) ⇒ Object



42
43
44
# File 'lib/baza/driver/pg/tables.rb', line 42

def create(name, data, args = nil)
  @db.current_database.create_table(name, data, args)
end

#list(args = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/baza/driver/pg/tables.rb', line 15

def list(args = {})
  tables_list = [] unless block_given?

  where_args = {
    table_catalog: @db.opts[:db],
    table_schema: "public"
  }
  where_args[:table_name] = args.fetch(:name) if args[:name]

  @db.select([:information_schema, :tables], where_args, orderby: :table_name) do |table_data|
    table = Baza::Driver::Pg::Table.new(
      driver: @db.driver,
      data: table_data
    )

    next if table.native?

    if tables_list
      tables_list << table
    else
      yield table
    end
  end

  tables_list
end