@@ -12,6 +12,10 @@ module Statements
12
12
# @param materialized [Boolean, Hash] Set to true to create a materialized
13
13
# view. Set to { no_data: true } to create materialized view without
14
14
# loading data. Defaults to false.
15
+ # @param security_barrier [Boolean] Set to true to enable the security barrier
16
+ # option on the view. Defaults to false.
17
+ # @param security_invoker [Boolean] Set to true to enable the security invoker
18
+ # option on the view. Defaults to false.
15
19
# @return The database response from executing the create statement.
16
20
#
17
21
# @example Create from `db/views/searches_v02.sql`
@@ -22,7 +26,8 @@ module Statements
22
26
# SELECT * FROM users WHERE users.active = 't'
23
27
# SQL
24
28
#
25
- def create_view ( name , version : nil , sql_definition : nil , materialized : false )
29
+ def create_view ( name , version : nil , sql_definition : nil , materialized : false ,
30
+ security_barrier : false , security_invoker : false )
26
31
if version . present? && sql_definition . present?
27
32
raise (
28
33
ArgumentError ,
@@ -43,7 +48,7 @@ def create_view(name, version: nil, sql_definition: nil, materialized: false)
43
48
no_data : no_data ( materialized )
44
49
)
45
50
else
46
- Scenic . database . create_view ( name , sql_definition )
51
+ Scenic . database . create_view ( name , sql_definition , security_barrier , security_invoker )
47
52
end
48
53
end
49
54
@@ -55,12 +60,16 @@ def create_view(name, version: nil, sql_definition: nil, materialized: false)
55
60
# `version` argument to {#create_view}.
56
61
# @param materialized [Boolean] Set to true if dropping a meterialized view.
57
62
# defaults to false.
63
+ # @param security_barrier [Boolean] Set to true to enable the security barrier
64
+ # option on the view. Defaults to false.
65
+ # @param security_invoker [Boolean] Set to true to enable the security invoker
66
+ # option on the view. Defaults to false.
58
67
# @return The database response from executing the drop statement.
59
68
#
60
69
# @example Drop a view, rolling back to version 3 on rollback
61
70
# drop_view(:users_who_recently_logged_in, revert_to_version: 3)
62
71
#
63
- def drop_view ( name , revert_to_version : nil , materialized : false )
72
+ def drop_view ( name , revert_to_version : nil , materialized : false , security_barrier : false , security_invoker : false )
64
73
if materialized
65
74
Scenic . database . drop_materialized_view ( name )
66
75
else
@@ -83,12 +92,17 @@ def drop_view(name, revert_to_version: nil, materialized: false)
83
92
# @param materialized [Boolean, Hash] True if updating a materialized view.
84
93
# Set to { no_data: true } to update materialized view without loading
85
94
# data. Defaults to false.
95
+ # @param security_barrier [Boolean] Set to true to enable the security barrier
96
+ # option on the view. Defaults to false.
97
+ # @param security_invoker [Boolean] Set to true to enable the security invoker
98
+ # option on the view. Defaults to false.
86
99
# @return The database response from executing the create statement.
87
100
#
88
101
# @example
89
102
# update_view :engagement_reports, version: 3, revert_to_version: 2
90
103
#
91
- def update_view ( name , version : nil , sql_definition : nil , revert_to_version : nil , materialized : false )
104
+ def update_view ( name , version : nil , sql_definition : nil , revert_to_version : nil , materialized : false ,
105
+ security_barrier : false , security_invoker : false )
92
106
if version . blank? && sql_definition . blank?
93
107
raise (
94
108
ArgumentError ,
@@ -112,7 +126,7 @@ def update_view(name, version: nil, sql_definition: nil, revert_to_version: nil,
112
126
no_data : no_data ( materialized )
113
127
)
114
128
else
115
- Scenic . database . update_view ( name , sql_definition )
129
+ Scenic . database . update_view ( name , sql_definition , security_barrier , security_invoker )
116
130
end
117
131
end
118
132
@@ -127,12 +141,17 @@ def update_view(name, version: nil, sql_definition: nil, revert_to_version: nil,
127
141
# @param version [Fixnum] The version number of the view.
128
142
# @param revert_to_version [Fixnum] The version number to rollback to on
129
143
# `rake db rollback`
144
+ # @param security_barrier [Boolean] Set to true to enable the security barrier
145
+ # option on the view. Defaults to false.
146
+ # @param security_invoker [Boolean] Set to true to enable the security invoker
147
+ # option on the view. Defaults to false.
130
148
# @return The database response from executing the create statement.
131
149
#
132
150
# @example
133
151
# replace_view :engagement_reports, version: 3, revert_to_version: 2
134
152
#
135
- def replace_view ( name , version : nil , revert_to_version : nil , materialized : false )
153
+ def replace_view ( name , version : nil , revert_to_version : nil , materialized : false ,
154
+ security_barrier : false , security_invoker : false )
136
155
if version . blank?
137
156
raise ArgumentError , "version is required"
138
157
end
@@ -143,7 +162,7 @@ def replace_view(name, version: nil, revert_to_version: nil, materialized: false
143
162
144
163
sql_definition = definition ( name , version )
145
164
146
- Scenic . database . replace_view ( name , sql_definition )
165
+ Scenic . database . replace_view ( name , sql_definition , security_barrier , security_invoker )
147
166
end
148
167
149
168
private
0 commit comments