db_schema 0.3.1 → 0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +7 -3
  3. data/db_schema.gemspec +2 -1
  4. data/lib/db_schema.rb +4 -3
  5. data/lib/db_schema/normalizer.rb +2 -2
  6. data/lib/db_schema/reader.rb +8 -350
  7. data/lib/db_schema/version.rb +1 -1
  8. metadata +22 -43
  9. data/lib/db_schema/definitions.rb +0 -10
  10. data/lib/db_schema/definitions/check_constraint.rb +0 -21
  11. data/lib/db_schema/definitions/enum.rb +0 -23
  12. data/lib/db_schema/definitions/extension.rb +0 -12
  13. data/lib/db_schema/definitions/field.rb +0 -47
  14. data/lib/db_schema/definitions/field/array.rb +0 -30
  15. data/lib/db_schema/definitions/field/base.rb +0 -108
  16. data/lib/db_schema/definitions/field/binary.rb +0 -9
  17. data/lib/db_schema/definitions/field/bit_string.rb +0 -15
  18. data/lib/db_schema/definitions/field/boolean.rb +0 -9
  19. data/lib/db_schema/definitions/field/character.rb +0 -19
  20. data/lib/db_schema/definitions/field/custom.rb +0 -32
  21. data/lib/db_schema/definitions/field/datetime.rb +0 -30
  22. data/lib/db_schema/definitions/field/extensions/chkpass.rb +0 -9
  23. data/lib/db_schema/definitions/field/extensions/citext.rb +0 -9
  24. data/lib/db_schema/definitions/field/extensions/cube.rb +0 -9
  25. data/lib/db_schema/definitions/field/extensions/hstore.rb +0 -9
  26. data/lib/db_schema/definitions/field/extensions/isn.rb +0 -37
  27. data/lib/db_schema/definitions/field/extensions/ltree.rb +0 -9
  28. data/lib/db_schema/definitions/field/extensions/seg.rb +0 -9
  29. data/lib/db_schema/definitions/field/geometric.rb +0 -33
  30. data/lib/db_schema/definitions/field/json.rb +0 -13
  31. data/lib/db_schema/definitions/field/monetary.rb +0 -9
  32. data/lib/db_schema/definitions/field/network.rb +0 -17
  33. data/lib/db_schema/definitions/field/numeric.rb +0 -30
  34. data/lib/db_schema/definitions/field/range.rb +0 -29
  35. data/lib/db_schema/definitions/field/text_search.rb +0 -13
  36. data/lib/db_schema/definitions/field/uuid.rb +0 -9
  37. data/lib/db_schema/definitions/foreign_key.rb +0 -44
  38. data/lib/db_schema/definitions/index.rb +0 -66
  39. data/lib/db_schema/definitions/index/column.rb +0 -32
  40. data/lib/db_schema/definitions/index/expression.rb +0 -19
  41. data/lib/db_schema/definitions/index/table_field.rb +0 -19
  42. data/lib/db_schema/definitions/schema.rb +0 -36
  43. data/lib/db_schema/definitions/table.rb +0 -130
@@ -1,30 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Timestamp < Base
5
- register :timestamp, :'timestamp without time zone'
6
- end
7
-
8
- class Timestamptz < Base
9
- register :timestamptz, :'timestamp with time zone'
10
- end
11
-
12
- class Date < Base
13
- register :date
14
- end
15
-
16
- class Time < Base
17
- register :time, :'time without time zone'
18
- end
19
-
20
- class Timetz < Base
21
- register :timetz, :'time with time zone'
22
- end
23
-
24
- class Interval < Base
25
- register :interval
26
- attributes :fields
27
- end
28
- end
29
- end
30
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Chkpass < Base
5
- register :chkpass
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Citext < Base
5
- register :citext
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Cube < Base
5
- register :cube
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Hstore < Base
5
- register :hstore
6
- end
7
- end
8
- end
9
- end
@@ -1,37 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class EAN13 < Base
5
- register :ean13
6
- end
7
-
8
- class ISBN13 < Base
9
- register :isbn13
10
- end
11
-
12
- class ISMN13 < Base
13
- register :ismn13
14
- end
15
-
16
- class ISSN13 < Base
17
- register :issn13
18
- end
19
-
20
- class ISBN < Base
21
- register :isbn
22
- end
23
-
24
- class ISMN < Base
25
- register :ismn
26
- end
27
-
28
- class ISSN < Base
29
- register :issn
30
- end
31
-
32
- class UPC < Base
33
- register :upc
34
- end
35
- end
36
- end
37
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Ltree < Base
5
- register :ltree
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Seg < Base
5
- register :seg
6
- end
7
- end
8
- end
9
- end
@@ -1,33 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Point < Base
5
- register :point
6
- end
7
-
8
- class Line < Base
9
- register :line
10
- end
11
-
12
- class Lseg < Base
13
- register :lseg
14
- end
15
-
16
- class Box < Base
17
- register :box
18
- end
19
-
20
- class Path < Base
21
- register :path
22
- end
23
-
24
- class Polygon < Base
25
- register :polygon
26
- end
27
-
28
- class Circle < Base
29
- register :circle
30
- end
31
- end
32
- end
33
- end
@@ -1,13 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class JSON < Base
5
- register :json
6
- end
7
-
8
- class JSONB < Base
9
- register :jsonb
10
- end
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Money < Base
5
- register :money
6
- end
7
- end
8
- end
9
- end
@@ -1,17 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Cidr < Base
5
- register :cidr
6
- end
7
-
8
- class Inet < Base
9
- register :inet
10
- end
11
-
12
- class MacAddr < Base
13
- register :macaddr
14
- end
15
- end
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class SmallInt < Base
5
- register :smallint
6
- end
7
-
8
- class Integer < Base
9
- register :integer
10
- end
11
-
12
- class BigInt < Base
13
- register :bigint
14
- end
15
-
16
- class Numeric < Base
17
- register :numeric, :decimal
18
- attributes :precision, :scale
19
- end
20
-
21
- class Real < Base
22
- register :real
23
- end
24
-
25
- class DoublePrecision < Base
26
- register :'double precision', :float
27
- end
28
- end
29
- end
30
- end
@@ -1,29 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class Int4Range < Base
5
- register :int4range
6
- end
7
-
8
- class Int8Range < Base
9
- register :int8range
10
- end
11
-
12
- class NumRange < Base
13
- register :numrange
14
- end
15
-
16
- class TsRange < Base
17
- register :tsrange
18
- end
19
-
20
- class TsTzRange < Base
21
- register :tstzrange
22
- end
23
-
24
- class DateRange < Base
25
- register :daterange
26
- end
27
- end
28
- end
29
- end
@@ -1,13 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class TsVector < Base
5
- register :tsvector
6
- end
7
-
8
- class TsQuery < Base
9
- register :tsquery
10
- end
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- module Field
4
- class UUID < Base
5
- register :uuid
6
- end
7
- end
8
- end
9
- end
@@ -1,44 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- class ForeignKey
4
- include Dry::Equalizer(:name, :fields, :table, :keys, :on_update, :on_delete, :deferrable?)
5
- attr_reader :name, :fields, :table, :keys, :on_update, :on_delete
6
-
7
- def initialize(name:, fields:, table:, keys: [], on_update: :no_action, on_delete: :no_action, deferrable: false)
8
- @name = name
9
- @fields = fields
10
- @table = table
11
- @keys = keys
12
- @on_update = on_update
13
- @on_delete = on_delete
14
- @deferrable = deferrable
15
- end
16
-
17
- def references_primary_key?
18
- keys.empty?
19
- end
20
-
21
- def deferrable?
22
- @deferrable
23
- end
24
-
25
- def options
26
- {
27
- deferrable: deferrable?,
28
- name: name,
29
- on_delete: on_delete,
30
- on_update: on_update
31
- }.tap do |options|
32
- options[:key] = keys unless references_primary_key?
33
- end
34
- end
35
- end
36
-
37
- class NullForeignKey < ForeignKey
38
- def initialize
39
- @fields = []
40
- @keys = []
41
- end
42
- end
43
- end
44
- end
@@ -1,66 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- class Index
4
- include Dry::Equalizer(:name, :columns, :unique?, :type, :condition)
5
- attr_reader :name, :columns, :type, :condition
6
-
7
- def initialize(name:, columns:, unique: false, type: :btree, condition: nil)
8
- @name = name.to_sym
9
- @columns = columns
10
- @unique = unique
11
- @type = type
12
- @condition = condition
13
- end
14
-
15
- def unique?
16
- @unique
17
- end
18
-
19
- def btree?
20
- type == :btree
21
- end
22
-
23
- def columns_to_sequel
24
- if btree?
25
- columns.map(&:ordered_expression)
26
- else
27
- columns.map(&:to_sequel)
28
- end
29
- end
30
-
31
- def has_expressions?
32
- !condition.nil? || columns.any?(&:expression?)
33
- end
34
-
35
- def with_name(new_name)
36
- Index.new(
37
- name: new_name,
38
- columns: columns,
39
- unique: unique?,
40
- type: type,
41
- condition: condition
42
- )
43
- end
44
-
45
- def with_condition(new_condition)
46
- Index.new(
47
- name: name,
48
- columns: columns,
49
- unique: unique?,
50
- type: type,
51
- condition: new_condition
52
- )
53
- end
54
- end
55
-
56
- class NullIndex < Index
57
- def initialize
58
- @columns = []
59
- end
60
- end
61
- end
62
- end
63
-
64
- require_relative 'index/column'
65
- require_relative 'index/table_field'
66
- require_relative 'index/expression'
@@ -1,32 +0,0 @@
1
- module DbSchema
2
- module Definitions
3
- class Index
4
- class Column
5
- include Dry::Equalizer(:name, :order, :nulls)
6
- attr_reader :name, :order, :nulls
7
-
8
- def initialize(name, order: :asc, nulls: order == :asc ? :last : :first)
9
- @name = name
10
- @order = order
11
- @nulls = nulls
12
- end
13
-
14
- def asc?
15
- @order == :asc
16
- end
17
-
18
- def desc?
19
- @order == :desc
20
- end
21
-
22
- def ordered_expression
23
- if asc?
24
- Sequel.asc(to_sequel, nulls: nulls)
25
- else
26
- Sequel.desc(to_sequel, nulls: nulls)
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end