rom-sql 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/Gemfile +1 -0
  4. data/lib/rom/sql/attribute.rb +1 -1
  5. data/lib/rom/sql/projection_dsl.rb +6 -0
  6. data/lib/rom/sql/version.rb +1 -1
  7. data/rom-sql.gemspec +1 -1
  8. data/spec/integration/association/many_to_many/custom_fks_spec.rb +9 -13
  9. data/spec/integration/association/many_to_many/from_view_spec.rb +9 -8
  10. data/spec/integration/association/many_to_many_spec.rb +103 -102
  11. data/spec/integration/association/many_to_one/custom_fks_spec.rb +6 -7
  12. data/spec/integration/association/many_to_one/from_view_spec.rb +8 -4
  13. data/spec/integration/association/many_to_one_spec.rb +61 -54
  14. data/spec/integration/association/one_to_many/custom_fks_spec.rb +7 -6
  15. data/spec/integration/association/one_to_many/from_view_spec.rb +7 -10
  16. data/spec/integration/association/one_to_many/self_ref_spec.rb +6 -6
  17. data/spec/integration/association/one_to_many_spec.rb +0 -3
  18. data/spec/integration/association/one_to_one_spec.rb +17 -11
  19. data/spec/integration/association/one_to_one_through_spec.rb +3 -5
  20. data/spec/integration/commands/create_spec.rb +33 -22
  21. data/spec/integration/commands/update_spec.rb +3 -3
  22. data/spec/integration/commands/upsert_spec.rb +1 -1
  23. data/spec/integration/gateway_spec.rb +12 -8
  24. data/spec/integration/migration_spec.rb +4 -3
  25. data/spec/integration/plugins/associates/many_to_many_spec.rb +2 -2
  26. data/spec/integration/plugins/associates_spec.rb +1 -1
  27. data/spec/integration/relation_schema_spec.rb +4 -5
  28. data/spec/integration/schema/call_spec.rb +1 -1
  29. data/spec/integration/schema/inferrer/mysql_spec.rb +22 -23
  30. data/spec/integration/schema/inferrer/postgres_spec.rb +83 -82
  31. data/spec/integration/schema/inferrer/sqlite_spec.rb +18 -19
  32. data/spec/integration/schema/inferrer_spec.rb +54 -33
  33. data/spec/integration/schema/prefix_spec.rb +9 -11
  34. data/spec/integration/schema/qualified_spec.rb +9 -11
  35. data/spec/integration/schema/rename_spec.rb +13 -15
  36. data/spec/integration/schema/view_spec.rb +2 -2
  37. data/spec/integration/sequel_api_spec.rb +1 -1
  38. data/spec/integration/setup_spec.rb +5 -5
  39. data/spec/integration/support/active_support_notifications_spec.rb +2 -2
  40. data/spec/integration/support/rails_log_subscriber_spec.rb +2 -2
  41. data/spec/shared/accounts.rb +44 -0
  42. data/spec/shared/database_setup.rb +42 -81
  43. data/spec/shared/notes.rb +21 -0
  44. data/spec/shared/posts.rb +32 -0
  45. data/spec/shared/puppies.rb +13 -0
  46. data/spec/shared/relations.rb +1 -1
  47. data/spec/shared/users.rb +29 -0
  48. data/spec/shared/users_and_tasks.rb +32 -18
  49. data/spec/spec_helper.rb +18 -30
  50. data/spec/support/env_helper.rb +25 -0
  51. data/spec/support/oracle/create_users.sql +7 -0
  52. data/spec/support/oracle/set_sys_passwords.sql +2 -0
  53. data/spec/unit/plugin/pagination_spec.rb +2 -2
  54. data/spec/unit/plugin/timestamp_spec.rb +1 -1
  55. data/spec/unit/projection_dsl_spec.rb +8 -0
  56. data/spec/unit/relation/group_spec.rb +5 -3
  57. data/spec/unit/relation/max_spec.rb +1 -1
  58. data/spec/unit/relation/select_spec.rb +7 -0
  59. metadata +33 -5
  60. data/spec/shared/users_and_accounts.rb +0 -10
@@ -1,7 +1,7 @@
1
1
  require 'dry-struct'
2
2
 
3
- RSpec.describe 'Commands / Update' do
4
- include_context 'database setup'
3
+ RSpec.describe 'Commands / Update', seeds: false do
4
+ include_context 'users'
5
5
 
