MCPcopy Index your code
hub / github.com/APIParkLab/APIPark / Edit

Method Edit

module/ai-key/iml.go:136–208  ·  view source on GitHub ↗
(ctx context.Context, providerId string, id string, input *ai_key_dto.Edit)

Source from the content-addressed store, hash-verified

134}
135
136func (i *imlKeyModule) Edit(ctx context.Context, providerId string, id string, input *ai_key_dto.Edit) error {
137 p, has := model_runtime.GetProvider(providerId)
138 if !has {
139 return fmt.Errorf("provider not found: %s", providerId)
140 }
141 _, err := i.providerService.Get(ctx, providerId)
142 if err != nil {
143 return fmt.Errorf("provider not found: %w", err)
144 }
145 return i.transaction.Transaction(ctx, func(ctx context.Context) error {
146 info, err := i.aiKeyService.Get(ctx, id)
147 if err != nil {
148 return fmt.Errorf("key not found: %w", err)
149 }
150 if input.Config != nil {
151 err = p.Check(*input.Config)
152 if err != nil {
153 return fmt.Errorf("config check failed: %w", err)
154 }
155 cfg, err := p.GenConfig(*input.Config, info.Config)
156 if err != nil {
157 return fmt.Errorf("config gen failed: %w", err)
158 }
159 input.Config = &cfg
160 if info.Default {
161 err = i.providerService.Save(ctx, info.Provider, &ai.SetProvider{
162 Config: input.Config,
163 })
164 if err != nil {
165 return err
166 }
167 }
168 }
169
170 status := ai_key_dto.KeyNormal.Int()
171 orgStatus := ai_key_dto.ToKeyStatus(info.Status)
172 switch orgStatus {
173 case ai_key_dto.KeyNormal, ai_key_dto.KeyError, ai_key_dto.KeyExpired:
174 if input.ExpireTime != nil {
175 expireTime := *input.ExpireTime
176 if expireTime > 0 && time.Unix(int64(expireTime), 0).Before(time.Now()) {
177 status = ai_key_dto.KeyExpired.Int()
178 }
179 } else if info.ExpireTime > 0 && time.Unix(int64(info.ExpireTime), 0).Before(time.Now()) {
180 // 如果过期时间未更改,且已过期,则设置为过期状态
181 status = ai_key_dto.KeyExpired.Int()
182 }
183 default:
184 // 停用、超额需要启用,所以维持原状态
185 status = orgStatus.Int()
186 }
187
188 err = i.aiKeyService.Save(ctx, id, &ai_key.Edit{
189 Name: input.Name,
190 Config: input.Config,
191 ExpireTime: input.ExpireTime,
192 Status: &status,
193 })

Callers

nothing calls this directly

Calls 7

syncGatewayMethod · 0.95
newKeyFunction · 0.70
GetMethod · 0.65
CheckMethod · 0.65
GenConfigMethod · 0.65
SaveMethod · 0.65
IntMethod · 0.45

Tested by

no test coverage detected