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)