6
6
  subject(:users) { container.command(:users) }
7
7
 
@@ -73,7 +73,7 @@ RSpec.describe 'Commands / Update' do
73
73
 
74
74
  expect {
75
75
  users.update.by_id(piotr[:id]).call(name: nil)
76
- }.to raise_error(ROM::SQL::NotNullConstraintError, /name/)
76
+ }.to raise_error(ROM::SQL::NotNullConstraintError, /name/i)
77
77
  end
78
78
 
79
79
  it 'materializes single result' do
@@ -1,4 +1,4 @@
1
- RSpec.describe 'Commands / Postgres / Upsert', :postgres do
1
+ RSpec.describe 'Commands / Postgres / Upsert', :postgres, seeds: false do
2
2
  subject(:command) { commands[:tasks][:create_or_update] }
3
3
 
4
4
  include_context 'relations'
@@ -1,19 +1,17 @@
1
- RSpec.describe ROM::SQL::Gateway, :postgres, skip_tables: true do
1
+ RSpec.describe ROM::SQL::Gateway, :postgres do
2
2
  include_context 'database setup'
3
3
 
4
4
  describe 'migration' do
5
+ before do
6
+ inferrable_relations.concat %i(rabbits carrots)
7
+ end
8
+
5
9
  context 'creating migrations inline' do
6
10
  subject(:gateway) { container.gateways[:default] }
7
11
 
8
12
  let(:conf) { ROM::Configuration.new(:sql, conn) }
9
13
  let(:container) { ROM.container(conf) }
10
14
 
11
- after do
12
- [:rabbits, :carrots].each do |name|
13
- gateway.connection.drop_table?(name)
14
- end
15
- end
16
-
17
15
  it 'allows creating and running migrations' do
18
16
  migration = gateway.migration do
19
17
  up do
@@ -39,6 +37,10 @@ RSpec.describe ROM::SQL::Gateway, :postgres, skip_tables: true do
39
37
  end
40
38
 
41
39
  context 'running migrations from a file system' do
40
+ before do
41
+ inferrable_relations.concat %i(schema_migrations)
42
+ end
43
+
42
44
  let(:migration_dir) do
43
45
  Pathname(__FILE__).dirname.join('../fixtures/migrations').realpath
44
46
  end
@@ -64,8 +66,10 @@ RSpec.describe ROM::SQL::Gateway, :postgres, skip_tables: true do
64
66
 
65
67
  describe 'transactions' do
66
68
  before do
67
- conn.drop_table?(:names)
69
+ inferrable_relations.concat %i(names)
70
+ end
68
71
 
72
+ before do
69
73
  conn.create_table(:names) do
70
74
  String :name
71
75
  end
@@ -1,11 +1,12 @@
1
- RSpec.describe ROM::SQL, '.migration', :postgres, skip_tables: true do
1
+ RSpec.describe ROM::SQL, '.migration', :postgres do
2
2
  include_context 'database setup'
3
3
 
4
4
  before do
5
- conf
6
- conn.drop_table?(:dragons)
5
+ inferrable_relations.concat %i(dragons schema_migrations)
7
6
  end
8
7
 
8
+ before { conf }
9
+
9
10
  it 'creates a migration for a specific gateway' do
10
11
  migration = ROM::SQL.migration do
11
12
  change do
@@ -1,5 +1,5 @@
1
- RSpec.describe 'Plugins / :associates / with many-to-many', :sqlite do
2
- include_context 'database setup'
1
+ RSpec.describe 'Plugins / :associates / with many-to-many', :sqlite, seeds: false do
2
+ include_context 'users and tasks'
3
3
 
4
4
  let(:tasks) { container.commands[:tasks] }
5
5
  let(:tags) { container.commands[:tags] }
@@ -1,4 +1,4 @@
1
- RSpec.describe 'Plugins / :associates' do
1
+ RSpec.describe 'Plugins / :associates', seeds: false do
2
2
  include_context 'relations'
3
3
 
4
4
  with_adapters do
@@ -1,5 +1,6 @@
1
1
  RSpec.describe 'Inferring schema from database' do
2
- include_context 'database setup'
2
+ include_context 'users'
3
+ include_context 'posts'
3
4
 
4
5
  with_adapters do
5
6
  context "when database schema exists" do
