Module: PactBroker::Dataset
- Includes:
- Helpers
- Defined in:
- lib/pact_broker/dataset.rb,
lib/pact_broker/dataset/page.rb
Defined Under Namespace
Modules: Helpers
Classes: Page
Instance Method Summary
collapse
Methods included from Helpers
#escape_wildcards, #mysql?, #postgres?
Instance Method Details
#all_allowing_lazy_load ⇒ Object
67
68
69
|
# File 'lib/pact_broker/dataset.rb', line 67
def all_allowing_lazy_load
all.each{ | row | row.allow_lazy_load if row.respond_to?(:allow_lazy_load) }
end
|
#all_forbidding_lazy_load ⇒ Object
63
64
65
|
# File 'lib/pact_broker/dataset.rb', line 63
def all_forbidding_lazy_load
all.each{ | row | row.forbid_lazy_load if row.respond_to?(:forbid_lazy_load) }
end
|
54
55
56
57
58
59
60
61
|
# File 'lib/pact_broker/dataset.rb', line 54
def ()
if &.any?
query = paginate([:page_number], [:page_size])
Page.new(query.all, query)
else
all
end
end
|
#filter(column_name, query_string) ⇒ Sequel::Dataset
Return a dataset that only includes the rows where the specified column includes the given query string.
29
30
31
|
# File 'lib/pact_broker/dataset.rb', line 29
def filter(column_name, query_string)
where(Sequel.ilike(column_name, "%" + escape_wildcards(query_string) + "%"))
end
|
#max_group_by(max_column, group_by_columns, &extra_criteria_block) ⇒ Object
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/pact_broker/dataset.rb', line 73
def max_group_by(max_column, group_by_columns, &)
maximums_base_query = ? .call(self) : self
maximums = maximums_base_query.select_group(*group_by_columns).select_append(Sequel.function(:max, max_column).as(:max_value))
max_join = group_by_columns.each_with_object({ Sequel[:maximums][:max_value] => max_column }) do | column_name, joins |
joins[Sequel[:maximums][column_name]] = column_name
end
join(maximums, max_join, table_alias: :maximums)
end
|
#name_like(column_name, value) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/pact_broker/dataset.rb', line 33
def name_like column_name, value
if PactBroker.configuration.use_case_sensitive_resource_names
if mysql?
Sequel.like(column_name, value.gsub("_", "\\_"), { case_insensitive: false })
else
{ column_name => value }
end
else
Sequel.like(column_name, value.gsub("_", "\\_"), { case_insensitive: true })
end
end
|
#no_columns_selected? ⇒ Boolean
93
94
95
|
# File 'lib/pact_broker/dataset.rb', line 93
def no_columns_selected?
opts[:select].nil?
end
|
#order_append_ignore_case(column_name = :name) ⇒ Object
101
102
103
|
# File 'lib/pact_broker/dataset.rb', line 101
def order_append_ignore_case column_name = :name
order_append(Sequel.function(:lower, column_name))
end
|
#order_ignore_case(column_name = :name) ⇒ Object
97
98
99
|
# File 'lib/pact_broker/dataset.rb', line 97
def order_ignore_case column_name = :name
order(Sequel.function(:lower, column_name))
end
|
#select_all_qualified ⇒ Object
50
51
52
|
# File 'lib/pact_broker/dataset.rb', line 50
def select_all_qualified
select(Sequel[model.table_name].*)
end
|
#select_for_subquery(column) ⇒ Object
84
85
86
87
88
89
90
91
|
# File 'lib/pact_broker/dataset.rb', line 84
def select_for_subquery column
if mysql? column_name = column.respond_to?(:alias) ? column.alias : column
select(column).collect{ | it | it[column_name] }
else
select(column)
end
end
|
#where_name_like(column_name, value) ⇒ Object
46
47
48
|
# File 'lib/pact_broker/dataset.rb', line 46
def where_name_like(column_name, value)
where(name_like(column_name, value))
end
|