@@ -270,3 +270,102 @@ func (s *PartsServiceServer) ReplacePreset(ctx context.Context, req *pb.PartsRep
270270
271271 return & pb.PartsReplacePresetResponse {}, nil
272272}
273+
274+ func (s * PartsServiceServer ) UpdatePresetName (ctx context.Context , req * pb.PartsUpdatePresetNameRequest ) (* pb.PartsUpdatePresetNameResponse , error ) {
275+ log .Printf ("[PartsService] UpdatePresetName: preset=%d name=%q" , req .UserPartsPresetNumber , req .Name )
276+
277+ userId := CurrentUserId (ctx , s .users , s .sessions )
278+ nowMillis := gametime .NowMillis ()
279+
280+ _ , err := s .users .UpdateUser (userId , func (user * store.UserState ) {
281+ preset := user .PartsPresets [req .UserPartsPresetNumber ]
282+ preset .UserPartsPresetNumber = req .UserPartsPresetNumber
283+ preset .Name = req .Name
284+ preset .LatestVersion = nowMillis
285+ user .PartsPresets [req .UserPartsPresetNumber ] = preset
286+ })
287+ if err != nil {
288+ return nil , fmt .Errorf ("parts update preset name: %w" , err )
289+ }
290+
291+ return & pb.PartsUpdatePresetNameResponse {}, nil
292+ }
293+
294+ func (s * PartsServiceServer ) UpdatePresetTagNumber (ctx context.Context , req * pb.PartsUpdatePresetTagNumberRequest ) (* pb.PartsUpdatePresetTagNumberResponse , error ) {
295+ log .Printf ("[PartsService] UpdatePresetTagNumber: preset=%d tag=%d" , req .UserPartsPresetNumber , req .UserPartsPresetTagNumber )
296+
297+ userId := CurrentUserId (ctx , s .users , s .sessions )
298+ nowMillis := gametime .NowMillis ()
299+
300+ _ , err := s .users .UpdateUser (userId , func (user * store.UserState ) {
301+ preset := user .PartsPresets [req .UserPartsPresetNumber ]
302+ preset .UserPartsPresetNumber = req .UserPartsPresetNumber
303+ preset .UserPartsPresetTagNumber = req .UserPartsPresetTagNumber
304+ preset .LatestVersion = nowMillis
305+ user .PartsPresets [req .UserPartsPresetNumber ] = preset
306+ })
307+ if err != nil {
308+ return nil , fmt .Errorf ("parts update preset tag number: %w" , err )
309+ }
310+
311+ return & pb.PartsUpdatePresetTagNumberResponse {}, nil
312+ }
313+
314+ func (s * PartsServiceServer ) UpdatePresetTagName (ctx context.Context , req * pb.PartsUpdatePresetTagNameRequest ) (* pb.PartsUpdatePresetTagNameResponse , error ) {
315+ log .Printf ("[PartsService] UpdatePresetTagName: tag=%d name=%q" , req .UserPartsPresetTagNumber , req .Name )
316+
317+ userId := CurrentUserId (ctx , s .users , s .sessions )
318+ nowMillis := gametime .NowMillis ()
319+
320+ _ , err := s .users .UpdateUser (userId , func (user * store.UserState ) {
321+ tag := user .PartsPresetTags [req .UserPartsPresetTagNumber ]
322+ tag .UserPartsPresetTagNumber = req .UserPartsPresetTagNumber
323+ tag .Name = req .Name
324+ tag .LatestVersion = nowMillis
325+ user .PartsPresetTags [req .UserPartsPresetTagNumber ] = tag
326+ })
327+ if err != nil {
328+ return nil , fmt .Errorf ("parts update preset tag name: %w" , err )
329+ }
330+
331+ return & pb.PartsUpdatePresetTagNameResponse {}, nil
332+ }
333+
334+ func (s * PartsServiceServer ) CopyPreset (ctx context.Context , req * pb.PartsCopyPresetRequest ) (* pb.PartsCopyPresetResponse , error ) {
335+ log .Printf ("[PartsService] CopyPreset: from=%d to=%d" , req .FromUserPartsPresetNumber , req .ToUserPartsPresetNumber )
336+
337+ userId := CurrentUserId (ctx , s .users , s .sessions )
338+ nowMillis := gametime .NowMillis ()
339+
340+ _ , err := s .users .UpdateUser (userId , func (user * store.UserState ) {
341+ from , ok := user .PartsPresets [req .FromUserPartsPresetNumber ]
342+ if ! ok {
343+ log .Printf ("[PartsService] CopyPreset: source preset=%d not found, skipping" , req .FromUserPartsPresetNumber )
344+ return
345+ }
346+ to := from
347+ to .UserPartsPresetNumber = req .ToUserPartsPresetNumber
348+ to .LatestVersion = nowMillis
349+ user .PartsPresets [req .ToUserPartsPresetNumber ] = to
350+ })
351+ if err != nil {
352+ return nil , fmt .Errorf ("parts copy preset: %w" , err )
353+ }
354+
355+ return & pb.PartsCopyPresetResponse {}, nil
356+ }
357+
358+ func (s * PartsServiceServer ) RemovePreset (ctx context.Context , req * pb.PartsRemovePresetRequest ) (* pb.PartsRemovePresetResponse , error ) {
359+ log .Printf ("[PartsService] RemovePreset: preset=%d" , req .UserPartsPresetNumber )
360+
361+ userId := CurrentUserId (ctx , s .users , s .sessions )
362+
363+ _ , err := s .users .UpdateUser (userId , func (user * store.UserState ) {
364+ delete (user .PartsPresets , req .UserPartsPresetNumber )
365+ })
366+ if err != nil {
367+ return nil , fmt .Errorf ("parts remove preset: %w" , err )
368+ }
369+
370+ return & pb.PartsRemovePresetResponse {}, nil
371+ }
0 commit comments