diff --git a/server/datastore/mysql/vpp.go b/server/datastore/mysql/vpp.go index 72bc53ecd7..11bd2142b3 100644 --- a/server/datastore/mysql/vpp.go +++ b/server/datastore/mysql/vpp.go @@ -25,16 +25,18 @@ FROM vpp_apps vap INNER JOIN vpp_apps_teams vat ON vat.adam_id = vap.adam_id AND vat.platform = vap.platform WHERE - vap.title_id = ? AND - vat.global_or_team_id = ?` + vap.title_id = ? %s` - var tmID uint + // when team id is not nil, we need to filter by the global or team id given. + args := []any{titleID} + teamFilter := "" if teamID != nil { - tmID = *teamID + args = append(args, *teamID) + teamFilter = "AND vat.global_or_team_id = ?" } var app fleet.VPPAppStoreApp - err := sqlx.GetContext(ctx, ds.reader(ctx), &app, query, titleID, tmID) + err := sqlx.GetContext(ctx, ds.reader(ctx), &app, fmt.Sprintf(query, teamFilter), args...) if err != nil { if err == sql.ErrNoRows { return nil, ctxerr.Wrap(ctx, notFound("VPPApp"), "get VPP app metadata") diff --git a/server/datastore/mysql/vpp_test.go b/server/datastore/mysql/vpp_test.go index 27fce609d3..c49b062571 100644 --- a/server/datastore/mysql/vpp_test.go +++ b/server/datastore/mysql/vpp_test.go @@ -83,6 +83,11 @@ func testVPPAppMetadata(t *testing.T, ds *Datastore) { require.NoError(t, err) require.Equal(t, &fleet.VPPAppStoreApp{Name: "vpp2", VPPAppID: vpp2}, meta) + // get it for all teams + meta, err = ds.GetVPPAppMetadataByTeamAndTitleID(ctx, nil, titleID2) + require.NoError(t, err) + require.Equal(t, &fleet.VPPAppStoreApp{Name: "vpp2", VPPAppID: vpp2}, meta) + // try to add the same app again, fails _, err = ds.InsertVPPAppWithTeam(ctx, &fleet.VPPApp{Name: "vpp2", BundleIdentifier: "com.app.vpp2", VPPAppID: fleet.VPPAppID{AdamID: "adam_vpp_app_2", Platform: fleet.MacOSPlatform}}, &team1.ID)