Feat: auto delete alias when unused
Some checks failed
Go test / run-go-vet (push) Successful in 5s
Go test / check-swagger-up-to-date (push) Successful in 10s
Go test / run-go-test (push) Failing after 11s
Go test / release-image (push) Has been skipped
Go test / cleanup-go-test (push) Successful in 3s

This commit is contained in:
2025-12-13 01:49:04 +08:00
parent 6b5b7d257d
commit 875db5a8dd
4 changed files with 31 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
.PHONY: all swagger install postgres test test-ci mac \
.PHONY: all swagger install postgres test test-ci mac reset \
docker docker-quiet docker-clean
SWAG ?= go run github.com/swaggo/swag/cmd/swag@v1.16.4
@@ -14,6 +14,9 @@ all: swagger docker-build-native docker
mac: swagger docker-build-run docker
reset:
$(COMPOSE) exec backend reset
swagger:
$(SWAG) fmt
$(SWAG) init -o docs -g cmds/serve.go -pdl 1

View File

@@ -191,6 +191,7 @@ func (self *BunDatabase) UpdateAliases(
if err != nil {
return err
}
_, err = tx.NewDelete().
Model((*models.AliasImage)(nil)).
Where("image_id = ?", imageId).
@@ -214,6 +215,14 @@ func (self *BunDatabase) UpdateAliases(
return err
}
_, err = tx.NewDelete().
Model((*models.Alias)(nil)).
Where("NOT EXISTS (?)", tx.NewSelect().
Model((*models.AliasImage)(nil)).
Where("alias.id = alias_image.alias_id").
Limit(1)).
Exec(ctx)
return nil
})
}

View File

@@ -13,7 +13,7 @@ var client *resty.Client
func Test_00_Healthz(t *testing.T) {
for i := 0; i < 10; i++ {
resp, err := client.R().
Get("http://localhost:8080/healthz")
Get("/healthz")
if err == nil && resp.StatusCode() == http.StatusOK {
return
}
@@ -24,4 +24,5 @@ func Test_00_Healthz(t *testing.T) {
func init() {
client = resty.New()
client.SetBaseURL("http://localhost:8080")
}

View File

@@ -31,8 +31,7 @@ func Test_03_PutImageAliases(t *testing.T) {
}
resp, err := client.R().
SetBody(payload).
Put(fmt.Sprintf("http://localhost:8080/api/image/%d/aliases",
image.Id))
Put(fmt.Sprintf("/api/image/%d/aliases", image.Id))
if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp)
t.Fatal("failed to put image alias")
@@ -45,11 +44,24 @@ func Test_03_PutImageAliases(t *testing.T) {
}
resp, err := client.R().
SetBody(payload).
Put(fmt.Sprintf("http://localhost:8080/api/image/%d/aliases",
image.Id))
Put(fmt.Sprintf("/api/image/%d/aliases", image.Id))
if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp)
t.Fatal("failed to put image alias")
}
resp, err = client.R().
SetResult(&aliases).
Get("/api/aliases")
if err != nil || resp.StatusCode() != http.StatusOK {
t.Logf("%+v", resp)
t.Fatal("failed to get aliases")
}
for _, alias := range aliases {
if alias.Name == "testalias2" {
t.Fatal("alias should be deleted")
}
}
})
}