mirror of
https://github.com/coder/coder.git
synced 2026-09-22 05:05:20 +08:00
refactor(coderd/database): split Time and Now into dbtime package (#9482)
Ref: #9380
This commit is contained in:
@@ -19,7 +19,7 @@ import (
|
||||
|
||||
"cdr.dev/slog"
|
||||
"github.com/coder/coder/v2/agent/agentssh"
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/httpapi"
|
||||
"github.com/coder/coder/v2/coderd/httpmw"
|
||||
"github.com/coder/coder/v2/coderd/tracing"
|
||||
@@ -600,7 +600,7 @@ func (s *Server) proxyWorkspaceApp(rw http.ResponseWriter, r *http.Request, appT
|
||||
s.collectStats(report)
|
||||
defer func() {
|
||||
// We must use defer here because ServeHTTP may panic.
|
||||
report.SessionEndedAt = database.Now()
|
||||
report.SessionEndedAt = dbtime.Now()
|
||||
s.collectStats(report)
|
||||
}()
|
||||
|
||||
@@ -700,7 +700,7 @@ func (s *Server) workspaceAgentPTY(rw http.ResponseWriter, r *http.Request) {
|
||||
report := newStatsReportFromSignedToken(*appToken)
|
||||
s.collectStats(report)
|
||||
defer func() {
|
||||
report.SessionEndedAt = database.Now()
|
||||
report.SessionEndedAt = dbtime.Now()
|
||||
s.collectStats(report)
|
||||
}()
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -43,7 +44,7 @@ func newStatsReportFromSignedToken(token SignedToken) StatsReport {
|
||||
AccessMethod: token.AccessMethod,
|
||||
SlugOrPort: token.AppSlugOrPort,
|
||||
SessionID: uuid.New(),
|
||||
SessionStartedAt: database.Now(),
|
||||
SessionStartedAt: dbtime.Now(),
|
||||
Requests: 1,
|
||||
}
|
||||
}
|
||||
@@ -294,7 +295,7 @@ func (sc *StatsCollector) rollup(now time.Time) []StatsReport {
|
||||
// Report an end time for incomplete sessions, it will
|
||||
// be updated later. This ensures that data in the DB
|
||||
// will have an end time even if the service is stopped.
|
||||
r.SessionEndedAt = now.UTC() // Use UTC like database.Now().
|
||||
r.SessionEndedAt = now.UTC() // Use UTC like dbtime.Now().
|
||||
}
|
||||
report = append(report, r) // Report it (ended or incomplete).
|
||||
if stat.SessionEndedAt.IsZero() {
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
"golang.org/x/exp/slices"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/workspaceapps"
|
||||
"github.com/coder/coder/v2/testutil"
|
||||
)
|
||||
@@ -63,7 +63,7 @@ func TestStatsCollector(t *testing.T) {
|
||||
someUUID := uuid.New()
|
||||
|
||||
rollupWindow := time.Minute
|
||||
start := database.Now().Truncate(time.Minute).UTC()
|
||||
start := dbtime.Now().Truncate(time.Minute).UTC()
|
||||
end := start.Add(10 * time.Second)
|
||||
|
||||
tests := []struct {
|
||||
@@ -351,7 +351,7 @@ func TestStatsCollector_backlog(t *testing.T) {
|
||||
rollupWindow := time.Minute
|
||||
flush := make(chan chan<- struct{}, 1)
|
||||
|
||||
start := database.Now().Truncate(time.Minute).UTC()
|
||||
start := dbtime.Now().Truncate(time.Minute).UTC()
|
||||
var now atomic.Pointer[time.Time]
|
||||
now.Store(&start)
|
||||
|
||||
@@ -414,8 +414,8 @@ func TestStatsCollector_Close(t *testing.T) {
|
||||
|
||||
collector.Collect(workspaceapps.StatsReport{
|
||||
SessionID: uuid.New(),
|
||||
SessionStartedAt: database.Now(),
|
||||
SessionEndedAt: database.Now(),
|
||||
SessionStartedAt: dbtime.Now(),
|
||||
SessionEndedAt: dbtime.Now(),
|
||||
Requests: 1,
|
||||
})
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
)
|
||||
|
||||
@@ -168,7 +168,7 @@ func (k SecurityKey) EncryptAPIKey(payload EncryptedAPIKeyPayload) (string, erro
|
||||
if payload.ExpiresAt.IsZero() {
|
||||
// Very short expiry as these keys are only used once as part of an
|
||||
// automatic redirection flow.
|
||||
payload.ExpiresAt = database.Now().Add(time.Minute)
|
||||
payload.ExpiresAt = dbtime.Now().Add(time.Minute)
|
||||
}
|
||||
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
@@ -227,7 +227,7 @@ func (k SecurityKey) DecryptAPIKey(encryptedAPIKey string) (string, error) {
|
||||
}
|
||||
|
||||
// Validate expiry.
|
||||
if payload.ExpiresAt.Before(database.Now()) {
|
||||
if payload.ExpiresAt.Before(dbtime.Now()) {
|
||||
return "", xerrors.New("encrypted API key expired")
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/coderdtest"
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/workspaceapps"
|
||||
"github.com/coder/coder/v2/cryptorand"
|
||||
)
|
||||
@@ -467,7 +467,7 @@ func TestAPIKeyEncryption(t *testing.T) {
|
||||
key := genAPIKey(t)
|
||||
encrypted, err := coderdtest.AppSecurityKey.EncryptAPIKey(workspaceapps.EncryptedAPIKeyPayload{
|
||||
APIKey: key,
|
||||
ExpiresAt: database.Now().Add(-1 * time.Hour),
|
||||
ExpiresAt: dbtime.Now().Add(-1 * time.Hour),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user