db_schema-definitions 0.1

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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +15 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +56 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +10 -0
  12. data/bin/setup +6 -0
  13. data/db_schema-definitions.gemspec +31 -0
  14. data/lib/db_schema/definitions.rb +11 -0
  15. data/lib/db_schema/definitions/check_constraint.rb +17 -0
  16. data/lib/db_schema/definitions/enum.rb +23 -0
  17. data/lib/db_schema/definitions/extension.rb +12 -0
  18. data/lib/db_schema/definitions/field.rb +47 -0
  19. data/lib/db_schema/definitions/field/array.rb +30 -0
  20. data/lib/db_schema/definitions/field/base.rb +104 -0
  21. data/lib/db_schema/definitions/field/binary.rb +9 -0
  22. data/lib/db_schema/definitions/field/bit_string.rb +15 -0
  23. data/lib/db_schema/definitions/field/boolean.rb +9 -0
  24. data/lib/db_schema/definitions/field/character.rb +19 -0
  25. data/lib/db_schema/definitions/field/custom.rb +32 -0
  26. data/lib/db_schema/definitions/field/datetime.rb +30 -0
  27. data/lib/db_schema/definitions/field/extensions/chkpass.rb +9 -0
  28. data/lib/db_schema/definitions/field/extensions/citext.rb +9 -0
  29. data/lib/db_schema/definitions/field/extensions/cube.rb +9 -0
  30. data/lib/db_schema/definitions/field/extensions/hstore.rb +9 -0
  31. data/lib/db_schema/definitions/field/extensions/isn.rb +37 -0
  32. data/lib/db_schema/definitions/field/extensions/ltree.rb +9 -0
  33. data/lib/db_schema/definitions/field/extensions/seg.rb +9 -0
  34. data/lib/db_schema/definitions/field/geometric.rb +33 -0
  35. data/lib/db_schema/definitions/field/json.rb +13 -0
  36. data/lib/db_schema/definitions/field/monetary.rb +9 -0
  37. data/lib/db_schema/definitions/field/network.rb +17 -0
  38. data/lib/db_schema/definitions/field/numeric.rb +30 -0
  39. data/lib/db_schema/definitions/field/range.rb +29 -0
  40. data/lib/db_schema/definitions/field/text_search.rb +13 -0
  41. data/lib/db_schema/definitions/field/uuid.rb +9 -0
  42. data/lib/db_schema/definitions/foreign_key.rb +44 -0
  43. data/lib/db_schema/definitions/index.rb +56 -0
  44. data/lib/db_schema/definitions/index/column.rb +32 -0
  45. data/lib/db_schema/definitions/index/expression.rb +19 -0
  46. data/lib/db_schema/definitions/index/table_field.rb +19 -0
  47. data/lib/db_schema/definitions/schema.rb +36 -0
  48. data/lib/db_schema/definitions/table.rb +120 -0
  49. data/lib/db_schema/definitions/version.rb +5 -0
  50. metadata +218 -0
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Bytea < Base
5
+ register :bytea
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Bit < Base
5
+ register :bit
6
+ attributes length: 1
7
+ end
8
+
9
+ class Varbit < Base
10
+ register :varbit, :'bit varying'
11
+ attributes :length
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Boolean < Base
5
+ register :boolean
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Char < Base
5
+ register :char, :character
6
+ attributes length: 1
7
+ end
8
+
9
+ class Varchar < Base
10
+ register :varchar, :'character varying'
11
+ attributes :length
12
+ end
13
+
14
+ class Text < Base
15
+ register :text
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,32 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Custom < Base
5
+ class << self
6
+ def class_for(type_name)
7
+ raise ArgumentError if type_name.nil?
8
+
9
+ custom_types[type_name] ||= Class.new(self) do
10
+ define_method :type do
11
+ type_name
12
+ end
13
+
14
+ define_singleton_method :type do
15
+ type_name
16
+ end
17
+
18
+ define_method :custom? do
19
+ true
20
+ end
21
+ end
22
+ end
23
+
24
+ private
25
+ def custom_types
26
+ @custom_types ||= {}
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
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
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Chkpass < Base
5
+ register :chkpass
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Citext < Base
5
+ register :citext
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Cube < Base
5
+ register :cube
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Hstore < Base
5
+ register :hstore
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,37 @@
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
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Ltree < Base
5
+ register :ltree
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Seg < Base
5
+ register :seg
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,33 @@
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
@@ -0,0 +1,13 @@
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
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class Money < Base
5
+ register :money
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
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
@@ -0,0 +1,30 @@
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
@@ -0,0 +1,29 @@
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
@@ -0,0 +1,13 @@
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
@@ -0,0 +1,9 @@
1
+ module DbSchema
2
+ module Definitions
3
+ module Field
4
+ class UUID < Base
5
+ register :uuid
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,44 @@
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