func stringToState(str string) (apipb.ReleaseState, error) { switch str { case "waiting": return apipb.ReleaseState_WAITING, nil case "validated": return apipb.ReleaseState_VALIDATED, nil case "production": return apipb.ReleaseState_PRODUCTION, nil case "created": return apipb.ReleaseState_CREATED, nil case "rejected": return apipb.ReleaseState_REJECTED, nil case "dev": return apipb.ReleaseState_DEVELOPMENT, nil default: return apipb.ReleaseState(-1), errors.New("invalid state name") } }
func ToReleaseState(is apipb.ListGamesRequest_InnerState) apipb.ReleaseState { if is == apipb.ListGamesRequest_ANY { return apipb.ReleaseState(-1) } return apipb.ReleaseState(apipb.ReleaseState_value[apipb.ListGamesRequest_InnerState_name[int32(is)]]) }
func (ab *abManager) streamGameInfo(gameid, uniqueName, version string, stream ListGamesWithTestsStream, wg *sync.WaitGroup) { app, err := ab.App(gameid) if err != nil { logrus.WithError(err).Errorf("failed to get app test info of %s", gameid) wg.Done() return } res := &otsimopb.ListItemWithTests{ GameId: gameid, UniqueName: uniqueName, TestingVersion: app.Version, } /////////////////// grp, err := ab.db.GetGameReleaseRepo().GetLatest(gameid, models.NoTestGroup) if err != nil { logrus.WithError(err).Errorf("failed to get game release of %s", gameid) wg.Done() return } g2 := &otsimopb.ListItemWithTests_TestGroup{ Name: "", Weight: models.NoTestGroupWeight, LatestVersion: grp.Version, LatestState: grp.ReleaseState, ProductionVersion: version, ReleasedAt: grp.ReleasedAt, Languages: grp.GameManifest.Languages, } if tu, err := ab.db.GetTarballRepo().Get(gameid, grp.Version); err == nil { g2.Storage = tu.Storage g2.ArchiveFormat = tu.ArchiveFormat } else { logrus.WithError(err).Errorf("failed get tarball of %s@%s", app.AppID, grp.Version) } res.Groups = append(res.Groups, g2) ////////////// for _, t := range app.Tests { if !t.Active { continue } gr, err := ab.db.GetGameReleaseRepo().GetLatest(gameid, t.Name) if err == models.ErrorNotFound { g := &otsimopb.ListItemWithTests_TestGroup{ Name: t.Name, Weight: t.Weight, LatestVersion: "", LatestState: otsimopb.ReleaseState(-1), ProductionVersion: "", ReleasedAt: 0, Languages: []string{}, Storage: "", ArchiveFormat: "", } res.Groups = append(res.Groups, g) continue } if err != nil { logrus.WithError(err).Errorf("failed to get latest version info of %s:%s", gameid, t.Name) continue } g := &otsimopb.ListItemWithTests_TestGroup{ Name: t.Name, Weight: t.Weight, LatestVersion: gr.Version, LatestState: gr.ReleaseState, ProductionVersion: version, ReleasedAt: gr.ReleasedAt, Languages: gr.GameManifest.Languages, } if tu, err := ab.db.GetTarballRepo().Get(gameid, gr.Version); err == nil { g.Storage = tu.Storage g.ArchiveFormat = tu.ArchiveFormat } else { logrus.WithError(err).Errorf("failed get tarball of %s@%s", gameid, gr.Version) } res.Groups = append(res.Groups, g) } if err := stream.Send(res); err != nil { logrus.WithError(err).Errorf("failed get send stream data of %s", gameid) } wg.Done() }