MCPcopy Create free account
hub / github.com/bytebase/bytebase / GetEffectiveQueryDataPolicy

Method GetEffectiveQueryDataPolicy

backend/store/policy.go:218–250  ·  view source on GitHub ↗
(ctx context.Context, workspaceID string, projectFullName string)

Source from the content-addressed store, hash-verified

216}
217
218func (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
252func (s *Store) getQueryDataPolicy(ctx context.Context, workspaceID string, resource string) (*storepb.QueryDataPolicy, error) {
253 resourceType, _, err := common.GetPolicyResourceTypeAndResource(resource)

Callers 2

Calls 5

getQueryDataPolicyMethod · 0.95
GetSQLResultSizeMethod · 0.95
FormatWorkspaceFunction · 0.92

Tested by

no test coverage detected