internal: change signature of GetPseudoVersions and GetTaggedVersions

The following functions now return *internal.ModuleInfo instead of
*internal.LegacyModuleInfo:

* GetPseudoVersionsForModule
* GetPseudoVersionsForPackageSeries
* GetTaggedVersionsForModule
* GetTaggedVersionsForPackageSeries

Change-Id: Ie62d58998e910f0ee8dca7690729032b1ccac5c3
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/238099
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/datasource.go b/internal/datasource.go
index 517772f..32ceebe 100644
--- a/internal/datasource.go
+++ b/internal/datasource.go
@@ -25,17 +25,17 @@
 	GetPathInfo(ctx context.Context, path, inModulePath, inVersion string) (outModulePath, outVersion string, isPackage bool, err error)
 	// GetPseudoVersionsForModule returns LegacyModuleInfo for all known
 	// pseudo-versions for the module corresponding to modulePath.
-	GetPseudoVersionsForModule(ctx context.Context, modulePath string) ([]*LegacyModuleInfo, error)
+	GetPseudoVersionsForModule(ctx context.Context, modulePath string) ([]*ModuleInfo, error)
 	// GetPseudoVersionsForModule returns LegacyModuleInfo for all known
 	// pseudo-versions for any module containing a package with the given import
 	// path.
-	GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*LegacyModuleInfo, error)
+	GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*ModuleInfo, error)
 	// GetTaggedVersionsForModule returns LegacyModuleInfo for all known tagged
 	// versions for the module corresponding to modulePath.
-	GetTaggedVersionsForModule(ctx context.Context, modulePath string) ([]*LegacyModuleInfo, error)
+	GetTaggedVersionsForModule(ctx context.Context, modulePath string) ([]*ModuleInfo, error)
 	// GetTaggedVersionsForModule returns LegacyModuleInfo for all known tagged
 	// versions for any module containing a package with the given import path.
-	GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*LegacyModuleInfo, error)
+	GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*ModuleInfo, error)
 
 	// TODO(b/155474770): Deprecate these methods.
 	//
diff --git a/internal/frontend/tabs.go b/internal/frontend/tabs.go
index 50ecba1..6613632 100644
--- a/internal/frontend/tabs.go
+++ b/internal/frontend/tabs.go
@@ -208,7 +208,7 @@
 	case "licenses":
 		return &LicensesDetails{Licenses: transformLicenses(mi.ModulePath, mi.Version, licenses)}, nil
 	case "versions":
-		return fetchModuleVersionsDetails(ctx, ds, mi)
+		return fetchModuleVersionsDetails(ctx, ds, &mi.ModuleInfo)
 	case "overview":
 		// TODO(b/138448402): implement remaining module views.
 		readme := &internal.Readme{Filepath: mi.LegacyReadmeFilePath, Contents: mi.LegacyReadmeContents}
diff --git a/internal/frontend/versions.go b/internal/frontend/versions.go
index c365acf..3ee148a 100644
--- a/internal/frontend/versions.go
+++ b/internal/frontend/versions.go
@@ -63,7 +63,7 @@
 
 // fetchModuleVersionsDetails builds a version hierarchy for module versions
 // with the same series path as the given version.
-func fetchModuleVersionsDetails(ctx context.Context, ds internal.DataSource, mi *internal.LegacyModuleInfo) (*VersionsDetails, error) {
+func fetchModuleVersionsDetails(ctx context.Context, ds internal.DataSource, mi *internal.ModuleInfo) (*VersionsDetails, error) {
 	versions, err := ds.GetTaggedVersionsForModule(ctx, mi.ModulePath)
 	if err != nil {
 		return nil, err
@@ -76,7 +76,7 @@
 			return nil, err
 		}
 	}
-	linkify := func(m *internal.LegacyModuleInfo) string {
+	linkify := func(m *internal.ModuleInfo) string {
 		return constructModuleURL(m.ModulePath, linkVersion(m.Version, m.ModulePath))
 	}
 	return buildVersionDetails(mi.ModulePath, versions, linkify), nil
@@ -98,7 +98,7 @@
 		}
 	}
 
-	var filteredVersions []*internal.LegacyModuleInfo
+	var filteredVersions []*internal.ModuleInfo
 	// TODO(rfindley): remove this filtering, as it should not be necessary and
 	// is probably a relic of earlier version query implementations.
 	for _, v := range versions {
@@ -109,7 +109,7 @@
 		}
 	}
 