@@ -13,13 +14,11 @@ RSpec.describe 'Inferring schema from database' do
13
14
 
14
15
  context "for empty database schemas" do
15
16
  it "returns an empty schema" do
16
- drop_tables
17
-
18
- expect { container.not_here }.to raise_error(NoMethodError)
17
+ expect { container.users }.to raise_error(NoMethodError)
19
18
  end
20
19
  end
21
20
 
22
- context 'defining associations' do
21
+ context 'defining associations', seeds: false do
23
22
  it "allows defining a one-to-many" do
24
23
  class Test::Posts < ROM::Relation[:sql]
25
24
  schema(:posts) do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe ROM::SQL::Schema, '#call' do
4
- include_context 'database setup'
4
+ include_context 'users'
5
5
 
6
6
  with_adapters :postgres do
7
7
  before do
@@ -2,45 +2,44 @@ RSpec.describe 'ROM::SQL::Schema::MysqlInferrer', :mysql do
2
2
  include_context 'database setup'
3
3
 
4
4
  before do
5
- conn.drop_table?(:test_inferrence)
5
+ inferrable_relations.concat %i(test_inferrence)
6
+ end
6
7
 
8
+ before do
7
9
  conn.create_table :test_inferrence do
8
10
  tinyint :tiny
9
11
  mediumint :medium
12
+ bigint :big
10
13
  datetime :created_at
11
14
  column :date_and_time, 'datetime(0)'
12
15
  column :time_with_ms, 'datetime(3)'
13
16
  timestamp :unix_time_usec
14
17
  column :unix_time_sec, 'timestamp(0) null'
18
+ boolean :flag, null: false
15
19
  end
16
20
  end
17
21
 
18
- after do
19
- conn.drop_table?(:test_inferrence)
20
- end
21
-
22
- let(:dataset) { :test_inferrence }
23
-
24
- let(:schema) { container.relations[dataset].schema }
25
-
26
22
  before do
27
- dataset = self.dataset
28
- conf.relation(dataset) do
29
- schema(dataset, infer: true)
23
+ conf.relation(:test_inferrence) do
24
+ schema(infer: true)
30
25
  end
31
26
  end
32
27
 
33
- it 'can infer attributes for dataset' do
34
- source = container.relations[:test_inferrence].name
28
+ let(:schema) { container.relations[:test_inferrence].schema }
29
+ let(:source) { container.relations[:test_inferrence].name }
35
30
 
36
- expect(schema.to_h).to eql(
37
- tiny: ROM::SQL::Types::Int.optional.meta(name: :tiny, source: source),
38
- medium: ROM::SQL::Types::Int.optional.meta(name: :medium, source: source),
39
- created_at: ROM::SQL::Types::Time.optional.meta(name: :created_at, source: source),
40
- date_and_time: ROM::SQL::Types::Time.optional.meta(name: :date_and_time, source: source),
41
- time_with_ms: ROM::SQL::Types::Time.optional.meta(name: :time_with_ms, source: source),
42
- unix_time_usec: ROM::SQL::Types::Time.meta(name: :unix_time_usec, source: source),
43
- unix_time_sec: ROM::SQL::Types::Time.optional.meta(name: :unix_time_sec, source: source)
44
- )
31
+ it 'can infer attributes for dataset' do
32
+ expect(schema.to_h).
33
+ to eql(
34
+ tiny: ROM::SQL::Types::Int.optional.meta(name: :tiny, source: source),
35
+ medium: ROM::SQL::Types::Int.optional.meta(name: :medium, source: source),
36
+ big: ROM::SQL::Types::Int.optional.meta(name: :big, source: source),
37
+ created_at: ROM::SQL::Types::Time.optional.meta(name: :created_at, source: source),
38
+ date_and_time: ROM::SQL::Types::Time.optional.meta(name: :date_and_time, source: source),
39
+ time_with_ms: ROM::SQL::Types::Time.optional.meta(name: :time_with_ms, source: source),
40
+ unix_time_usec: ROM::SQL::Types::Time.meta(name: :unix_time_usec, source: source),
41
+ unix_time_sec: ROM::SQL::Types::Time.optional.meta(name: :unix_time_sec, source: source),
42
+ flag: ROM::SQL::Types::Bool.meta(name: :flag, source: source)
43
+ )
45
44
  end
46
45
  end
