diff --git a/models/f3/forge/forge.go b/models/f3/forge/forge.go index 4da557433d..568b74f15d 100644 --- a/models/f3/forge/forge.go +++ b/models/f3/forge/forge.go @@ -5,10 +5,12 @@ package forge import ( "context" + "errors" "fmt" "forgejo.org/models/db" "forgejo.org/modules/keying" + "forgejo.org/modules/util" "xorm.io/builder" ) @@ -85,7 +87,7 @@ func Equal(a, b *Forge) bool { func Upsert(ctx context.Context, forge *Forge) (*Forge, error) { if err := db.WithTx(ctx, func(ctx context.Context) error { found, err := Get(ctx, FindOptions{URL: &forge.URL}) - if err != nil { + if err != nil && !errors.Is(err, util.ErrNotExist) { return fmt.Errorf("forge Upsert Get: %w", err) } if found == nil { @@ -173,7 +175,7 @@ func Get(ctx context.Context, opts FindOptions) (*Forge, error) { return nil, fmt.Errorf("forge Get Find: %w", err) } if len(forges) == 0 { - return nil, nil //nolint:nilnil + return nil, util.ErrNotExist } if len(forges) != 1 { return nil, fmt.Errorf("forge Get expected to find one forge but found %d instead", len(forges)) diff --git a/models/f3/forge/forge_test.go b/models/f3/forge/forge_test.go index bf16ae217b..22737f05ee 100644 --- a/models/f3/forge/forge_test.go +++ b/models/f3/forge/forge_test.go @@ -7,6 +7,7 @@ import ( "testing" "forgejo.org/models/unittest" + "forgejo.org/modules/util" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -86,7 +87,7 @@ func TestF3Model_ForgeDatabase(t *testing.T) { t.Run("Get not found", func(t *testing.T) { unknownURL := "unknown" forge, err := Get(t.Context(), FindOptions{URL: &unknownURL}) - require.NoError(t, err) + require.ErrorIs(t, err, util.ErrNotExist) assert.Nil(t, forge) }) diff --git a/models/f3/mirror/mirror.go b/models/f3/mirror/mirror.go index 7dde5b13f4..4d61944893 100644 --- a/models/f3/mirror/mirror.go +++ b/models/f3/mirror/mirror.go @@ -5,6 +5,7 @@ package mirror import ( "context" + "errors" "fmt" "path/filepath" "slices" @@ -14,6 +15,7 @@ import ( "forgejo.org/models/db" "forgejo.org/modules/keying" "forgejo.org/modules/timeutil" + "forgejo.org/modules/util" "xorm.io/builder" ) @@ -249,7 +251,7 @@ func findFromPathEquivalents(ctx context.Context, forgeID int64, fromPath string shortestFromPath = fromPath } else { mirror, err := Get(ctx, FindOptions{ID: &equivalents[0].ID}) - if err != nil { + if err != nil && !errors.Is(err, util.ErrNotExist) { return nil, nil, fmt.Errorf("mirror findFromPathEquivalents Get: %w", err) } found = mirror @@ -277,7 +279,7 @@ func Get(ctx context.Context, opts FindOptions) (*Mirror, error) { return nil, fmt.Errorf("mirror Get Find: %w", err) } if len(mirrors) == 0 { - return nil, nil //nolint:nilnil + return nil, util.ErrNotExist } if len(mirrors) != 1 { return nil, fmt.Errorf("mirror Get expected to find one mirror but found %d instead", len(mirrors)) diff --git a/models/f3/resource/resource.go b/models/f3/resource/resource.go index bf99ffd4fb..6ae9799b15 100644 --- a/models/f3/resource/resource.go +++ b/models/f3/resource/resource.go @@ -5,9 +5,11 @@ package resource import ( "context" + "errors" "fmt" "forgejo.org/models/db" + "forgejo.org/modules/util" "xorm.io/builder" ) @@ -87,7 +89,7 @@ func Upsert(ctx context.Context, resource *Resource) (*Resource, error) { ResourceID: &resource.ResourceID, Kind: &resource.Kind, }) - if err != nil { + if err != nil && !errors.Is(err, util.ErrNotExist) { return fmt.Errorf("resource Upsert Get: %w", err) } if found == nil { @@ -157,7 +159,7 @@ func Get(ctx context.Context, opts FindOptions) (*Resource, error) { return nil, fmt.Errorf("resource Get Find: %w", err) } if len(resources) == 0 { - return nil, nil //nolint:nilnil + return nil, util.ErrNotExist } if len(resources) != 1 { return nil, fmt.Errorf("resource Get expected to find one resource but found %d instead", len(resources)) diff --git a/services/f3/driver/forge.go b/services/f3/driver/forge.go index 2ff2e1871d..e4d382d5bc 100644 --- a/services/f3/driver/forge.go +++ b/services/f3/driver/forge.go @@ -6,17 +6,19 @@ package driver import ( "context" + "errors" "fmt" f3_forge_model "forgejo.org/models/f3/forge" user_model "forgejo.org/models/user" + "forgejo.org/modules/util" f3_mirror_service "forgejo.org/services/f3/mirror" "code.forgejo.org/f3/gof3/v3/f3" f3_id "code.forgejo.org/f3/gof3/v3/id" f3_kind "code.forgejo.org/f3/gof3/v3/kind" "code.forgejo.org/f3/gof3/v3/tree/generic" - "code.forgejo.org/f3/gof3/v3/util" + f3_util "code.forgejo.org/f3/gof3/v3/util" ) type forge struct { @@ -36,7 +38,7 @@ func newForge() generic.NodeDriverInterface { func (o *forge) getOwnersKind(ctx context.Context, id string) f3_kind.Kind { kind, ok := o.ownersKind[id] if !ok { - user, err := user_model.GetUserByID(ctx, util.ParseInt(id)) + user, err := user_model.GetUserByID(ctx, f3_util.ParseInt(id)) if err != nil { panic(fmt.Errorf("user_repo.GetUserByID: %w", err)) } @@ -55,7 +57,7 @@ func (o *forge) getForgejoForge(ctx context.Context) *f3_forge_model.Forge { URL: &o.url, } forge, err := f3_forge_model.Get(ctx, opts) - if err != nil { + if err != nil && !errors.Is(err, util.ErrNotExist) { panic(err) } o.forge = forge