internal/postgres: move query to legacyUnitMetaQuery

The query for GetUnitMeta is moved to legacyGetUnitMetaQuery, so that it
can be replaced in a future CL.

Change-Id: I45e56dc7c0d8c9a68c7f306ce203d50ef4a29196
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/276332
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/postgres/unit.go b/internal/postgres/unit.go
index b432fc6..e5278a5 100644
--- a/internal/postgres/unit.go
+++ b/internal/postgres/unit.go
@@ -32,37 +32,15 @@
 	defer derrors.Wrap(&err, "DB.GetUnitMeta(ctx, %q, %q, %q)", fullPath, requestedModulePath, requestedVersion)
 	defer middleware.ElapsedStat(ctx, "GetUnitMeta")()
 
-	query := squirrel.Select(
-		"m.module_path",
-		"m.version",
-		"m.commit_time",
-		"m.source_info",
-		"m.has_go_mod",
-		"u.name",
-		"u.redistributable",
-		"u.license_types",
-		"u.license_paths",
-	).From("modules m").Join(
-		"units u on u.module_id = m.id").Where(squirrel.Eq{"u.path": fullPath})
-
-	if requestedModulePath != internal.UnknownModulePath {
-		query = query.Where(squirrel.Eq{"m.module_path": requestedModulePath})
-	}
-	if _, ok := internal.DefaultBranches[requestedVersion]; ok {
-		query = query.Join("version_map vm ON m.id = vm.module_id").Where("vm.requested_version = ? ", requestedVersion)
-	} else if requestedVersion != internal.LatestVersion {
-		query = query.Where(squirrel.Eq{"version": requestedVersion})
+	q, args, err := legacyGetUnitMetaQuery(fullPath, requestedModulePath, requestedVersion).ToSql()
+	if err != nil {
+		return nil, fmt.Errorf("squirrel.ToSql: %v", err)
 	}
 	var (
 		licenseTypes []string
 		licensePaths []string
 		um           = internal.UnitMeta{Path: fullPath}
 	)
-	q, args, err := orderByLatest(query).ToSql()
-	if err != nil {
-		return nil, fmt.Errorf("squirrel.ToSql: %v", err)
-	}
-
 	err = db.db.QueryRow(ctx, q, args...).Scan(
 		&um.ModulePath,
 		&um.Version,
@@ -93,6 +71,31 @@
 	}
 }
 
+func legacyGetUnitMetaQuery(fullPath, requestedModulePath, requestedVersion string) squirrel.SelectBuilder {
+	query := squirrel.Select(
+		"m.module_path",
+		"m.version",
+		"m.commit_time",
+		"m.source_info",
+		"m.has_go_mod",
+		"u.name",
+		"u.redistributable",
+		"u.license_types",
+		"u.license_paths",
+	).From("modules m").
+		Join("units u on u.module_id = m.id").
+		Where(squirrel.Eq{"u.path": fullPath})
+	if requestedModulePath != internal.UnknownModulePath {
+		query = query.Where(squirrel.Eq{"m.module_path": requestedModulePath})
+	}
+	if _, ok := internal.DefaultBranches[requestedVersion]; ok {
+		query = query.Join("version_map vm ON m.id = vm.module_id").Where("vm.requested_version = ? ", requestedVersion)
+	} else if requestedVersion != internal.LatestVersion {
+		query = query.Where(squirrel.Eq{"version": requestedVersion})
+	}
+	return orderByLatest(query)
+}
+
 // orderByLatest orders paths according to the go command.
 // Versions are ordered by:
 // (1) release (non-incompatible)