@@ -1,6 +1,10 @@
1
1
  RSpec.describe 'ROM::SQL::Schema::PostgresInferrer', :postgres do
2
2
  include_context 'database setup'
3
3
 
4
+ before do
5
+ inferrable_relations.concat %i(test_inferrence)
6
+ end
7
+
4
8
  colors = %w(red orange yellow green blue purple)
5
9
 
6
10
  before do
@@ -14,6 +18,7 @@ RSpec.describe 'ROM::SQL::Schema::PostgresInferrer', :postgres do
14
18
 
15
19
  conn.create_table :test_inferrence do
16
20
  primary_key :id, :uuid
21
+ bigint :big
17
22
  Json :json_data
18
23
  Jsonb :jsonb_data
19
24
  Decimal :money, null: false
@@ -35,92 +40,88 @@ RSpec.describe 'ROM::SQL::Schema::PostgresInferrer', :postgres do
35
40
  timestamp :created_at
36
41
  column :datetime, "timestamp(0) without time zone"
37
42
  column :datetime_tz, "timestamp(0) with time zone"
43
+ boolean :flag, null: false
38
44
  end
39
45
  end
40
46
 
41
- after do
42
- conn.drop_table?(:test_inferrence)
43
- end
44
-
45
- let(:dataset) { :test_inferrence }
46
-
47
- let(:schema) { container.relations[dataset].schema }
47
+ let(:schema) { container.relations[:test_inferrence].schema }
48
+ let(:source) { container.relations[:test_inferrence].name }
48
49
 
49
50
  context 'inferring db-specific attributes' do
50
51
  before do
51
- dataset = self.dataset
52
- conf.relation(dataset) do
53
- schema(dataset, infer: true)
52
+ conf.relation(:test_inferrence) do
53
+ schema(infer: true)
54
54
  end
55
55
  end
56
56
 
57
57
  it 'can infer attributes for dataset' do
