github.com/nais/knorten@v0.0.0-20240104110906-55926958e361/pkg/database/teams.go (about) 1 package database 2 3 import ( 4 "context" 5 "database/sql" 6 "errors" 7 "strings" 8 9 "github.com/nais/knorten/pkg/database/gensql" 10 "github.com/nais/knorten/pkg/reflect" 11 ) 12 13 func (r *Repo) TeamCreate(ctx context.Context, team gensql.Team) error { 14 return r.querier.TeamCreate(ctx, gensql.TeamCreateParams{ 15 ID: team.ID, 16 Users: stringSliceToLower(team.Users), 17 Slug: team.Slug, 18 EnableAllowlist: team.EnableAllowlist, 19 }) 20 } 21 22 func (r *Repo) TeamUpdate(ctx context.Context, team gensql.Team) error { 23 return r.querier.TeamUpdate(ctx, gensql.TeamUpdateParams{ 24 ID: team.ID, 25 Users: stringSliceToLower(team.Users), 26 EnableAllowlist: team.EnableAllowlist, 27 }) 28 } 29 30 func (r *Repo) TeamGet(ctx context.Context, teamID string) (gensql.TeamGetRow, error) { 31 return r.querier.TeamGet(ctx, teamID) 32 } 33 34 func (r *Repo) TeamBySlugGet(ctx context.Context, slug string) (gensql.TeamBySlugGetRow, error) { 35 return r.querier.TeamBySlugGet(ctx, slug) 36 } 37 38 func (r *Repo) TeamDelete(ctx context.Context, teamID string) error { 39 return r.querier.TeamDelete(ctx, teamID) 40 } 41 42 func (r *Repo) TeamsGet(ctx context.Context) ([]gensql.Team, error) { 43 return r.querier.TeamsGet(ctx) 44 } 45 46 func (r *Repo) TeamsForChartGet(ctx context.Context, chartType gensql.ChartType) ([]string, error) { 47 return r.querier.TeamsForChartGet(ctx, chartType) 48 } 49 50 func (r *Repo) TeamsForUser(ctx context.Context, email string) ([]string, error) { 51 teams, err := r.querier.TeamsForUserGet(ctx, email) 52 if err != nil { 53 if errors.Is(err, sql.ErrNoRows) { 54 return []string{}, nil 55 } 56 return nil, err 57 } 58 59 var teamList []string 60 for _, t := range teams { 61 teamList = append(teamList, t.ID) 62 } 63 64 return teamList, nil 65 } 66 67 func (r *Repo) TeamChartValueInsert(ctx context.Context, key, value, teamID string, chartType gensql.ChartType) error { 68 return r.querier.TeamValueInsert(ctx, gensql.TeamValueInsertParams{ 69 Key: key, 70 Value: value, 71 TeamID: teamID, 72 ChartType: chartType, 73 }) 74 } 75 76 func (r *Repo) TeamValuesGet(ctx context.Context, chartType gensql.ChartType, teamID string) ([]gensql.ChartTeamValue, error) { 77 return r.querier.TeamValuesGet(ctx, gensql.TeamValuesGetParams{ 78 ChartType: chartType, 79 TeamID: teamID, 80 }) 81 } 82 83 func (r *Repo) TeamValueGet(ctx context.Context, key, teamID string) (gensql.ChartTeamValue, error) { 84 return r.querier.TeamValueGet(ctx, gensql.TeamValueGetParams{ 85 Key: key, 86 TeamID: teamID, 87 }) 88 } 89 90 func (r *Repo) TeamValueDelete(ctx context.Context, key, teamID string) error { 91 return r.querier.TeamValueDelete(ctx, gensql.TeamValueDeleteParams{ 92 Key: key, 93 TeamID: teamID, 94 }) 95 } 96 97 func (r *Repo) TeamConfigurableValuesGet(ctx context.Context, chartType gensql.ChartType, teamID string, obj any) error { 98 teamValues, err := r.querier.TeamValuesGet(ctx, gensql.TeamValuesGetParams{ 99 ChartType: chartType, 100 TeamID: teamID, 101 }) 102 if err != nil { 103 return err 104 } 105 106 values := map[string]string{} 107 for _, value := range teamValues { 108 values[value.Key] = value.Value 109 } 110 111 return reflect.InterfaceToStruct(obj, values) 112 } 113 114 func stringSliceToLower(vals []string) []string { 115 var out []string 116 for _, v := range vals { 117 out = append(out, strings.ToLower(v)) 118 } 119 120 return out 121 }