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

Function getDatabasesForRoleGrant

backend/runner/approval/runner.go:908–939  ·  view source on GitHub ↗

getDatabasesForRoleGrant fetches database messages for the given database identifiers. Used exclusively by role grant approval flow to retrieve database information. Returns a deduplicated list of databases.

(ctx context.Context, stores *store.Store, projectID string, databaseIdentifiers []string)

Source from the content-addressed store, hash-verified

906// Used exclusively by role grant approval flow to retrieve database information.
907// Returns a deduplicated list of databases.
908func getDatabasesForRoleGrant(ctx context.Context, stores *store.Store, projectID string, databaseIdentifiers []string) ([]*store.DatabaseMessage, error) {
909 // Parse and deduplicate database identifiers
910 type dbKey struct {
911 instanceID string
912 databaseName string
913 }
914 requestedDBs := make(map[dbKey]bool)
915 for _, identifier := range databaseIdentifiers {
916 instanceID, databaseName, err := common.GetInstanceDatabaseID(identifier)
917 if err != nil {
918 return nil, err
919 }
920 requestedDBs[dbKey{instanceID: instanceID, databaseName: databaseName}] = true
921 }
922
923 // Batch fetch all databases in the project
924 allDatabases, err := stores.ListDatabases(ctx, &store.FindDatabaseMessage{ProjectID: &projectID})
925 if err != nil {
926 return nil, errors.Wrapf(err, "failed to list databases for project %q", projectID)
927 }
928
929 // Filter to only requested databases
930 var result []*store.DatabaseMessage
931 for _, db := range allDatabases {
932 key := dbKey{instanceID: db.InstanceID, databaseName: db.DatabaseName}
933 if requestedDBs[key] {
934 result = append(result, db)
935 }
936 }
937
938 return result, nil
939}
940
941// getApprovalSourceFromPlan determines the approval rule source enum from the plan config.
942// This is used after the risk layer removal to directly filter approval rules by source.

Callers 1

Calls 2

GetInstanceDatabaseIDFunction · 0.92
ListDatabasesMethod · 0.65

Tested by

no test coverage detected