58
- source = container.relations[:test_inferrence].name
59
-
60
- expect(schema.to_h).to eql(
61
- id: ROM::SQL::Types::PG::UUID.meta(name: :id, source: source, primary_key: true),
62
- json_data: ROM::SQL::Types::PG::JSON.optional.meta(name: :json_data, source: source),
63
- jsonb_data: ROM::SQL::Types::PG::JSONB.optional.meta(name: :jsonb_data, source: source),
64
- money: ROM::SQL::Types::Decimal.meta(name: :money, source: source),
65
- tags: ROM::SQL::Types::PG::Array('text').optional.meta(name: :tags, source: source),
66
- tag_ids: ROM::SQL::Types::PG::Array('biging').optional.meta(name: :tag_ids, source: source),
67
- color: ROM::SQL::Types::String.enum(*colors).optional.meta(name: :color, source: source),
68
- ip: ROM::SQL::Types::PG::IPAddress.optional.meta(
69
- name: :ip,
70
- source: source,
71
- read: ROM::SQL::Types::PG::IPAddressR.optional
72
- ),
73
- subnet: ROM::SQL::Types::PG::IPAddress.optional.meta(
74
- name: :subnet,
75
- source: source,
76
- read: ROM::SQL::Types::PG::IPAddressR.optional
77
- ),
78
- hw_address: ROM::SQL::Types::String.optional.meta(name: :hw_address, source: source),
79
- center: ROM::SQL::Types::PG::PointT.optional.meta(
80
- name: :center,
81
- source: source,
82
- read: ROM::SQL::Types::PG::PointTR.optional
83
- ),
84
- page: ROM::SQL::Types::String.optional.meta(name: :page, source: source),
85
- mapping: ROM::SQL::Types::PG::HStore.optional.meta(
86
- name: :mapping,
87
- source: source,
88
- read: ROM::SQL::Types::PG::HStoreR.optional
89
- ),
90
- line: ROM::SQL::Types::PG::LineT.optional.meta(
91
- name: :line,
92
- source: source,
93
- read: ROM::SQL::Types::PG::LineTR.optional
94
- ),
95
- circle: ROM::SQL::Types::PG::CircleT.optional.meta(
96
- name: :circle,
97
- source: source,
98
- read: ROM::SQL::Types::PG::CircleTR.optional
99
- ),
100
- box: ROM::SQL::Types::PG::BoxT.optional.meta(
101
- name: :box,
102
- source: source,
103
- read: ROM::SQL::Types::PG::BoxTR.optional
104
- ),
105
- lseg: ROM::SQL::Types::PG::LineSegmentT.optional.meta(
106
- name: :lseg,
107
- source: source,
108
- read: ROM::SQL::Types::PG::LineSegmentTR.optional
109
- ),
110
- polygon: ROM::SQL::Types::PG::PolygonT.optional.meta(
111
- name: :polygon,
112
- source: source,
113
- read: ROM::SQL::Types::PG::PolygonTR.optional
114
- ),
115
- path: ROM::SQL::Types::PG::PathT.optional.meta(
116
- name: :path,
117
- source: source,
118
- read: ROM::SQL::Types::PG::PathTR.optional
119
- ),
120
- created_at: ROM::SQL::Types::Time.optional.meta(name: :created_at, source: source),
121
- datetime: ROM::SQL::Types::Time.optional.meta(name: :datetime, source: source),
122
- datetime_tz: ROM::SQL::Types::Time.optional.meta(name: :datetime_tz, source: source)
123
- )
58
+ expect(schema.to_h).
59
+ to eql(
60
+ id: ROM::SQL::Types::PG::UUID.meta(name: :id, source: source, primary_key: true),
61
+ big: ROM::SQL::Types::Int.optional.meta(name: :big, source: source),
62
+ json_data: ROM::SQL::Types::PG::JSON.optional.meta(name: :json_data, source: source),
63
+ jsonb_data: ROM::SQL::Types::PG::JSONB.optional.meta(name: :jsonb_data, source: source),
64
+ money: ROM::SQL::Types::Decimal.meta(name: :money, source: source),
65
+ tags: ROM::SQL::Types::PG::Array('text').optional.meta(name: :tags, source: source),
66
+ tag_ids: ROM::SQL::Types::PG::Array('biging').optional.meta(name: :tag_ids, source: source),
67
+ color: ROM::SQL::Types::String.enum(*colors).optional.meta(name: :color, source: source),
68
+ ip: ROM::SQL::Types::PG::IPAddress.optional.meta(
69
+ name: :ip,
70
+ source: source,
71
+ read: ROM::SQL::Types::PG::IPAddressR.optional
72
+ ),
73
+ subnet: ROM::SQL::Types::PG::IPAddress.optional.meta(
74
+ name: :subnet,
75
+ source: source,
76
+ read: ROM::SQL::Types::PG::IPAddressR.optional
77
+ ),
78
+ hw_address: ROM::SQL::Types::String.optional.meta(name: :hw_address, source: source),
79
+ center: ROM::SQL::Types::PG::PointT.optional.meta(
80
+ name: :center,
81
+ source: source,
82
+ read: ROM::SQL::Types::PG::PointTR.optional
83
+ ),
84
+ page: ROM::SQL::Types::String.optional.meta(name: :page, source: source),
85
+ mapping: ROM::SQL::Types::PG::HStore.optional.meta(
86
+ name: :mapping,
87
+ source: source,
88
+ read: ROM::SQL::Types::PG::HStoreR.optional
89
+ ),
90
+ line: ROM::SQL::Types::PG::LineT.optional.meta(
91
+ name: :line,
92
+ source: source,
93
+ read: ROM::SQL::Types::PG::LineTR.optional
94
+ ),
95
+ circle: ROM::SQL::Types::PG::CircleT.optional.meta(
96
+ name: :circle,
97
+ source: source,
98
+ read: ROM::SQL::Types::PG::CircleTR.optional
99
+ ),
100
+ box: ROM::SQL::Types::PG::BoxT.optional.meta(
101
+ name: :box,
102
+ source: source,
103
+ read: ROM::SQL::Types::PG::BoxTR.optional
104
+ ),
105
+ lseg: ROM::SQL::Types::PG::LineSegmentT.optional.meta(
106
+ name: :lseg,
107
+ source: source,
108
+ read: ROM::SQL::Types::PG::LineSegmentTR.optional
109
+ ),
110
+ polygon: ROM::SQL::Types::PG::PolygonT.optional.meta(
111
+ name: :polygon,
112
+ source: source,
113
+ read: ROM::SQL::Types::PG::PolygonTR.optional
114
+ ),
115
+ path: ROM::SQL::Types::PG::PathT.optional.meta(
116
+ name: :path,
117
+ source: source,
118
+ read: ROM::SQL::Types::PG::PathTR.optional
119
+ ),
120
+ created_at: ROM::SQL::Types::Time.optional.meta(name: :created_at, source: source),
121
+ datetime: ROM::SQL::Types::Time.optional.meta(name: :datetime, source: source),
122
+ datetime_tz: ROM::SQL::Types::Time.optional.meta(name: :datetime_tz, source: source),
123
+ flag: ROM::SQL::Types::Bool.meta(name: :flag, source: source)
124
+ )
124
125
  end
