Fix: image alias put query
Some checks failed
Go test / run-go-vet (push) Successful in 6s
Go test / check-swagger-up-to-date (push) Successful in 9s
Go test / run-go-test (push) Successful in 30s
Go test / cleanup-go-test (push) Successful in 4s
Go test / release-image (push) Has been cancelled

This commit is contained in:
2025-12-13 00:56:06 +08:00
parent 44a3bf64c1
commit 5e44171dcb
3 changed files with 61 additions and 14 deletions

View File

@@ -2,6 +2,7 @@ package implements
import ( import (
"context" "context"
"fmt"
"gitea.konchin.com/go2025/backend/models" "gitea.konchin.com/go2025/backend/models"
"gitea.konchin.com/go2025/backend/tracing" "gitea.konchin.com/go2025/backend/tracing"
@@ -184,6 +185,14 @@ func (self *BunDatabase) UpdateAliases(
return err return err
} }
err = tx.NewSelect().
Model(&aliases).
Where("name IN (?)", bun.In(aliasNames)).
Scan(ctx)
if err != nil {
return err
}
var rels []models.AliasImage var rels []models.AliasImage
for _, alias := range aliases { for _, alias := range aliases {
rels = append(rels, models.AliasImage{ rels = append(rels, models.AliasImage{
@@ -191,6 +200,9 @@ func (self *BunDatabase) UpdateAliases(
ImageId: imageId, ImageId: imageId,
}) })
} }
tracing.Logger.Ctx(ctx).
Debug("wtf is happening",
zap.String("rels", fmt.Sprintf("%+v", rels)))
_, err = tx.NewInsert(). _, err = tx.NewInsert().
Model(&rels). Model(&rels).
On(`CONFLICT ("alias_id", "image_id") DO NOTHING`). On(`CONFLICT ("alias_id", "image_id") DO NOTHING`).

View File

@@ -11,6 +11,7 @@ type putImageAliasPayload struct {
} }
func Test_03_PutImageAliases(t *testing.T) { func Test_03_PutImageAliases(t *testing.T) {
t.Run("Put one alias", func(t *testing.T) {
payload := putImageAliasPayload{ payload := putImageAliasPayload{
Aliases: []string{"huh"}, Aliases: []string{"huh"},
} }
@@ -22,4 +23,33 @@ func Test_03_PutImageAliases(t *testing.T) {
t.Logf("%+v", resp) t.Logf("%+v", resp)
t.Fatal("failed to put image alias") t.Fatal("failed to put image alias")
} }
})
t.Run("Put many alias", func(t *testing.T) {
payload := putImageAliasPayload{
Aliases: []string{"huh", "testalias1", "testalias2"},
}
resp, err := client.R().
SetBody(payload).
Put(fmt.Sprintf("http://localhost:8080/api/image/%d/aliases",
image.Id))
if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp)
t.Fatal("failed to put image alias")
}
})
t.Run("Remove alias", func(t *testing.T) {
payload := putImageAliasPayload{
Aliases: []string{"huh", "testalias1"},
}
resp, err := client.R().
SetBody(payload).
Put(fmt.Sprintf("http://localhost:8080/api/image/%d/aliases",
image.Id))
if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp)
t.Fatal("failed to put image alias")
}
})
} }

View File

@@ -7,9 +7,11 @@ import (
) )
func Test_07_DeleteAlias(t *testing.T) { func Test_07_DeleteAlias(t *testing.T) {
deleteId := aliases[0].Id
resp, err := client.R(). resp, err := client.R().
Delete(fmt.Sprintf("http://localhost:8080/api/alias/%d", Delete(fmt.Sprintf("http://localhost:8080/api/alias/%d",
aliases[0].Id)) deleteId))
if err != nil || resp.StatusCode() != http.StatusOK { if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp) t.Logf("%+v", resp)
t.Fatal("failed to delete alias") t.Fatal("failed to delete alias")
@@ -23,7 +25,10 @@ func Test_07_DeleteAlias(t *testing.T) {
t.Fatal("failed to get aliases") t.Fatal("failed to get aliases")
} }
if len(aliases) > 0 { for _, alias := range aliases {
if alias.Id == deleteId {
t.Logf("%+v", resp)
t.Fatal("alias not deleted") t.Fatal("alias not deleted")
} }
}
} }