enrichUserAISeat sets HasAISeat on the user when the feature is entitled.
(ctx context.Context, user *codersdk.User)
| 2053 | |
| 2054 | // enrichUserAISeat sets HasAISeat on the user when the feature is entitled. |
| 2055 | func (api *API) enrichUserAISeat(ctx context.Context, user *codersdk.User) { |
| 2056 | if !api.Entitlements.Enabled(codersdk.FeatureAIGovernanceUserLimit) { |
| 2057 | return |
| 2058 | } |
| 2059 | |
| 2060 | //nolint:gocritic // AI seat state is a system-level read gated by entitlement. |
| 2061 | aiSeatUserIDs, err := api.Database.GetUserAISeatStates( |
| 2062 | dbauthz.AsSystemRestricted(ctx), |
| 2063 | []uuid.UUID{user.ID}, |
| 2064 | ) |
| 2065 | if err != nil { |
| 2066 | if !xerrors.Is(err, sql.ErrNoRows) { |
| 2067 | api.Logger.Warn( |
| 2068 | ctx, |
| 2069 | "failed to fetch AI seat state for user", |
| 2070 | slog.F("user_id", user.ID), |
| 2071 | slog.Error(err), |
| 2072 | ) |
| 2073 | } |
| 2074 | return |
| 2075 | } |
| 2076 | |
| 2077 | user.HasAISeat = len(aiSeatUserIDs) > 0 |
| 2078 | } |
| 2079 | |
| 2080 | func convertUsers(users []database.User, organizationIDsByUserID map[uuid.UUID][]uuid.UUID, aiSeatSet map[uuid.UUID]struct{}) []codersdk.User { |
| 2081 | converted := make([]codersdk.User, 0, len(users)) |
no test coverage detected