125
126
  end
126
127
 
@@ -137,7 +138,6 @@ RSpec.describe 'ROM::SQL::Schema::PostgresInferrer', :postgres do
137
138
 
138
139
  context 'with a column with bi-directional mapping' do
139
140
  before do
140
- conn.drop_table?(:test_bidirectional)
141
141
  conn.execute('create extension if not exists hstore')
142
142
 
143
143
  conn.create_table(:test_bidirectional) do
@@ -191,11 +191,12 @@ RSpec.describe 'ROM::SQL::Schema::PostgresInferrer', :postgres do
191
191
  line: line, circle: circle, lseg: lseg, box: box,
192
192
  polygon: polygon, closed_path: closed_path, open_path: open_path
193
193
  )
194
- expect(inserted).to eql(
195
- id: 1, center: point, ip: dns, mapping: mapping,
196
- line: line, circle: circle, lseg: lseg, box: box_corrected,
197
- polygon: polygon, closed_path: closed_path, open_path: open_path
198
- )
194
+ expect(inserted).
195
+ to eql(
196
+ id: 1, center: point, ip: dns, mapping: mapping,
197
+ line: line, circle: circle, lseg: lseg, box: box_corrected,
198
+ polygon: polygon, closed_path: closed_path, open_path: open_path
199
+ )
199
200
  expect(relation.to_a).to eql([inserted])
200
201
  end
201
202
  end
@@ -2,37 +2,36 @@ RSpec.describe 'ROM::SQL::Schema::SqliteInferrer', :sqlite do
2
2
  include_context 'database setup'
3
3
 
4
4
  before do
5
- conn.drop_table?(:test_inferrence)
5
+ inferrable_relations.concat %i(test_inferrence)
6
+ end
6
7
 
8
+ before do
7
9
  conn.create_table :test_inferrence do
8
10
  tinyint :tiny
9
11
  int8 :big
12
+ bigint :long
10
13
  column :dummy, nil
14
+ boolean :flag, null: false
11
15
  end
12
16
  end
13
17
 
14
- after do
15
- conn.drop_table?(:test_inferrence)
16
- end
17
-
18
- let(:dataset) { :test_inferrence }
19
-
20
- let(:schema) { container.relations[dataset].schema }
21
-
22
18
  before do
23
- dataset = self.dataset
24
- conf.relation(dataset) do
25
- schema(dataset, infer: true)
19
+ conf.relation(:test_inferrence) do
20
+ schema(infer: true)
26
21
  end
27
22
  end
28
23
 
29
- it 'can infer attributes for dataset' do
30
- source = container.relations[:test_inferrence].name
24
+ let(:schema) { container.relations[:test_inferrence].schema }
25
+ let(:source) { container.relations[:test_inferrence].name }
31
26
 
32
- expect(schema.to_h).to eql(
33
- tiny: ROM::SQL::Types::Int.optional.meta(name: :tiny, source: source),
34
- big: ROM::SQL::Types::Int.optional.meta(name: :big, source: source),
35
- dummy: ROM::SQL::Types::SQLite::Object.optional.meta(name: :dummy, source: source)
36
- )
27
+ it 'can infer attributes for dataset' do
28
+ expect(schema.to_h).
29
+ to eql(
30
+ tiny: ROM::SQL::Types::Int.optional.meta(name: :tiny, source: source),
31
+ big: ROM::SQL::Types::Int.optional.meta(name: :big, source: source),
32
+ long: ROM::SQL::Types::Int.optional.meta(name: :long, source: source),
33
+ dummy: ROM::SQL::Types::SQLite::Object.optional.meta(name: :dummy, source: source),
34
+ flag: ROM::SQL::Types::Bool.meta(name: :flag, source: source)
35
+ )
37
36
  end
38
37
  end