refactor(lint): apply Go best practices across codebase

- Use errors.Is() instead of direct sentinel comparison (13 instances)
- Convert if/else-if chains to switch/case for same-variable comparisons
- Remove redundant bitwise OR with zero
- Add post-implementation checklist to CLAUDE.md
This commit is contained in:
viettranx committed 2026-03-07 20:51:39 +07:00
1 parent df684e2582
commit b62d46e50e
14 files changed
+56 -28

No files matched your search

+6 -5
View File
@@ -170,21 +170,22 @@ func registerProvidersFromDB(registry *providers.Registry, provStore store.Provi
if p.APIKey == "" {
continue
}
if p.ProviderType == store.ProviderChatGPTOAuth {
switch p.ProviderType {
case store.ProviderChatGPTOAuth:
ts := oauth.NewDBTokenSource(provStore, secretStore, p.Name)
registry.Register(providers.NewCodexProvider(p.Name, ts, p.APIBase, ""))
} else if p.ProviderType == store.ProviderAnthropicNative {
case store.ProviderAnthropicNative:
registry.Register(providers.NewAnthropicProvider(p.APIKey,
providers.WithAnthropicBaseURL(p.APIBase)))
} else if p.ProviderType == store.ProviderDashScope {
case store.ProviderDashScope:
registry.Register(providers.NewDashScopeProvider(p.APIKey, p.APIBase, ""))
} else if p.ProviderType == store.ProviderBailian {
case store.ProviderBailian:
base := p.APIBase
if base == "" {
base = "https://coding-intl.dashscope.aliyuncs.com/v1"
}
registry.Register(providers.NewOpenAIProvider(p.Name, p.APIKey, base, "qwen3.5-plus"))
} else {
default:
prov := providers.NewOpenAIProvider(p.Name, p.APIKey, p.APIBase, "")
if p.ProviderType == store.ProviderMiniMax {
prov.WithChatPath("/text/chatcompletion_v2")
+2 -1
View File
@@ -4,6 +4,7 @@ package cmd
import (
"context"
"errors"
"log/slog"
"net"
"net/http"
@@ -59,7 +60,7 @@ func initTailscale(ctx context.Context, cfg *config.Config, mux http.Handler) fu
httpSrv := &http.Server{Handler: mux}
go func() {
if err := httpSrv.Serve(ln); err != nil && err != http.ErrServerClosed {
if err := httpSrv.Serve(ln); err != nil && !errors.Is(err, http.ErrServerClosed) {
slog.Warn("Tailscale HTTP server error", "error", err)
}
}()
+4 -3
View File
@@ -3,6 +3,7 @@ package cmd
import (
"context"
"database/sql"
"errors"
"fmt"
"log/slog"
"os"
@@ -93,7 +94,7 @@ func migrateUpCmd() *cobra.Command {
}
defer m.Close()
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("migrate up: %w", err)
}
@@ -139,7 +140,7 @@ func migrateDownCmd() *cobra.Command {
if steps <= 0 {
steps = 1
}
if err := m.Steps(-steps); err != nil && err != migrate.ErrNoChange {
if err := m.Steps(-steps); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("migrate down: %w", err)
}
@@ -226,7 +227,7 @@ func migrateGotoCmd() *cobra.Command {
}
defer m.Close()
if err := m.Migrate(uint(version)); err != nil && err != migrate.ErrNoChange {
if err := m.Migrate(uint(version)); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("migrate goto: %w", err)
}
slog.Info("migrated to version", "version", version)
+2 -2
View File
@@ -168,7 +168,7 @@ func runUpgrade(dryRun bool) error {
}
defer m.Close()
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
fmt.Println("FAILED")
return fmt.Errorf("migrate up: %w", err)
}
@@ -240,7 +240,7 @@ func checkSchemaOrAutoUpgrade(dsn string) error {
}
defer m.Close()
if mErr := m.Up(); mErr != nil && mErr != migrate.ErrNoChange {
if mErr := m.Up(); mErr != nil && !errors.Is(mErr, migrate.ErrNoChange) {
return fmt.Errorf("auto-upgrade: migrate up: %w", mErr)
}