Source File
version_map.go
Belonging Package
golang.org/x/pkgsite/internal/postgres
package postgres
import (
)
func ( *DB) ( context.Context, *internal.VersionMap) ( error) {
defer derrors.WrapStack(&, "DB.UpsertVersionMap(ctx, tx, %q, %q, %q)",
.ModulePath, .RequestedVersion, .ResolvedVersion)
var int
if .ResolvedVersion != "" {
if := .db.QueryRow(, `SELECT id FROM modules WHERE module_path=$1 AND version=$2`,
.ModulePath, .ResolvedVersion).Scan(&); != nil && != sql.ErrNoRows {
return
}
}
var string
if .ResolvedVersion != "" {
= version.ForSorting(.ResolvedVersion)
}
_, = .db.Exec(,
`INSERT INTO version_map(
module_path,
requested_version,
resolved_version,
go_mod_path,
status,
error,
sort_version,
module_id)
VALUES($1,$2,$3,$4,$5,$6,$7,$8)
ON CONFLICT (module_path, requested_version)
DO UPDATE SET
module_path=excluded.module_path,
go_mod_path=excluded.go_mod_path,
requested_version=excluded.requested_version,
resolved_version=excluded.resolved_version,
status=excluded.status,
error=excluded.error,
sort_version=excluded.sort_version,
module_id=excluded.module_id`,
.ModulePath,
.RequestedVersion,
.ResolvedVersion,
.GoModPath,
.Status,
.Error,
,
)
return
}
func ( *DB) ( context.Context, , string) ( *internal.VersionMap, error) {
defer derrors.WrapStack(&, "DB.GetVersionMap(ctx, tx, %q, %q)", , )
if == internal.UnknownModulePath {
return nil, fmt.Errorf("modulePath must be specified: %w", derrors.InvalidArgument)
}
, , := versionMapSelect().
Where(squirrel.Eq{"module_path": }).
Where(squirrel.Eq{"requested_version": }).
PlaceholderFormat(squirrel.Dollar).ToSql()
if != nil {
return nil,
}
var internal.VersionMap
= .db.QueryRow(, , ...).Scan(
&.ModulePath, &.RequestedVersion, &.ResolvedVersion, &.GoModPath,
&.Status, &.Error, &.UpdatedAt)
switch {
case nil:
return &, nil
case sql.ErrNoRows:
return nil, derrors.NotFound
default:
return nil,
}
}
func ( *DB) ( context.Context, []string, string) ( []*internal.VersionMap, error) {
defer derrors.WrapStack(&, "DB.GetVersionMapsWith4xxStatus(ctx, %v, %q)", , )
var []*internal.VersionMap
:= map[string]*internal.VersionMap{}
:= func( *sql.Rows) error {
var internal.VersionMap
if := .Scan(
&.ModulePath, &.RequestedVersion, &.ResolvedVersion, &.GoModPath,
&.Status, &.Error, &.UpdatedAt); != nil {
return
}
if , := [.ModulePath]; ! {
[.ModulePath] = &
= append(, &)
}
return nil
}
, , := versionMapSelect().
Where("module_path = ANY(?)", pq.Array()).
Where(squirrel.Or{squirrel.Eq{"requested_version": }, squirrel.Eq{"resolved_version": }}).
OrderBy("module_path DESC").
PlaceholderFormat(squirrel.Dollar).ToSql()
if != nil {
return nil, fmt.Errorf("squirrel.ToSql: %v", )
}
if := .db.RunQuery(, , , ...); != nil {
return nil,
}
return , nil
}
func () squirrel.SelectBuilder {
return squirrel.Select(
"module_path",
"requested_version",
"resolved_version",
"go_mod_path",
"status",
"error",
"updated_at",
).From("version_map")
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |