(ctx context.Context, workspaceID string, projectFullName string)
| 216 | } |
| 217 | |
| 218 | func (s *Store) GetEffectiveQueryDataPolicy(ctx context.Context, workspaceID string, projectFullName string) (*EffectiveQueryDataPolicy, error) { |
| 219 | workspaceResource := common.FormatWorkspace(workspaceID) |
| 220 | workspacePolicy, err := s.getQueryDataPolicy(ctx, workspaceID, workspaceResource) |
| 221 | if err != nil { |
| 222 | return nil, err |
| 223 | } |
| 224 | projectPolicy, err := s.getQueryDataPolicy(ctx, workspaceID, projectFullName) |
| 225 | if err != nil { |
| 226 | return nil, err |
| 227 | } |
| 228 | |
| 229 | formatWorkspacePolicy := formatEffectiveQueryDataPolicy(workspacePolicy) |
| 230 | formatProjectPolicy := formatEffectiveQueryDataPolicy(projectPolicy) |
| 231 | |
| 232 | maximumResultSize, err := s.GetSQLResultSize(ctx, workspaceID) |
| 233 | if err != nil { |
| 234 | return nil, err |
| 235 | } |
| 236 | |
| 237 | queryTimeout, err := s.GetQueryTimeoutInSeconds(ctx, workspaceID) |
| 238 | if err != nil { |
| 239 | return nil, err |
| 240 | } |
| 241 | |
| 242 | return &EffectiveQueryDataPolicy{ |
| 243 | DisableCopyData: formatWorkspacePolicy.DisableCopyData, |
| 244 | DisableExport: formatWorkspacePolicy.DisableExport, |
| 245 | MaximumResultRows: min(formatWorkspacePolicy.MaximumResultRows, formatProjectPolicy.MaximumResultRows), |
| 246 | MaximumResultSize: maximumResultSize, |
| 247 | MaxQueryTimeoutInSeconds: queryTimeout, |
| 248 | AllowAdminDataSource: formatWorkspacePolicy.AllowAdminDataSource, |
| 249 | }, nil |
| 250 | } |
| 251 | |
| 252 | func (s *Store) getQueryDataPolicy(ctx context.Context, workspaceID string, resource string) (*storepb.QueryDataPolicy, error) { |
| 253 | resourceType, _, err := common.GetPolicyResourceTypeAndResource(resource) |
no test coverage detected