-	linkify := func(mi *internal.LegacyModuleInfo) string {
+	linkify := func(mi *internal.ModuleInfo) string {
 		// Here we have only version information, but need to construct the full
 		// import path of the package corresponding to this version.
 		var versionPath string
@@ -135,7 +135,7 @@
 //   3) Join with the versioned module path foo.com/bar/v2 to get
 //      foo.com/bar/v2/baz.
 // ...being careful about slashes along the way.
-func pathInVersion(v1Path string, mi *internal.LegacyModuleInfo) string {
+func pathInVersion(v1Path string, mi *internal.ModuleInfo) string {
 	suffix := strings.TrimPrefix(strings.TrimPrefix(v1Path, mi.SeriesPath()), "/")
 	if suffix == "" {
 		return mi.ModulePath
@@ -147,7 +147,7 @@
 // versions tab, organizing major versions into those that have the same module
 // path as the package version under consideration, and those that don't.  The
 // given versions MUST be sorted first by module path and then by semver.
-func buildVersionDetails(currentModulePath string, modInfos []*internal.LegacyModuleInfo, linkify func(v *internal.LegacyModuleInfo) string) *VersionsDetails {
+func buildVersionDetails(currentModulePath string, modInfos []*internal.ModuleInfo, linkify func(v *internal.ModuleInfo) string) *VersionsDetails {
 
 	// lists organizes versions by VersionListKey. Note that major version isn't
 	// sufficient as a key: there are packages contained in the same major
diff --git a/internal/frontend/versions_test.go b/internal/frontend/versions_test.go
index 4b99506..32ee36c 100644
--- a/internal/frontend/versions_test.go
+++ b/internal/frontend/versions_test.go
@@ -58,8 +58,8 @@
 	ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
 	defer cancel()
 
-	info1 := sample.LegacyModuleInfo(modulePath1, "v1.2.1")
-	info2 := sample.LegacyModuleInfo(modulePath2, "v2.2.1-alpha.1")
+	info1 := sample.ModuleInfo(modulePath1, "v1.2.1")
+	info2 := sample.ModuleInfo(modulePath2, "v2.2.1-alpha.1")
 	makeList := func(path, major string, versions []string) *VersionList {
 		return &VersionList{
 			VersionListKey: VersionListKey{ModulePath: path, Major: major},
@@ -71,7 +71,7 @@
 
 	for _, tc := range []struct {
 		name        string
-		info        *internal.LegacyModuleInfo
+		info        *internal.ModuleInfo
 		modules     []*internal.Module
 		wantDetails *VersionsDetails
 	}{
@@ -291,7 +291,7 @@
 	}
 
 	for _, test := range tests {
-		mi := sample.LegacyModuleInfo(test.modulePath, sample.VersionString)
+		mi := sample.ModuleInfo(test.modulePath, sample.VersionString)
 		if got := pathInVersion(test.v1Path, mi); got != test.want {
 			t.Errorf("pathInVersion(%q, LegacyModuleInfo{...ModulePath:%q}) = %s, want %v",
 				test.v1Path, mi.ModulePath, got, test.want)
diff --git a/internal/postgres/details.go b/internal/postgres/details.go
index 12345b4..b107438 100644
--- a/internal/postgres/details.go
+++ b/internal/postgres/details.go
@@ -71,21 +71,21 @@
 // GetTaggedVersionsForPackageSeries returns a list of tagged versions sorted in
 // descending semver order. This list includes tagged versions of packages that
 // have the same v1path.
-func (db *DB) GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*internal.LegacyModuleInfo, error) {
+func (db *DB) GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*internal.ModuleInfo, error) {
 	return getPackageVersions(ctx, db, pkgPath, []version.Type{version.TypeRelease, version.TypePrerelease})
 }
 
 // GetPseudoVersionsForPackageSeries returns the 10 most recent from a list of
 // pseudo-versions sorted in descending semver order. This list includes
 // pseudo-versions of packages that have the same v1path.
-func (db *DB) GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*internal.LegacyModuleInfo, error) {
+func (db *DB) GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) ([]*internal.ModuleInfo, error) {
 	return getPackageVersions(ctx, db, pkgPath, []version.Type{version.TypePseudo})
 }
 
 // getPackageVersions returns a list of versions sorted in descending semver
 // order. The version types included in the list are specified by a list of
 // VersionTypes.
-func getPackageVersions(ctx context.Context, db *DB, pkgPath string, versionTypes []version.Type) (_ []*internal.LegacyModuleInfo, err error) {
+func getPackageVersions(ctx context.Context, db *DB, pkgPath string, versionTypes []version.Type) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "DB.getPackageVersions(ctx, db, %q, %v)", pkgPath, versionTypes)
 
 	baseQuery := `
@@ -124,9 +124,9 @@
 	}
 	defer rows.Close()
 
-	var versionHistory []*internal.LegacyModuleInfo
+	var versionHistory []*internal.ModuleInfo
 	for rows.Next() {
-		var mi internal.LegacyModuleInfo
+		var mi internal.ModuleInfo
 		if err := rows.Scan(&mi.ModulePath, &mi.Version, &mi.CommitTime); err != nil {
 			return nil, fmt.Errorf("row.Scan(): %v", err)
 		}
@@ -152,20 +152,20 @@
 
 // GetTaggedVersionsForModule returns a list of tagged versions sorted in
 // descending semver order.
-func (db *DB) GetTaggedVersionsForModule(ctx context.Context, modulePath string) ([]*internal.LegacyModuleInfo, error) {
+func (db *DB) GetTaggedVersionsForModule(ctx context.Context, modulePath string) ([]*internal.ModuleInfo, error) {
 	return getModuleVersions(ctx, db, modulePath, []version.Type{version.TypeRelease, version.TypePrerelease})
 }
 
 // GetPseudoVersionsForModule returns the 10 most recent from a list of
 // pseudo-versions sorted in descending semver order.
-func (db *DB) GetPseudoVersionsForModule(ctx context.Context, modulePath string) ([]*internal.LegacyModuleInfo, error) {
+func (db *DB) GetPseudoVersionsForModule(ctx context.Context, modulePath string) ([]*internal.ModuleInfo, error) {
 	return getModuleVersions(ctx, db, modulePath, []version.Type{version.TypePseudo})
 }
 
 // getModuleVersions returns a list of versions sorted in descending semver
 // order. The version types included in the list are specified by a list of
 // VersionTypes.
-func getModuleVersions(ctx context.Context, db *DB, modulePath string, versionTypes []version.Type) (_ []*internal.LegacyModuleInfo, err error) {
+func getModuleVersions(ctx context.Context, db *DB, modulePath string, versionTypes []version.Type) (_ []*internal.ModuleInfo, err error) {
 	// TODO(b/139530312): get information for parent modules.
 	defer derrors.Wrap(&err, "getModuleVersions(ctx, db, %q, %v)", modulePath, versionTypes)
 
@@ -187,9 +187,9 @@
 		queryEnd = `LIMIT 10;`
 	}
 	query := fmt.Sprintf(baseQuery, versionTypeExpr(versionTypes), queryEnd)
-	var vinfos []*internal.LegacyModuleInfo
+	var vinfos []*internal.ModuleInfo
 	collect := func(rows *sql.Rows) error {
-		var mi internal.LegacyModuleInfo
+		var mi internal.ModuleInfo
 		if err := rows.Scan(&mi.ModulePath, &mi.Version, &mi.CommitTime); err != nil {
 			return err
 		}
diff --git a/internal/postgres/details_test.go b/internal/postgres/details_test.go
index 7e96b85..141525e 100644
--- a/internal/postgres/details_test.go
+++ b/internal/postgres/details_test.go
@@ -193,7 +193,7 @@
 		name, path, modulePath string
 		numPseudo              int
 		modules                []*internal.Module
-		wantTaggedVersions     []*internal.LegacyModuleInfo
+		wantTaggedVersions     []*internal.ModuleInfo
 	}{
 		{
 			name:       "want_releases_and_prereleases_only",
@@ -201,34 +201,26 @@
 			modulePath: modulePath1,
 			numPseudo:  12,
 			modules:    testModules,
-			wantTaggedVersions: []*internal.LegacyModuleInfo{
+			wantTaggedVersions: []*internal.ModuleInfo{
 				{
-					ModuleInfo: internal.ModuleInfo{
-						ModulePath: modulePath2,
-						Version:    "v2.1.0",
-						CommitTime: sample.CommitTime,
-					},
+					ModulePath: modulePath2,
+					Version:    "v2.1.0",
+					CommitTime: sample.CommitTime,
 				},
 				{
-					ModuleInfo: internal.ModuleInfo{
-						ModulePath: modulePath2,
-						Version:    "v2.0.1-beta",
-						CommitTime: sample.CommitTime,
-					},
+					ModulePath: modulePath2,
+					Version:    "v2.0.1-beta",
+					CommitTime: sample.CommitTime,
 				},
 				{
-					ModuleInfo: internal.ModuleInfo{
-						ModulePath: modulePath1,
-						Version:    "v1.0.0",
-						CommitTime: sample.CommitTime,
-					},
+					ModulePath: modulePath1,
+					Version:    "v1.0.0",
+					CommitTime: sample.CommitTime,
 				},
 				{
-					ModuleInfo: internal.ModuleInfo{
-						ModulePath: modulePath1,
-						Version:    "v1.0.0-alpha.1",
-						CommitTime: sample.CommitTime,
-					},
+					ModulePath: modulePath1,
+					Version:    "v1.0.0-alpha.1",
+					CommitTime: sample.CommitTime,
 				},
 			},
 		},
@@ -249,7 +241,7 @@
 		t.Run(tc.name, func(t *testing.T) {
 			defer ResetTestDB(testDB, t)
 
-			var wantPseudoVersions []*internal.LegacyModuleInfo
+			var wantPseudoVersions []*internal.ModuleInfo
 			for i := 0; i < tc.numPseudo; i++ {
 
 				pseudo := fmt.Sprintf("v0.0.0-201806111833%02d-d8887717615a", i+1)
@@ -261,12 +253,10 @@
 				// GetPseudoVersions should only return the 10 most recent pseudo versions,
 				// if there are more than 10 in the database
 				if i < 10 {
-					wantPseudoVersions = append(wantPseudoVersions, &internal.LegacyModuleInfo{
-						ModuleInfo: internal.ModuleInfo{
-							ModulePath: modulePath1,
-							Version:    fmt.Sprintf("v0.0.0-201806111833%02d-d8887717615a", tc.numPseudo-i),
-							CommitTime: sample.CommitTime,
-						},
+					wantPseudoVersions = append(wantPseudoVersions, &internal.ModuleInfo{
+						ModulePath: modulePath1,
+						Version:    fmt.Sprintf("v0.0.0-201806111833%02d-d8887717615a", tc.numPseudo-i),
+						CommitTime: sample.CommitTime,
 					})
 				}
 			}
@@ -308,7 +298,6 @@
 			if diff := cmp.Diff(tc.wantTaggedVersions, got, cmp.AllowUnexported(source.Info{})); diff != "" {
 				t.Errorf("testDB.GetTaggedVersionsForModule(%q) mismatch (-want +got):\n%s", tc.path, diff)
 			}
-
 		})
 	}
 }
diff --git a/internal/proxydatasource/datasource.go b/internal/proxydatasource/datasource.go
index bcf6f83..e9acc9e 100644
--- a/internal/proxydatasource/datasource.go
+++ b/internal/proxydatasource/datasource.go
@@ -188,7 +188,7 @@
 
 // GetPseudoVersionsForModule returns versions from the the proxy /list
 // endpoint, if they are pseudoversions. Otherwise, it returns an empty slice.
-func (ds *DataSource) GetPseudoVersionsForModule(ctx context.Context, modulePath string) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) GetPseudoVersionsForModule(ctx context.Context, modulePath string) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "GetPseudoVersionsForModule(%q)", modulePath)
 	return ds.listModuleVersions(ctx, modulePath, true)
 }
@@ -196,14 +196,14 @@
 // GetPseudoVersionsForPackageSeries finds the longest module path containing
 // pkgPath, and returns its versions from the proxy /list endpoint, if they are
 // pseudoversions. Otherwise, it returns an empty slice.
-func (ds *DataSource) GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) GetPseudoVersionsForPackageSeries(ctx context.Context, pkgPath string) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "GetPseudoVersionsForPackageSeries(%q)", pkgPath)
 	return ds.listPackageVersions(ctx, pkgPath, true)
 }
 
 // GetTaggedVersionsForModule returns versions from the the proxy /list
 // endpoint, if they are tagged versions. Otherwise, it returns an empty slice.
-func (ds *DataSource) GetTaggedVersionsForModule(ctx context.Context, modulePath string) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) GetTaggedVersionsForModule(ctx context.Context, modulePath string) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "GetTaggedVersionsForModule(%q)", modulePath)
 	return ds.listModuleVersions(ctx, modulePath, false)
 }
@@ -211,7 +211,7 @@
 // GetTaggedVersionsForPackageSeries finds the longest module path containing
 // pkgPath, and returns its versions from the proxy /list endpoint, if they are
 // tagged versions. Otherwise, it returns an empty slice.
-func (ds *DataSource) GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) GetTaggedVersionsForPackageSeries(ctx context.Context, pkgPath string) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "GetTaggedVersionsForPackageSeries(%q)", pkgPath)
 	return ds.listPackageVersions(ctx, pkgPath, false)
 }
@@ -302,7 +302,7 @@
 // calls the proxy /list endpoint to list its versions. If pseudo is true, it
 // filters to pseudo versions.  If pseudo is false, it filters to tagged
 // versions.
-func (ds *DataSource) listPackageVersions(ctx context.Context, pkgPath string, pseudo bool) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) listPackageVersions(ctx context.Context, pkgPath string, pseudo bool) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "listPackageVersions(%q, %t)", pkgPath, pseudo)
 	ds.mu.RLock()
 	mods := ds.packagePathToModules[pkgPath]
@@ -324,13 +324,13 @@
 // calls the proxy /list endpoint to list its versions. If pseudo is true, it
 // filters to pseudo versions.  If pseudo is false, it filters to tagged
 // versions.
-func (ds *DataSource) listModuleVersions(ctx context.Context, modulePath string, pseudo bool) (_ []*internal.LegacyModuleInfo, err error) {
+func (ds *DataSource) listModuleVersions(ctx context.Context, modulePath string, pseudo bool) (_ []*internal.ModuleInfo, err error) {
 	defer derrors.Wrap(&err, "listModuleVersions(%q, %t)", modulePath, pseudo)
 	versions, err := ds.proxyClient.ListVersions(ctx, modulePath)
 	if err != nil {
 		return nil, err
 	}
-	var vis []*internal.LegacyModuleInfo
+	var vis []*internal.ModuleInfo
 	ds.mu.RLock()
 	defer ds.mu.RUnlock()
 	for _, vers := range versions {
@@ -341,17 +341,15 @@
 			continue
 		}
 		if v, ok := ds.versionCache[versionKey{modulePath, vers}]; ok {
-			vis = append(vis, &v.module.LegacyModuleInfo)
+			vis = append(vis, &v.module.ModuleInfo)
 		} else {
-			// In this case we can't produce s LegacyModuleInfo without fully processing
+			// In this case we can't produce ModuleInfo without fully processing
 			// the module zip, so we instead append a stub. We could further query
 			// for this version's /info endpoint to get commit time, but that is
 			// deferred as a potential future enhancement.
-			vis = append(vis, &internal.LegacyModuleInfo{
-				ModuleInfo: internal.ModuleInfo{
-					ModulePath: modulePath,
-					Version:    vers,
-				},
+			vis = append(vis, &internal.ModuleInfo{
+				ModulePath: modulePath,
+				Version:    vers,
 			})
 		}
 	}
diff --git a/internal/proxydatasource/datasource_test.go b/internal/proxydatasource/datasource_test.go
index 82eae66..7fdd25b 100644
--- a/internal/proxydatasource/datasource_test.go
+++ b/internal/proxydatasource/datasource_test.go
@@ -192,11 +192,11 @@
 	}
 	v110 := wantModuleInfo
 	v110.Version = "v1.1.0"
-	want := []*internal.LegacyModuleInfo{
-		{ModuleInfo: wantModuleInfo},
-		{ModuleInfo: v110},
+	want := []*internal.ModuleInfo{
+		&wantModuleInfo,
+		&v110,
 	}
-	ignore := cmpopts.IgnoreFields(internal.LegacyModuleInfo{}, "CommitTime", "VersionType", "IsRedistributable", "HasGoMod")
+	ignore := cmpopts.IgnoreFields(internal.ModuleInfo{}, "CommitTime", "VersionType", "IsRedistributable", "HasGoMod")
 	if diff := cmp.Diff(want, got, ignore); diff != "" {
 		t.Errorf("GetTaggedVersionsForPackageSeries diff (-want +got):\n%s", diff)
 	}
@@ -216,11 +216,11 @@
 	}
 	v110 := wantModuleInfo
 	v110.Version = "v1.1.0"
-	want := []*internal.LegacyModuleInfo{
-		{ModuleInfo: wantModuleInfo},
-		{ModuleInfo: v110},
+	want := []*internal.ModuleInfo{
+		&wantModuleInfo,
+		&v110,
 	}
-	ignore := cmpopts.IgnoreFields(internal.LegacyModuleInfo{}, "CommitTime", "VersionType", "IsRedistributable", "HasGoMod")
+	ignore := cmpopts.IgnoreFields(internal.ModuleInfo{}, "CommitTime", "VersionType", "IsRedistributable", "HasGoMod")
 	if diff := cmp.Diff(want, got, ignore); diff != "" {
 		t.Errorf("GetTaggedVersionsForPackageSeries diff (-want +got):\n%s", diff)
 	}