@@ -359,119 +359,90 @@ type Response struct {
359359 HttpResponse * http.Response
360360}
361361
362- func (c * APIClient ) FunctionService () * FunctionService {
363- return & FunctionService {
364- client : c ,
362+ func (c * APIClient ) FunctionService () * ResourceService [model.Function ] {
363+ return & ResourceService [model.Function ]{
364+ Client : c ,
365+ BasePath : "/apis/v1/function" ,
365366 }
366367}
367368
368- type FunctionService struct {
369- client * APIClient
370- }
371-
372- func (fs * FunctionService ) Deploy (ctx context.Context , f * model.Function ) error {
373- req , err := fs .client .prepareRequest (ctx , "/apis/v1/functions" , http .MethodPost , f , nil , nil , nil , nil )
374- if err != nil {
375- return err
376- }
377- _ , err = fs .client .HandleResponse (fs .client .callAPI (req ))
378- return err
379- }
380-
381- func (fs * FunctionService ) List (ctx context.Context ) ([]* model.Function , error ) {
382- req , err := fs .client .prepareRequest (ctx , "/apis/v1/functions" , http .MethodGet , nil , nil , nil , nil , nil )
383- if err != nil {
384- return nil , err
385- }
386- resp , err := fs .client .HandleResponse (fs .client .callAPI (req ))
387- if err != nil {
388- return nil , err
369+ func (c * APIClient ) PackageService () * ResourceService [model.Package ] {
370+ return & ResourceService [model.Package ]{
371+ Client : c ,
372+ BasePath : "/apis/v1/package" ,
389373 }
390- var functions []* model.Function
391- err = json .Unmarshal (resp , & functions )
392- if err != nil {
393- return nil , err
394- }
395- return functions , nil
396374}
397375
398- func (fs * FunctionService ) Delete ( ctx context. Context , name string ) error {
399- req , err := fs . client . prepareRequest ( ctx , "/apis/v1/functions/" + name , http . MethodDelete , nil , nil , nil , nil , nil )
400- if err != nil {
401- return err
376+ func (c * APIClient ) GenericService ( resourceName string ) * ResourceService [ map [ string ] any ] {
377+ return & ResourceService [ map [ string ] any ]{
378+ Client : c ,
379+ BasePath : "/apis/v1/" + resourceName ,
402380 }
403- _ , err = fs .client .HandleResponse (fs .client .callAPI (req ))
404- return err
405- }
406-
407- type PackageService struct {
408- client * APIClient
409381}
410382
411- func (c * APIClient ) PackageService () * PackageService {
412- return & PackageService {
413- client : c ,
414- }
383+ type ResourceService [T any ] struct {
384+ BasePath string
385+ Client * APIClient
415386}
416387
417- func (ps * PackageService ) Create (ctx context.Context , pkg * model. Package ) error {
418- req , err := ps . client .prepareRequest (ctx , "/apis/v1/packages" , http .MethodPost , pkg , nil , nil , nil , nil )
388+ func (rs * ResourceService [ T ] ) Create (ctx context.Context , resource * T ) error {
389+ req , err := rs . Client .prepareRequest (ctx , rs . BasePath , http .MethodPost , resource , nil , nil , nil , nil )
419390 if err != nil {
420391 return err
421392 }
422- _ , err = ps . client .HandleResponse (ps . client .callAPI (req ))
393+ _ , err = rs . Client .HandleResponse (rs . Client .callAPI (req ))
423394 return err
424395}
425396
426- func (ps * PackageService ) List (ctx context.Context ) ([]* model. Package , error ) {
427- req , err := ps . client .prepareRequest (ctx , "/apis/v1/packages" , http .MethodGet , nil , nil , nil , nil , nil )
397+ func (rs * ResourceService [ T ] ) List (ctx context.Context ) ([]* T , error ) {
398+ req , err := rs . Client .prepareRequest (ctx , rs . BasePath , http .MethodGet , nil , nil , nil , nil , nil )
428399 if err != nil {
429400 return nil , err
430401 }
431- resp , err := ps . client .HandleResponse (ps . client .callAPI (req ))
402+ resp , err := rs . Client .HandleResponse (rs . Client .callAPI (req ))
432403 if err != nil {
433404 return nil , err
434405 }
435- var packages []* model. Package
436- err = json .Unmarshal (resp , & packages )
406+ var resources []* T
407+ err = json .Unmarshal (resp , & resources )
437408 if err != nil {
438409 return nil , err
439410 }
440- return packages , nil
411+ return resources , nil
441412}
442413
443- func (ps * PackageService ) Read (ctx context.Context , name string ) (* model. Package , error ) {
444- req , err := ps . client .prepareRequest (ctx , "/apis/v1/packages /"+ name , http .MethodGet , nil , nil , nil , nil , nil )
414+ func (rs * ResourceService [ T ] ) Read (ctx context.Context , name string ) (* T , error ) {
415+ req , err := rs . Client .prepareRequest (ctx , rs . BasePath + " /"+ name , http .MethodGet , nil , nil , nil , nil , nil )
445416 if err != nil {
446417 return nil , err
447418 }
448- resp , err := ps . client .HandleResponse (ps . client .callAPI (req ))
419+ resp , err := rs . Client .HandleResponse (rs . Client .callAPI (req ))
449420 if err != nil {
450421 return nil , err
451422 }
452- var pkg model. Package
453- err = json .Unmarshal (resp , & pkg )
423+ var resource T
424+ err = json .Unmarshal (resp , & resource )
454425 if err != nil {
455426 return nil , err
456427 }
457- return & pkg , nil
428+ return & resource , nil
458429}
459430
460- func (ps * PackageService ) Update (ctx context.Context , pkg * model. Package ) error {
461- req , err := ps . client .prepareRequest (ctx , "/apis/v1/packages/" + pkg . Name , http .MethodPut , pkg , nil , nil , nil , nil )
431+ func (rs * ResourceService [ T ]) Upsert (ctx context.Context , resource * T ) error {
432+ req , err := rs . Client .prepareRequest (ctx , rs . BasePath , http .MethodPut , resource , nil , nil , nil , nil )
462433 if err != nil {
463434 return err
464435 }
465- _ , err = ps . client .HandleResponse (ps . client .callAPI (req ))
436+ _ , err = rs . Client .HandleResponse (rs . Client .callAPI (req ))
466437 return err
467438}
468439
469- func (ps * PackageService ) Delete (ctx context.Context , name string ) error {
470- req , err := ps . client .prepareRequest (ctx , "/apis/v1/packages /"+ name , http .MethodDelete , nil , nil , nil , nil , nil )
440+ func (rs * ResourceService [ T ] ) Delete (ctx context.Context , name string ) error {
441+ req , err := rs . Client .prepareRequest (ctx , rs . BasePath + " /"+ name , http .MethodDelete , nil , nil , nil , nil , nil )
471442 if err != nil {
472443 return err
473444 }
474- _ , err = ps . client .HandleResponse (ps . client .callAPI (req ))
445+ _ , err = rs . Client .HandleResponse (rs . Client .callAPI (req ))
475446 return err
476447}
477448
0 commit comments