diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dff1ac6b..e9c1c61f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,11 +2,15 @@ name: "CodeQL" on: push: - branches: [ "main" ] + branches: + - main + - gh-readonly-queue/main/* + - release-* pull_request: - branches: [ "main" ] + branches: + - main schedule: - - cron: '45 0 * * 4' + - cron: "0 0 * * *" jobs: analyze: @@ -20,28 +24,28 @@ jobs: fail-fast: false matrix: include: - - language: go - build-mode: manual + - language: go + build-mode: manual steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - lfs: true - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - build-mode: ${{ matrix.build-mode }} - - run: corepack enable - - if: matrix.language == 'go' - run: | - cd web - yarn install --immutable - yarn build - cd .. - make build - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{matrix.language}}" + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: true + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + - run: corepack enable + - if: matrix.language == 'go' + run: | + cd web + yarn install --immutable + yarn build + cd .. + make build + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.gitignore b/.gitignore index 559aaa3d..93567f10 100644 --- a/.gitignore +++ b/.gitignore @@ -189,10 +189,12 @@ conf/sigma-dev.yaml # database *.db +*.db* pkg/**/*.html .vscode/ +.zed/ *.tar.gz *.tar diff --git a/go.mod b/go.mod index 3c93db47..0f015ba7 100644 --- a/go.mod +++ b/go.mod @@ -3,31 +3,31 @@ module github.com/go-sigma/sigma go 1.22.0 require ( - code.gitea.io/sdk/gitea v0.17.1 + code.gitea.io/sdk/gitea v0.18.0 github.com/BurntSushi/toml v1.3.2 - github.com/IBM/sarama v1.43.0 + github.com/IBM/sarama v1.43.1 github.com/Masterminds/sprig/v3 v3.2.3 github.com/alicebob/miniredis/v2 v2.32.1 github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible github.com/anchore/syft v1.0.1 github.com/aquasecurity/trivy v0.49.1 - github.com/aws/aws-sdk-go v1.51.1 + github.com/aws/aws-sdk-go v1.51.25 github.com/caarlos0/env/v9 v9.0.0 - github.com/casbin/casbin/v2 v2.84.1 - github.com/casbin/gorm-adapter/v3 v3.21.0 - github.com/containers/podman/v5 v5.0.1 + github.com/casbin/casbin/v2 v2.87.1 + github.com/casbin/gorm-adapter/v3 v3.24.0 + github.com/containers/podman/v5 v5.0.2 github.com/deckarep/golang-set/v2 v2.6.0 github.com/distribution/distribution/v3 v3.0.0-alpha.1 - github.com/distribution/reference v0.5.0 + github.com/distribution/reference v0.6.0 github.com/docker/cli v25.0.5+incompatible github.com/docker/docker v25.0.5+incompatible github.com/dustin/go-humanize v1.0.1 github.com/fatih/color v1.16.0 github.com/glebarez/sqlite v1.11.0 - github.com/go-git/go-git/v5 v5.11.0 + github.com/go-git/go-git/v5 v5.12.0 github.com/go-playground/validator v9.31.0+incompatible - github.com/go-resty/resty/v2 v2.11.0 - github.com/go-sql-driver/mysql v1.8.0 + github.com/go-resty/resty/v2 v2.12.0 + github.com/go-sql-driver/mysql v1.8.1 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/golang-migrate/migrate/v4 v4.17.0 github.com/google/go-github/v53 v53.2.0 @@ -38,20 +38,20 @@ require ( github.com/jackc/pgx/v4 v4.18.3 github.com/jinzhu/copier v0.4.0 github.com/json-iterator/go v1.1.12 - github.com/labstack/echo-contrib v0.15.0 - github.com/labstack/echo/v4 v4.11.4 + github.com/labstack/echo-contrib v0.17.1 + github.com/labstack/echo/v4 v4.12.0 github.com/matoous/go-nanoid v1.5.0 github.com/matoous/go-nanoid/v2 v2.0.0 github.com/mattn/go-sqlite3 v1.14.22 github.com/mholt/archiver/v3 v3.5.1 - github.com/moby/buildkit v0.13.0 - github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240315192218-7ac9a4cdd778 + github.com/moby/buildkit v0.13.1 + github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240325152230-75d28161dfed github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0 github.com/redis/go-redis/v9 v9.5.1 github.com/robfig/cron/v3 v3.0.1 github.com/rs/zerolog v1.32.0 - github.com/sigstore/cosign/v2 v2.2.3 + github.com/sigstore/cosign/v2 v2.2.4 github.com/smartystreets/goconvey v1.8.1 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 @@ -62,23 +62,23 @@ require ( github.com/tencentyun/cos-go-sdk-v5 v0.7.47 github.com/tidwall/gjson v1.17.1 github.com/wagslane/go-password-validator v0.3.0 - github.com/xanzy/go-gitlab v0.100.0 + github.com/xanzy/go-gitlab v0.103.0 go.uber.org/mock v0.4.0 - golang.org/x/crypto v0.21.0 - golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f - golang.org/x/net v0.22.0 - golang.org/x/oauth2 v0.18.0 + golang.org/x/crypto v0.22.0 + golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f + golang.org/x/net v0.24.0 + golang.org/x/oauth2 v0.19.0 gopkg.in/yaml.v3 v3.0.1 - gorm.io/driver/mysql v1.5.4 + gorm.io/driver/mysql v1.5.6 gorm.io/driver/postgres v1.5.7 gorm.io/driver/sqlite v1.5.5 - gorm.io/gen v0.3.25 - gorm.io/gorm v1.25.7 + gorm.io/gen v0.3.26 + gorm.io/gorm v1.25.9 gorm.io/plugin/dbresolver v1.5.1 gorm.io/plugin/soft_delete v1.2.1 - k8s.io/api v0.29.3 - k8s.io/apimachinery v0.29.3 - k8s.io/client-go v0.29.3 + k8s.io/api v0.30.0 + k8s.io/apimachinery v0.30.0 + k8s.io/client-go v0.30.0 ) require ( @@ -90,14 +90,14 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.12.0-rc.3 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect + github.com/ProtonMail/go-crypto v1.1.0-alpha.0 // indirect github.com/VividCortex/ewma v1.2.0 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect github.com/acobaugh/osrelease v0.1.0 // indirect github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 // indirect github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a // indirect - github.com/anchore/go-struct-converter v0.0.0-20230627203149-c72ef8859ca9 // indirect - github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426 // indirect + github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect + github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4 // indirect github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84 // indirect github.com/andybalholm/brotli v1.0.6 // indirect github.com/aquasecurity/trivy-db v0.0.0-20231005141211-4fc651f7ac8d // indirect @@ -107,8 +107,8 @@ require ( github.com/blang/semver v3.5.1+incompatible // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect - github.com/casbin/govaluate v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/casbin/govaluate v1.1.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cilium/ebpf v0.11.0 // indirect github.com/clbanning/mxj v1.8.4 // indirect @@ -119,7 +119,7 @@ require ( github.com/containerd/log v0.1.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect github.com/containers/buildah v1.35.3 // indirect - github.com/containers/common v0.58.1 // indirect + github.com/containers/common v0.58.2 // indirect github.com/containers/image/v5 v5.30.0 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.1.9 // indirect @@ -158,16 +158,16 @@ require ( github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/analysis v0.22.0 // indirect - github.com/go-openapi/errors v0.21.1 // indirect - github.com/go-openapi/jsonpointer v0.20.2 // indirect - github.com/go-openapi/jsonreference v0.20.4 // indirect - github.com/go-openapi/loads v0.21.5 // indirect - github.com/go-openapi/runtime v0.27.1 // indirect - github.com/go-openapi/spec v0.20.13 // indirect - github.com/go-openapi/strfmt v0.22.2 // indirect - github.com/go-openapi/swag v0.22.10 // indirect - github.com/go-openapi/validate v0.22.4 // indirect + github.com/go-openapi/analysis v0.23.0 // indirect + github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/loads v0.22.0 // indirect + github.com/go-openapi/runtime v0.28.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect + github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-openapi/validate v0.24.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 // indirect @@ -178,10 +178,10 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/certificate-transparency-go v1.1.7 // indirect + github.com/google/certificate-transparency-go v1.1.8 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/go-containerregistry v0.19.0 // indirect + github.com/google/go-containerregistry v0.19.1 // indirect github.com/google/go-intervals v0.0.2 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -225,7 +225,7 @@ require ( github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/fs v0.1.0 // indirect github.com/labstack/gommon v0.4.2 // indirect - github.com/leodido/go-urn v1.2.4 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect github.com/lib/pq v1.10.9 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -235,8 +235,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect - github.com/microsoft/go-mssqldb v1.5.0 // indirect + github.com/microsoft/go-mssqldb v1.6.0 // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mistifyio/go-zfs/v3 v3.0.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -272,10 +271,10 @@ require ( github.com/pkg/sftp v1.13.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/proglottis/gpgme v0.1.3 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.13.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect @@ -285,15 +284,15 @@ require ( github.com/sassoftware/relic v7.2.1+incompatible // indirect github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect - github.com/sergi/go-diff v1.3.1 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/sigstore/fulcio v1.4.3 // indirect - github.com/sigstore/rekor v1.3.4 // indirect - github.com/sigstore/sigstore v1.8.2 // indirect - github.com/sigstore/timestamp-authority v1.2.1 // indirect + github.com/sigstore/fulcio v1.4.5 // indirect + github.com/sigstore/rekor v1.3.6 // indirect + github.com/sigstore/sigstore v1.8.3 // indirect + github.com/sigstore/timestamp-authority v1.2.2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect github.com/smarty/assertions v1.15.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spdx/tools-golang v0.5.4-0.20231108154018-0c0f394b5e1a // indirect @@ -326,24 +325,23 @@ require ( go.mongodb.org/mongo-driver v1.14.0 // indirect go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect - golang.org/x/mod v0.16.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.18.0 // indirect + golang.org/x/tools v0.20.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac // indirect - google.golang.org/grpc v1.61.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect gopkg.in/go-playground/assert.v1 v1.2.1 // indirect @@ -353,15 +351,15 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gorm.io/datatypes v1.2.0 // indirect - gorm.io/driver/sqlserver v1.5.1 // indirect + gorm.io/driver/sqlserver v1.5.3 // indirect gorm.io/hints v1.1.2 // indirect - k8s.io/klog/v2 v2.120.0 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect modernc.org/libc v1.41.0 // indirect modernc.org/mathutil v1.6.0 // indirect modernc.org/memory v1.7.2 // indirect - modernc.org/sqlite v1.29.2 // indirect + modernc.org/sqlite v1.29.6 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/go.sum b/go.sum index bcd0b143..6a99c73c 100644 --- a/go.sum +++ b/go.sum @@ -27,24 +27,24 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.25.0 h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU= +cloud.google.com/go/compute v1.25.0/go.mod h1:GR7F0ZPZH8EhChlMo9FkLd7eUTwEymjqQagxzilIxIE= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM= -cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/kms v1.15.8 h1:szIeDCowID8th2i8XE4uRev5PMxQFqW+JjwYxL9h6xs= +cloud.google.com/go/kms v1.15.8/go.mod h1:WoUHcDjD9pluCg7pNds131awnH429QGvRM3N/4MyoVs= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -54,8 +54,12 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -code.gitea.io/sdk/gitea v0.17.1 h1:3jCPOG2ojbl8AcfaUCRYLT5MUcBMFwS0OSK2mA5Zok8= -code.gitea.io/sdk/gitea v0.17.1/go.mod h1:aCnBqhHpoEWA180gMbaCtdX9Pl6BWBAuuP2miadoTNM= +code.gitea.io/sdk/gitea v0.18.0 h1:+zZrwVmujIrgobt6wVBWCqITz6bn1aBjnCUHmpZrerI= +code.gitea.io/sdk/gitea v0.18.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI= +cuelabs.dev/go/oci/ociregistry v0.0.0-20240314152124-224736b49f2e h1:GwCVItFUPxwdsEYnlUcJ6PJxOjTeFFCKOh6QWg4oAzQ= +cuelabs.dev/go/oci/ociregistry v0.0.0-20240314152124-224736b49f2e/go.mod h1:ApHceQLLwcOkCEXM1+DyCXTHEJhNGDpJ2kmV6axsx24= +cuelang.org/go v0.8.1 h1:VFYsxIFSPY5KgSaH1jQ2GxHOrbu6Ga3kEI70yCZwnOg= +cuelang.org/go v0.8.1/go.mod h1:CoDbYolfMms4BhWUlhD+t5ORnihR7wvjcfgyO9lL5FI= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -63,35 +67,62 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774 h1:SCbEWT58NSt7d2mcFdvxC9uyrdcTfvBbPLThhkDmXzg= github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774/go.mod h1:6/0dYRLLXyJjbkIPeeGyoJ/eKOSI0eU6eTlCBYibgd0= -github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230618160516-e936619f9f18 h1:rd389Q26LMy03gG4anandGFC2LW/xvjga5GezeeaxQk= -github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230618160516-e936619f9f18/go.mod h1:fgJuSBrJP5qZtKqaMJE0hmhS2tmRH+44IkfZvjtaf1M= +github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d h1:zjqpY4C7H15HjRPEenkS4SAn3Jy2eRRjkjZbGR30TOg= +github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d/go.mod h1:XNqJ7hv2kY++g8XEHREpi+JqZo3+0l+CH2egBVN4yqM= +github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0 h1:8+4G8JaejP8Xa6W46PzJEwisNgBXMvFcz78N6zG/ARw= +github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0/go.mod h1:GgeIE+1be8Ivm7Sh4RgwI42aTtC9qrcj+Y9Y6CjJhJs= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 h1:lGlwhPtrX6EVml1hO0ivjkUxsSyl4dsiw9qcA1k/3IQ= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1/go.mod h1:RKUqNu35KJYcVG/fqTRqmuXJZYNhYkBrnC/hX7yGbTA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 h1:6oNBlSdi1QqM1PNW7FPA6xOGA5UNsXnkaYZz9vdPGhA= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.0/go.mod h1:Q28U+75mpCaSCDowNEmhIo/rmgdkqmkmzI7N6TGR4UY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 h1:DRiANoJTiW6obBQe3SqZizkuV1PEgfiiGivmVocDy64= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0/go.mod h1:qLIye2hwb/ZouqhpSD9Zn3SJipvpEnz1Ywl3VUk9Y0s= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0/go.mod h1:cw4zVQgBby0Z5f2v0itn6se2dDP17nTjbZFXW5uPyHA= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw= +github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs= +github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8= +github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1 h1:DzHpqpoJVaCgOUdVHxE8QB52S6NiVdDQvGlny1qvPqA= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/IBM/sarama v1.43.0 h1:YFFDn8mMI2QL0wOrG0J2sFoVIAFl7hS9JQi2YZsXtJc= -github.com/IBM/sarama v1.43.0/go.mod h1:zlE6HEbC/SMQ9mhEYaF7nNLYOUyrs0obySKCckWP9BM= +github.com/IBM/sarama v1.43.1 h1:Z5uz65Px7f4DhI/jQqEm/tV9t8aU+JUdTyW/K/fCXpA= +github.com/IBM/sarama v1.43.1/go.mod h1:GG5q1RURtDNPz8xxJs3mgX6Ytak8Z9eLhAkJPObe2xE= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -108,9 +139,13 @@ github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5 github.com/Microsoft/hcsshim v0.12.0-rc.3 h1:5GNGrobGs/sN/0nFO21W9k4lFn+iXXZAE8fCZbmdRak= github.com/Microsoft/hcsshim v0.12.0-rc.3/go.mod h1:WuNfcaYNaw+KpCEsZCIM6HCEmu0c5HfXpi+dDSmveP0= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE9N5vPhgY2I+j0= +github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= +github.com/ThalesIgnite/crypto11 v1.2.5 h1:1IiIIEqYmBvUYFeMnHqRft4bwf/O36jryEUpY+9ef8E= +github.com/ThalesIgnite/crypto11 v1.2.5/go.mod h1:ILDKtnCKiQ7zRoNxcp36Y1ZR8LBPmR2E23+wTQe/MlE= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= @@ -119,14 +154,34 @@ github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+Ui github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= -github.com/agiledragon/gomonkey/v2 v2.2.0 h1:QJWqpdEhGV/JJy70sZ/LDnhbSlMrqHAWHcNOjz1kyuI= -github.com/agiledragon/gomonkey/v2 v2.2.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0= github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= +github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 h1:iC9YFYKDGEy3n/FtqJnOkZsene9olVspKmkX5A2YBEo= +github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc= +github.com/alibabacloud-go/cr-20160607 v1.0.1 h1:WEnP1iPFKJU74ryUKh/YDPHoxMZawqlPajOymyNAkts= +github.com/alibabacloud-go/cr-20160607 v1.0.1/go.mod h1:QHeKZtZ3F3FOE+/uIXCBAp8POwnUYekpLwr1dtQa5r0= +github.com/alibabacloud-go/cr-20181201 v1.0.10 h1:B60f6S1imsgn2fgC6X6FrVNrONDrbCT0NwYhsJ0C9/c= +github.com/alibabacloud-go/cr-20181201 v1.0.10/go.mod h1:VN9orB/w5G20FjytoSpZROqu9ZqxwycASmGqYUJSoDc= +github.com/alibabacloud-go/darabonba-openapi v0.2.1 h1:WyzxxKvhdVDlwpAMOHgAiCJ+NXa6g5ZWPFEzaK/ewwY= +github.com/alibabacloud-go/darabonba-openapi v0.2.1/go.mod h1:zXOqLbpIqq543oioL9IuuZYOQgHQ5B8/n5OPrnko8aY= +github.com/alibabacloud-go/debug v1.0.0 h1:3eIEQWfay1fB24PQIEzXAswlVJtdQok8f3EVN5VrBnA= +github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= +github.com/alibabacloud-go/endpoint-util v1.1.1 h1:ZkBv2/jnghxtU0p+upSU0GGzW1VL9GQdZO3mcSUTUy8= +github.com/alibabacloud-go/endpoint-util v1.1.1/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE= +github.com/alibabacloud-go/openapi-util v0.1.0 h1:0z75cIULkDrdEhkLWgi9tnLe+KhAFE/r5Pb3312/eAY= +github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws= +github.com/alibabacloud-go/tea v1.2.1 h1:rFF1LnrAdhaiPmKwH5xwYOKlMh66CqRwPUTzIK74ask= +github.com/alibabacloud-go/tea v1.2.1/go.mod h1:qbzof29bM/IFhLMtJPrgTGK3eauV5J2wSyEUo4OEmnA= +github.com/alibabacloud-go/tea-utils v1.4.5 h1:h0/6Xd2f3bPE4XHTvkpjwxowIwRCJAJOqY6Eq8f3zfA= +github.com/alibabacloud-go/tea-utils v1.4.5/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw= +github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzYtqw7dgt0= +github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE= github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= @@ -134,17 +189,18 @@ github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoO github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g= github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/aliyun/credentials-go v1.3.1 h1:uq/0v7kWrxmoLGpqjx7vtQ/s03f0zR//0br/xWDTE28= +github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0= github.com/anchore/clio v0.0.0-20240209204744-cb94e40a4f65 h1:u9XrEabKlGPsrmRvAER+kUKkwXiJfLyqGhmOTFsXjX4= github.com/anchore/clio v0.0.0-20240209204744-cb94e40a4f65/go.mod h1:8Jr7CjmwFVcBPtkJdTpaAGHimoGJGfbExypjzOu87Og= github.com/anchore/fangs v0.0.0-20231201140849-5075d28d6d8b h1:L/djgY7ZbZ/38+wUtdkk398W3PIBJLkt1N8nU/7e47A= github.com/anchore/fangs v0.0.0-20231201140849-5075d28d6d8b/go.mod h1:TLcE0RE5+8oIx2/NPWem/dq1DeaMoC+fPEH7hoSzPLo= github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a h1:nJ2G8zWKASyVClGVgG7sfM5mwoZlZ2zYpIzN2OhjWkw= github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a/go.mod h1:ubLFmlsv8/DFUQrZwY5syT5/8Er3ugSr4rDFwHsE3hg= +github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= -github.com/anchore/go-struct-converter v0.0.0-20230627203149-c72ef8859ca9 h1:6COpXWpHbhWM1wgcQN95TdsmrLTba8KQfPgImBXzkjA= -github.com/anchore/go-struct-converter v0.0.0-20230627203149-c72ef8859ca9/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= -github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426 h1:agoiZchSf1Nnnos1azwIg5hk5Ao9TzZNBD9++AChGEg= -github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4= +github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4 h1:SjemQ90fgflz39HG+VMkNfrpUVJpcFW6ZFA3TDXqzBM= +github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4= github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84 h1:/E74wU51M87fX5UWHubLZiENXbuAci+xtbSb+JFsIYg= github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84/go.mod h1:evQiJMQG56Z7/L5uhA8kfhhjF6ESJUZzUH9ms6bQ2Co= github.com/anchore/syft v1.0.1 h1:GR/KSAd7/A1ZvIVBmGUnrYeHe7XR3C/xGHkvdbDTQO8= @@ -169,36 +225,42 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.51.1 h1:AFvTihcDPanvptoKS09a4yYmNtPm3+pXlk6uYHmZiFk= -github.com/aws/aws-sdk-go v1.51.1/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= -github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU= -github.com/aws/aws-sdk-go-v2 v1.24.1/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4= -github.com/aws/aws-sdk-go-v2/config v1.26.6 h1:Z/7w9bUqlRI0FFQpetVuFYEsjzE3h7fpU6HuGmfPL/o= -github.com/aws/aws-sdk-go-v2/config v1.26.6/go.mod h1:uKU6cnDmYCvJ+pxO9S4cWDb2yWWIH5hra+32hVh1MI4= -github.com/aws/aws-sdk-go-v2/credentials v1.16.16 h1:8q6Rliyv0aUFAVtzaldUEcS+T5gbadPbWdV1WcAddK8= -github.com/aws/aws-sdk-go-v2/credentials v1.16.16/go.mod h1:UHVZrdUsv63hPXFo1H7c5fEneoVo9UXiz36QG1GEPi0= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tCKJDaHFwYEmxvlh2fAcFo8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 h1:vF+Zgd9s+H4vOXd5BMaPWykta2a6Ih0AKLq/X6NYKn4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10/go.mod h1:6BkRjejp/GR4411UGqkX8+wFMbFbqsUIimfK4XjOKR4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 h1:nYPe006ktcqUji8S2mqXf9c/7NdiKriOwMvWQHgYztw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10/go.mod h1:6UV4SZkVvmODfXKql4LCbaZUpF7HO2BX38FgBf9ZOLw= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 h1:n3GDfwqF2tzEkXlv5cuy4iy7LpKDtqDMcNLfZDu9rls= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 h1:DBYTXwIGQSGs9w4jKm60F5dmCQ3EEruxdc0MFh+3EY4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10/go.mod h1:wohMUQiFdzo0NtxbBg0mSRGZ4vL3n0dKjLTINdcIino= -github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 h1:W9PbZAZAEcelhhjb7KuwUtf+Lbc+i7ByYJRuWLlnxyQ= -github.com/aws/aws-sdk-go-v2/service/kms v1.27.9/go.mod h1:2tFmR7fQnOdQlM2ZCEPpFnBIQD1U8wmXmduBgZbOag0= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.7/go.mod h1:+mJNDdF+qiUlNKNC3fxn74WWNN+sOiGOEImje+3ScPM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 h1:QPMJf+Jw8E1l7zqhZmMlFw6w1NmfkfiSK8mS4zOx3BA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7/go.mod h1:ykf3COxYI0UJmxcfcxcVuz7b6uADi1FkiUz6Eb7AgM8= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U= -github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM= -github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +github.com/aws/aws-sdk-go v1.51.25 h1:DjTT8mtmsachhV6yrXR8+yhnG6120dazr720nopRsls= +github.com/aws/aws-sdk-go v1.51.25/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go-v2 v1.26.0 h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA= +github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I= +github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg= +github.com/aws/aws-sdk-go-v2/config v1.27.9/go.mod h1:dK1FQfpwpql83kbD873E9vz4FyAxuJtR22wzoXn3qq0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.9 h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMNQVNtNdUqf6cItao= +github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 h1:0ScVK/4qZ8CIW0k8jOeFVsyS/sAiXpYxRBLolMkuLQM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4/go.mod h1:84KyjNZdHC6QZW08nfHI6yZgPd+qRgaWcYsyLUo3QY8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 h1:sHmMWWX5E7guWEFQ9SVo6A3S4xpPrWnd77a6y4WM6PU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4/go.mod h1:WjpDrhWisWOIoS9n3nk67A3Ll1vfULJ9Kq6h29HTD48= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6 h1:cT7h+GWP2k0hJSsPmppKgxl4C9R6gCC5/oF4oHnmpK4= +github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6/go.mod h1:AOHmGMoPtSY9Zm2zBuwUJQBisIvYAZeA1n7b6f4e880= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 h1:PpbXaecV3sLAS6rjQiaKw4/jyq3Z8gNzmoJupHAoBp0= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2/go.mod h1:fUHpGXr4DrXkEDpGAjClPsviWf+Bszeb0daKE0blxv8= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 h1:b+E7zIUHMmcB4Dckjpkapoy47W6C9QBv/zoUP+Hn8Kc= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6/go.mod h1:S2fNV0rxrP78NhPbCZeQgY8H9jdDMeGtwcfZIRxzBqU= +github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 h1:yS0JkEdV6h9JOo8sy2JSpjX+i7vsKifU8SIeHrqiDhU= +github.com/aws/aws-sdk-go-v2/service/kms v1.30.0/go.mod h1:+I8VUUSVD4p5ISQtzpgSva4I8cJ4SQ4b1dcBcof7O+g= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 h1:mnbuWHOcM70/OFUlZZ5rcdfA8PflGXXiefU/O+1S3+8= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.3/go.mod h1:5HFu51Elk+4oRBZVxmHrSds5jFXmFj8C3w7DVF2gnrs= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 h1:uLq0BKatTmDzWa/Nu4WO0M1AaQDaPpwTKAeByEc6WFM= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0= +github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw= +github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8 h1:SoFYaT9UyGkR0+nogNyD/Lj+bsixB+SNuAS4ABlEs6M= +github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8/go.mod h1:2JF49jcDOrLStIXN/j/K1EKRq8a8R2qRnlZA6/o/c7c= github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA= github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -218,15 +280,21 @@ github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdb github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/buildkite/agent/v3 v3.62.0 h1:yvzSjI8Lgifw883I8m9u8/L/Thxt4cLFd5aWPn3gg70= +github.com/buildkite/agent/v3 v3.62.0/go.mod h1:jN6SokGXrVNNIpI0BGQ+j5aWeI3gin8F+3zwA5Q6gqM= +github.com/buildkite/go-pipeline v0.3.2 h1:SW4EaXNwfjow7xDRPGgX0Rcx+dPj5C1kV9LKCLjWGtM= +github.com/buildkite/go-pipeline v0.3.2/go.mod h1:iY5jzs3Afc8yHg6KDUcu3EJVkfaUkd9x/v/OH98qyUA= +github.com/buildkite/interpolate v0.0.0-20200526001904-07f35b4ae251 h1:k6UDF1uPYOs0iy1HPeotNa155qXRWrzKnqAaGXHLZCE= +github.com/buildkite/interpolate v0.0.0-20200526001904-07f35b4ae251/go.mod h1:gbPR1gPu9dB96mucYIR7T3B7p/78hRVSOuzIWLHK2Y4= github.com/caarlos0/env/v9 v9.0.0 h1:SI6JNsOA+y5gj9njpgybykATIylrRMklbs5ch6wO6pc= github.com/caarlos0/env/v9 v9.0.0/go.mod h1:ye5mlCVMYh6tZ+vCgrs/B95sj88cg5Tlnc0XIzgZ020= -github.com/casbin/casbin/v2 v2.84.1 h1:pmIo88Os4cL7rrjwe+/8N8yBPIMxTC+LiKKzY5z+Xdo= -github.com/casbin/casbin/v2 v2.84.1/go.mod h1:jX8uoN4veP85O/n2674r2qtfSXI6myvxW85f6TH50fw= -github.com/casbin/gorm-adapter/v3 v3.21.0 h1:1YOVpBvGc38H717WKSNCUuhsixFOjF8jmNukq792WBc= -github.com/casbin/gorm-adapter/v3 v3.21.0/go.mod h1:pvTTuyP2Es8VPHLyUssGtvOb3ETYD2tG7TfT5K8X2Sg= -github.com/casbin/govaluate v1.1.0 h1:6xdCWIpE9CwHdZhlVQW+froUrCsjb6/ZYNcXODfLT+E= +github.com/casbin/casbin/v2 v2.87.1 h1:7H+ENAfYt3HmZJVw++tJsxx/ko7WEHsfNzpOdYTkpYo= +github.com/casbin/casbin/v2 v2.87.1/go.mod h1:jX8uoN4veP85O/n2674r2qtfSXI6myvxW85f6TH50fw= +github.com/casbin/gorm-adapter/v3 v3.24.0 h1:WeLetCTkS1V4zpqF+UJ87PnDOYvdA8K3qp+T/Fj31+E= +github.com/casbin/gorm-adapter/v3 v3.24.0/go.mod h1:aftWi0cla0CC1bHQVrSFzBcX/98IFK28AvuPppCQgTs= github.com/casbin/govaluate v1.1.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= +github.com/casbin/govaluate v1.1.1 h1:J1rFKIBhiC5xr0APd5HP6rDL+xt+BRoyq1pa4o2i/5c= +github.com/casbin/govaluate v1.1.1/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= @@ -237,8 +305,11 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4= +github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= @@ -254,8 +325,9 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= +github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= +github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -270,8 +342,12 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= +github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/containerd v1.7.13 h1:wPYKIeGMN8vaggSKuV1X0wZulpMz4CrgEsZdaCyB6Is= @@ -284,20 +360,22 @@ github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= github.com/containers/buildah v1.35.3 h1:Dn8Krwm2PemBNNOMwp7uiMK2e5cW2ZjTdLRzKM789pc= github.com/containers/buildah v1.35.3/go.mod h1:kYi6vTHdbr1gnRo3B/RhTHsY2if/w398+/RvCxAXqkQ= -github.com/containers/common v0.58.1 h1:E1DN9Lr7kgMVQy7AXLv1CYQCiqnweklMiYWbf0KOnqY= -github.com/containers/common v0.58.1/go.mod h1:l3vMqanJGj7tZ3W/i76gEJ128VXgFUO1tLaohJXPvdk= +github.com/containers/common v0.58.2 h1:5nu9lQz4QNSgovNk7NRk33SkqkVNKYoXh7L6gXmACow= +github.com/containers/common v0.58.2/go.mod h1:l3vMqanJGj7tZ3W/i76gEJ128VXgFUO1tLaohJXPvdk= github.com/containers/image/v5 v5.30.0 h1:CmHeSwI6W2kTRWnUsxATDFY5TEX4b58gPkaQcEyrLIA= github.com/containers/image/v5 v5.30.0/go.mod h1:gSD8MVOyqBspc0ynLsuiMR9qmt8UQ4jpVImjmK0uXfk= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.1.9 h1:2Csfba4jse85Raxk5HIyEk8OwZNjRvfkhEGijOjIdEM= github.com/containers/ocicrypt v1.1.9/go.mod h1:dTKx1918d8TDkxXvarscpNVY+lyPakPNFN4jwA9GBys= -github.com/containers/podman/v5 v5.0.1 h1:40OJuoOJWxt3hk1j9J0jcwWIbWpjARxpzazYYtCDiNY= -github.com/containers/podman/v5 v5.0.1/go.mod h1:v09KUXu9AEFvzgiKSwkB49jcrVglXx2yi2qaPyaKNBE= +github.com/containers/podman/v5 v5.0.2 h1:xutkGrVfLZupfqo1pERid1tZ3ivFjDXDRbUK9z4ms80= +github.com/containers/podman/v5 v5.0.2/go.mod h1:g4eTcOHzWWuANV5V6C5ovUxXjSrTxTz9ZWpKdfIYvto= github.com/containers/psgo v1.9.0 h1:eJ74jzSaCHnWt26OlKZROSyUyRcGDf+gYBdXnxrMW4g= github.com/containers/psgo v1.9.0/go.mod h1:0YoluUm43Mz2UnBIh1P+6V6NWcbpTL5uRtXyOcH0B5A= github.com/containers/storage v1.53.0 h1:VSES3C/u1pxjTJIXvLrSmyP7OBtDky04oGu07UvdTEA= github.com/containers/storage v1.53.0/go.mod h1:pujcoOSc+upx15Jirdkebhtd8uJiLwbSd/mYT6zDJK8= +github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= +github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= @@ -335,12 +413,14 @@ github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQM github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I= github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7/go.mod h1:GvWntX9qiTlOud0WkQ6ewFm0LPy5JUR1Xo0Ngbd1w6Y= +github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/disiqueira/gotree/v3 v3.0.2 h1:ik5iuLQQoufZBNPY518dXhiO5056hyNBIK9lWhkNRq8= github.com/disiqueira/gotree/v3 v3.0.2/go.mod h1:ZuyjE4+mUQZlbpkI24AmruZKhg3VHEgPLDY8Qk+uUu8= github.com/distribution/distribution/v3 v3.0.0-alpha.1 h1:jn7I1gvjOvmLztH1+1cLiUFud7aeJCIQcgzugtwjyJo= github.com/distribution/distribution/v3 v3.0.0-alpha.1/go.mod h1:LCp4JZp1ZalYg0W/TN05jarCQu+h4w7xc7ZfQF4Y/cY= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v25.0.5+incompatible h1:3Llw3kcE1gOScEojA247iDD+p1l9hHeC7H3vf3Zd5fk= @@ -372,6 +452,8 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/proto v1.12.1 h1:6n/Z2pZAnBwuhU66Gs8160B8rrrYKo7h2F2sCOnNceE= +github.com/emicklei/proto v1.12.1/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -420,8 +502,8 @@ github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9g github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ= -github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= @@ -432,13 +514,17 @@ github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+ github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= -github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= +github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U= +github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -450,46 +536,50 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/analysis v0.22.0 h1:wQ/d07nf78HNj4u+KiSY0sT234IAyePPbMgpUjUJQR0= -github.com/go-openapi/analysis v0.22.0/go.mod h1:acDnkkCI2QxIo8sSIPgmp1wUlRohV7vfGtAIVae73b0= -github.com/go-openapi/errors v0.21.1 h1:rVisxQPdETctjlYntm0Ek4dKf68nAQocCloCT50vWuI= -github.com/go-openapi/errors v0.21.1/go.mod h1:LyiY9bgc7AVVh6wtVvMYEyoj3KJYNoRw92mmvnMWgj8= -github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= -github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= -github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= -github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= -github.com/go-openapi/loads v0.21.5 h1:jDzF4dSoHw6ZFADCGltDb2lE4F6De7aWSpe+IcsRzT0= -github.com/go-openapi/loads v0.21.5/go.mod h1:PxTsnFBoBe+z89riT+wYt3prmSBP6GDAQh2l9H1Flz8= -github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto= -github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU= -github.com/go-openapi/spec v0.20.13 h1:XJDIN+dLH6vqXgafnl5SUIMnzaChQ6QTo0/UPMbkIaE= -github.com/go-openapi/spec v0.20.13/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= -github.com/go-openapi/strfmt v0.22.2 h1:DPYOrm6gexCfZZfXUaXFS4+Jw6HAaIIG0SZ5630f8yw= -github.com/go-openapi/strfmt v0.22.2/go.mod h1:HB/b7TCm91rno75Dembc1dFW/0FPLk5CEXsoF9ReNc4= -github.com/go-openapi/swag v0.22.10 h1:4y86NVn7Z2yYd6pfS4Z+Nyh3aAUL3Nul+LMbhFKy0gA= -github.com/go-openapi/swag v0.22.10/go.mod h1:Cnn8BYtRlx6BNE3DPN86f/xkapGIcLWzh3CLEb4C1jI= -github.com/go-openapi/validate v0.22.4 h1:5v3jmMyIPKTR8Lv9syBAIRxG6lY0RqeBPB1LKEijzk8= -github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A= +github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= +github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= +github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= +github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= +github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= +github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= +github.com/go-piv/piv-go v1.11.0 h1:5vAaCdRTFSIW4PeqMbnsDlUZ7odMYWnHBDGdmtU/Zhg= +github.com/go-piv/piv-go v1.11.0/go.mod h1:NZ2zmjVkfFaL/CF8cVQ/pXdXtuj110zEKGdJM6fJZZM= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator v9.31.0+incompatible h1:UA72EPEogEnq76ehGdEDp4Mit+3FDh548oRqwVgNsHA= github.com/go-playground/validator v9.31.0+incompatible/go.mod h1:yrEkQXlcI+PugkyDjY2bRrL/UBU4f3rvrgkN3V8JEig= -github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= -github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= +github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= +github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= github.com/go-sigma/soft_delete v0.0.0-20231124084503-fb6a66078e2b h1:dP1itc+/9pJ/0ku3ntc8Rti0w+zuslJfOAnMNyv3N7I= github.com/go-sigma/soft_delete v0.0.0-20231124084503-fb6a66078e2b/go.mod h1:Zv7vQctOJTGOsJ/bWgrN1n3od0GBAZgnLjEx+cApLGk= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= -github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 h1:sQspH8M4niEijh3PFscJRLDnkL547IeP7kpPe3uUhEg= @@ -503,7 +593,9 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-migrate/migrate/v4 v4.17.0 h1:rd40H3QXU0AA4IoLllFcEAEo9dYKRHYND2gB4p7xcaU= @@ -553,8 +645,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/certificate-transparency-go v1.1.7 h1:IASD+NtgSTJLPdzkthwvAG1ZVbF2WtFg4IvoA68XGSw= -github.com/google/certificate-transparency-go v1.1.7/go.mod h1:FSSBo8fyMVgqptbfF6j5p/XNdgQftAhSmXcIxV9iphE= +github.com/google/certificate-transparency-go v1.1.8 h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to= +github.com/google/certificate-transparency-go v1.1.8/go.mod h1:bV/o8r0TBKRf1X//iiiSgWrvII4d7/8OiA+3vG26gI8= github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -572,10 +664,12 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic= -github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= +github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY= +github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg= +github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= github.com/google/go-intervals v0.0.2 h1:FGrVEiUnTRKR8yE04qzXYaJMtnIYqobR5QbblK3ixcM= github.com/google/go-intervals v0.0.2/go.mod h1:MkaR3LNRfeKLPmqgJYs4E66z5InYjmCjbbr4TQlcT6Y= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -610,8 +704,8 @@ github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/tink/go v1.7.0 h1:6Eox8zONGebBFcCBqkVmt60LaWZa6xg1cl/DwAh/J1w= github.com/google/tink/go v1.7.0/go.mod h1:GAUOd+QE3pgj9q8VKIGTCP33c/B7eb4NhxLcgTJZStM= -github.com/google/trillian v1.5.3 h1:3ioA5p09qz+U9/t2riklZtaQdZclaStp0/eQNfewNRg= -github.com/google/trillian v1.5.3/go.mod h1:p4tcg7eBr7aT6DxrAoILpc3uXNfcuAvZSnQKonVg+Eo= +github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= +github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -624,8 +718,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= @@ -639,8 +733,8 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b h1:wDUNC2eKiL35DbLvsDhiblTUXHxcOPwQSCzi7xpQUN4= github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= @@ -699,8 +793,8 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ= -github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= +github.com/hashicorp/vault/api v1.12.2 h1:7YkCTE5Ni90TcmYHDBExdt4WGJxhpzaHqR6uGbQb/rE= +github.com/hashicorp/vault/api v1.12.2/go.mod h1:LSGf1NGT1BnvFFnKVtnvcaLBM2Lz+gJdpL6HUYed8KE= github.com/hibiken/asynq v0.24.1 h1:+5iIEAyA9K/lcSPvx3qoPtsKJeKI5u9aOIvUmSsazEw= github.com/hibiken/asynq v0.24.1/go.mod h1:u5qVeSbrnfT+vtG5Mq8ZPzQu/BmCKMHvTGb91uy9Tts= github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM= @@ -789,8 +883,8 @@ github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZ github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY= github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E= -github.com/jellydator/ttlcache/v3 v3.1.1 h1:RCgYJqo3jgvhl+fEWvjNW8thxGWsgxi+TPhRir1Y9y8= -github.com/jellydator/ttlcache/v3 v3.1.1/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4= +github.com/jellydator/ttlcache/v3 v3.2.0 h1:6lqVJ8X3ZaUwvzENqPAobDsXNExfUJd61u++uW8a3LE= +github.com/jellydator/ttlcache/v3 v3.2.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -845,14 +939,14 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo-contrib v0.15.0 h1:9K+oRU265y4Mu9zpRDv3X+DGTqUALY6oRHCSZZKCRVU= -github.com/labstack/echo-contrib v0.15.0/go.mod h1:lei+qt5CLB4oa7VHTE0yEfQSEB9XTJI1LUqko9UWvo4= -github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8= -github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8= +github.com/labstack/echo-contrib v0.17.1 h1:7I/he7ylVKsDUieaGRZ9XxxTYOjfQwVzHzUYrNykfCU= +github.com/labstack/echo-contrib v0.17.1/go.mod h1:SnsCZtwHBAZm5uBSAtQtXQHI3wqEA73hvTn0bYMKnZA= +github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0= +github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 h1:WGrKdjHtWC67RX96eTkYD2f53NDHhrq/7robWTAfk4s= github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491/go.mod h1:o158RFmdEbYyIZmXAbrvmJWesbyxlLKee6X64VPVuOc= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -903,15 +997,12 @@ github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= -github.com/microsoft/go-mssqldb v1.1.0/go.mod h1:LzkFdl4z2Ck+Hi+ycGOTbL56VEfgoyA2DvYejrNGbRk= -github.com/microsoft/go-mssqldb v1.5.0 h1:CgENxkwtOBNj3Jg6T1X209y2blCfTTcwuOlznd2k9fk= -github.com/microsoft/go-mssqldb v1.5.0/go.mod h1:lmWsjHD8XX/Txr0f8ZqgbEZSC+BZjmEQy/Ms+rLrvho= +github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= +github.com/microsoft/go-mssqldb v1.6.0/go.mod h1:00mDtPbeQCRGC1HwOOR5K/gr30P1NcEG0vx6Kbv2aJU= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= @@ -926,6 +1017,8 @@ github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HK github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -936,8 +1029,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/buildkit v0.13.0 h1:reVR1Y+rbNIUQ9jf0Q1YZVH5a/nhOixZsl+HJ9qQEGI= -github.com/moby/buildkit v0.13.0/go.mod h1:aNmNQKLBFYAOFuzQjR3VA27/FijlvtBD1pjNwTSN37k= +github.com/moby/buildkit v0.13.1 h1:L8afOFhPq2RPJJSr/VyzbufwID7jquZVB7oFHbPRcPE= +github.com/moby/buildkit v0.13.1/go.mod h1:aNmNQKLBFYAOFuzQjR3VA27/FijlvtBD1pjNwTSN37k= github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= @@ -955,6 +1048,8 @@ github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3P github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mozillazg/docker-credential-acr-helper v0.3.0 h1:DVWFZ3/O8BP6Ue3iS/Olw+G07u1hCq1EOVCDZZjCIBI= +github.com/mozillazg/docker-credential-acr-helper v0.3.0/go.mod h1:cZlu3tof523ujmLuiNUb6JsjtHcNA70u1jitrrdnuyA= github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= github.com/mozillazg/go-httpheader v0.4.0 h1:aBn6aRXtFzyDLZ4VIRLsZbbJloagQfMnCiYgOq6hK4w= github.com/mozillazg/go-httpheader v0.4.0/go.mod h1:PuT8h0pw6efvp8ZeUec1Rs7dwjK08bt6gKSReGMqtdA= @@ -974,6 +1069,8 @@ github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oleiade/reflections v1.0.1 h1:D1XO3LVEYroYskEsoSiGItp9RUxG6jWnCVvrqH0HHQM= +github.com/oleiade/reflections v1.0.1/go.mod h1:rdFxbxq4QXVZWj0F+e9jqjDkc7dbp97vkRixKo2JR60= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -988,8 +1085,10 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= -github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240315192218-7ac9a4cdd778 h1:3zGMxSB2WCyV2nhgp1Nyose3jr73ut4dH9gEZ1BWi14= -github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240315192218-7ac9a4cdd778/go.mod h1:Va0IMqkjv62YSEytL4sgxrkiD9IzU0T0bX/ZZEtMnSQ= +github.com/open-policy-agent/opa v0.63.0 h1:ztNNste1v8kH0/vJMJNquE45lRvqwrM5mY9Ctr9xIXw= +github.com/open-policy-agent/opa v0.63.0/go.mod h1:9VQPqEfoB2N//AToTxzZ1pVTVPUoF2Mhd64szzjWPpU= +github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240325152230-75d28161dfed h1:OeyovBjoru7XmumCdYu7m0H1FvIr3KUK3SXptdwkD8E= +github.com/opencontainers/distribution-spec/specs-go v0.0.0-20240325152230-75d28161dfed/go.mod h1:Va0IMqkjv62YSEytL4sgxrkiD9IzU0T0bX/ZZEtMnSQ= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -1014,6 +1113,8 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/indent v1.2.1 h1:lFiviAbISHv3Rf0jcuh489bi06hj98JsVMtIDZQb9yM= github.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrpz5K6Vw= +github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= +github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -1046,23 +1147,25 @@ github.com/proglottis/gpgme v0.1.3/go.mod h1:fPbW/EZ0LvwQtH8Hy7eixhp1eF3G39dtx7G github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf h1:014O62zIzQwvoD7Ekj3ePDF5bv9Xxy0w6AZk0qYbjUk= +github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/redis/go-redis/v9 v9.0.3/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= @@ -1098,8 +1201,8 @@ github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/sassoftware/relic v7.2.1+incompatible h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A= github.com/sassoftware/relic v7.2.1+incompatible/go.mod h1:CWfAxv73/iLZ17rbyhIEq3K9hs5w6FpNMdUT//qR+zk= -github.com/sassoftware/relic/v7 v7.6.1 h1:O5s8ewCgq5QYNpv45dK4u6IpBmDM9RIcsbf/G1uXepQ= -github.com/sassoftware/relic/v7 v7.6.1/go.mod h1:NxwtWxWxlUa9as2qZi635Ye6bBT/tGnMALLq7dSfOOU= +github.com/sassoftware/relic/v7 v7.6.2 h1:rS44Lbv9G9eXsukknS4mSjIAuuX+lMq/FnStgmZlUv4= +github.com/sassoftware/relic/v7 v7.6.2/go.mod h1:kjmP0IBVkJZ6gXeAu35/KCEfca//+PKM6vTAsyDPY+k= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ= github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= @@ -1110,42 +1213,46 @@ github.com/seccomp/libseccomp-golang v0.10.0 h1:aA4bp+/Zzi0BnWZ2F1wgNBs5gTpm+na2 github.com/seccomp/libseccomp-golang v0.10.0/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= +github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c= +github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= -github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/sigstore/cosign/v2 v2.2.3 h1:WX7yawI+EXu9h7S5bZsfYCbB9XW6Jc43ctKy/NoOSiA= -github.com/sigstore/cosign/v2 v2.2.3/go.mod h1:WpMn4MBt0cI23GdHsePwO4NxhX1FOz1ITGB3ALUjFaI= -github.com/sigstore/fulcio v1.4.3 h1:9JcUCZjjVhRF9fmhVuz6i1RyhCc/EGCD7MOl+iqCJLQ= -github.com/sigstore/fulcio v1.4.3/go.mod h1:BQPWo7cfxmJwgaHlphUHUpFkp5+YxeJes82oo39m5og= -github.com/sigstore/rekor v1.3.4 h1:RGIia1iOZU7fOiiP2UY/WFYhhp50S5aUm7YrM8aiA6E= -github.com/sigstore/rekor v1.3.4/go.mod h1:1GubPVO2yO+K0m0wt/3SHFqnilr/hWbsjSOe7Vzxrlg= -github.com/sigstore/sigstore v1.8.2 h1:0Ttjcn3V0fVQXlYq7+oHaaHkGFIt3ywm7SF4JTU/l8c= -github.com/sigstore/sigstore v1.8.2/go.mod h1:CHVcSyknCcjI4K2ZhS1SI28r0tcQyBlwtALG536x1DY= -github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 h1:rEDdUefulkIQaMJyzLwtgPDLNXBIltBABiFYfb0YmgQ= -github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1/go.mod h1:RCdYCc1IxCYWzh2IdzdA6Yf7JIY0cMRqH08fpQYechw= -github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 h1:DvRWG99QGWZC5mp42SEde2Xke/Q384Idnj2da7yB+Mk= -github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1/go.mod h1:s13mo3a0UCQS3+PAUUZfvKe48sMDMsHk2GE1b2YfPcU= -github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 h1:lwdRsJv1UbBemuk7w5YfXAQilQxMoFevrzamdPbG0wY= -github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1/go.mod h1:2OaSQ80EcdyVRSQ3T4d1lsc6Scopblsiq8U2AEk5K1A= -github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 h1:9Ki0qudKpc1FQdef7xHO2bkLyTuw+qNUpWRzjBEmF4c= -github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1/go.mod h1:nhIgyu4YwwNgalIwTGsoAzam16jjAn3ADRSWKbWPwGI= -github.com/sigstore/timestamp-authority v1.2.1 h1:j9RmqSAdvKgSofeltPO4x7d+1M3AXaROBzUJ+AA7L5Q= -github.com/sigstore/timestamp-authority v1.2.1/go.mod h1:Ce+vWWEf0QaKLY2u6mpwEJbmYXEVeOfUk4fQ69kE6ck= +github.com/sigstore/cosign/v2 v2.2.4 h1:iY4vtEacmu2hkNj1Fh+8EBqBwKs2DHM27/lbNWDFJro= +github.com/sigstore/cosign/v2 v2.2.4/go.mod h1:JZlRD2uaEjVAvZ1XJ3QkkZJhTqSDVtLaet+C/TMR81Y= +github.com/sigstore/fulcio v1.4.5 h1:WWNnrOknD0DbruuZWCbN+86WRROpEl3Xts+WT2Ek1yc= +github.com/sigstore/fulcio v1.4.5/go.mod h1:oz3Qwlma8dWcSS/IENR/6SjbW4ipN0cxpRVfgdsjMU8= +github.com/sigstore/rekor v1.3.6 h1:QvpMMJVWAp69a3CHzdrLelqEqpTM3ByQRt5B5Kspbi8= +github.com/sigstore/rekor v1.3.6/go.mod h1:JDTSNNMdQ/PxdsS49DJkJ+pRJCO/83nbR5p3aZQteXc= +github.com/sigstore/sigstore v1.8.3 h1:G7LVXqL+ekgYtYdksBks9B38dPoIsbscjQJX/MGWkA4= +github.com/sigstore/sigstore v1.8.3/go.mod h1:mqbTEariiGA94cn6G3xnDiV6BD8eSLdL/eA7bvJ0fVs= +github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 h1:LTfPadUAo+PDRUbbdqbeSl2OuoFQwUFTnJ4stu+nwWw= +github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3/go.mod h1:QV/Lxlxm0POyhfyBtIbTWxNeF18clMlkkyL9mu45y18= +github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 h1:xgbPRCr2npmmsuVVteJqi/ERw9+I13Wou7kq0Yk4D8g= +github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3/go.mod h1:G4+I83FILPX6MtnoaUdmv/bRGEVtR3JdLeJa/kXdk/0= +github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3 h1:vDl2fqPT0h3D/k6NZPlqnKFd1tz3335wm39qjvpZNJc= +github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3/go.mod h1:9uOJXbXEXj+M6QjMKH5PaL5WDMu43rHfbIMgXzA8eKI= +github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3 h1:h9G8j+Ds21zqqulDbA/R/ft64oQQIyp8S7wJYABYSlg= +github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3/go.mod h1:zgCeHOuqF6k7A7TTEvftcA9V3FRzB7mrPtHOhXAQBnc= +github.com/sigstore/timestamp-authority v1.2.2 h1:X4qyutnCQqJ0apMewFyx+3t7Tws00JQ/JonBiu3QvLE= +github.com/sigstore/timestamp-authority v1.2.2/go.mod h1:nEah4Eq4wpliDjlY342rXclGSO7Kb9hoRrl9tqLW13A= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smarty/assertions v1.15.1 h1:812oFiXI+G55vxsFf+8bIZ1ux30qtkdqzKbEFwyX3Tk= github.com/smarty/assertions v1.15.1/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= @@ -1173,6 +1280,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spiffe/go-spiffe/v2 v2.2.0 h1:9Vf06UsvsDbLYK/zJ4sYsIsHmMFknUD+feA7IYoWMQY= +github.com/spiffe/go-spiffe/v2 v2.2.0/go.mod h1:Urzb779b3+IwDJD2ZbN8fVl3Aa8G4N/PiUe6iXC0XxU= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 h1:lIOOHPEbXzO3vnmx2gok1Tfs31Q8GQqKLc8vVqyQq/I= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1217,6 +1326,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0= github.com/tencentyun/cos-go-sdk-v5 v0.7.47 h1:uoS4Sob16qEYoapkqJq1D1Vnsy9ira9BfNUMtoFYTI4= github.com/tencentyun/cos-go-sdk-v5 v0.7.47/go.mod h1:DH9US8nB+AJXqwu/AMOrCFN1COv3dpytXuJWHgdg7kE= +github.com/thales-e-security/pool v0.0.2 h1:RAPs4q2EbWsTit6tpzuvTFlgFRJ3S8Evf5gtvVDbmPg= +github.com/thales-e-security/pool v0.0.2/go.mod h1:qtpMm2+thHtqhLzTwgDBj/OuNnMpupY8mv0Phz0gjhU= github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= @@ -1230,6 +1341,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs= +github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= +github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -1251,8 +1364,8 @@ github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 h1:0KGbf+0SM github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA= github.com/wagslane/go-password-validator v0.3.0 h1:vfxOPzGHkz5S146HDpavl0cw1DSVP061Ry2PX0/ON6I= github.com/wagslane/go-password-validator v0.3.0/go.mod h1:TI1XJ6T5fRdRnHqHt14pvy1tNVnrwe7m3/f1f2fDphQ= -github.com/xanzy/go-gitlab v0.100.0 h1:jaOtYj5nWI19+9oVVmgy233pax2oYqucwetogYU46ks= -github.com/xanzy/go-gitlab v0.100.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= +github.com/xanzy/go-gitlab v0.103.0 h1:J9pTQoq0GsEFqzd6srCM1QfdfKAxSNz6mT6ntrpNF2w= +github.com/xanzy/go-gitlab v0.103.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= @@ -1265,6 +1378,8 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofm github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= +github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= +github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1273,8 +1388,10 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -github.com/zalando/go-keyring v0.2.2 h1:f0xmpYiSrHtSNAVgwip93Cg8tuF45HJM6rHq/A5RI/4= -github.com/zalando/go-keyring v0.2.2/go.mod h1:sI3evg9Wvpw3+n4SqplGSJUMwtDeROfD4nsFz4z9PG0= +github.com/zalando/go-keyring v0.2.3 h1:v9CUu9phlABObO4LPWycf+zwMG7nlbb3t/B5wa97yms= +github.com/zalando/go-keyring v0.2.3/go.mod h1:HL4k+OXQfJUWaMnqyuSOc0drfGPX2b51Du6K+MRgZMk= +github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= +github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= @@ -1292,27 +1409,27 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.step.sm/crypto v0.42.1 h1:OmwHm3GJO8S4VGWL3k4+I+Q4P/F2s+j8msvTyGnh1Vg= -go.step.sm/crypto v0.42.1/go.mod h1:yNcTLFQBnYCA75fC5bklBoTAT7y0dRZsB1TkinB8JMs= +go.step.sm/crypto v0.44.2 h1:t3p3uQ7raP2jp2ha9P6xkQF85TJZh+87xmjSLaib+jk= +go.step.sm/crypto v0.44.2/go.mod h1:x1439EnFhadzhkuaGX7sz03LEMQ+jV4gRamf5LCZJQQ= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1336,8 +1453,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1357,15 +1474,14 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1376,8 +1492,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f h1:3CW0unweImhOzd5FmYuRsD4Y4oQFKZIjAnKbjV4WIrw= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1406,8 +1522,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1441,6 +1557,7 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1463,9 +1580,11 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1483,8 +1602,8 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1498,8 +1617,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1587,16 +1706,15 @@ golang.org/x/sys v0.0.0-20220817070843-5a390386f1f2/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1605,11 +1723,11 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1619,18 +1737,16 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1695,8 +1811,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1738,8 +1854,8 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.159.0 h1:fVTj+7HHiUYz4JEZCHHoRIeQX7h5FMzrA2RF/DzDdbs= -google.golang.org/api v0.159.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= +google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1747,8 +1863,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1812,12 +1926,12 @@ google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac h1:nUQEQmH/csSvFECKYRv6HWEyypysidKl2I6Qpsglq/0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s= +google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U= +google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E= +google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1845,8 +1959,8 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= -google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1881,7 +1995,6 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -1902,28 +2015,28 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/datatypes v1.2.0 h1:5YT+eokWdIxhJgWHdrb2zYUimyk0+TaFth+7a0ybzco= gorm.io/datatypes v1.2.0/go.mod h1:o1dh0ZvjIjhH/bngTpypG6lVRJ5chTBxE09FH/71k04= gorm.io/driver/mysql v1.4.3/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c= -gorm.io/driver/mysql v1.5.4 h1:igQmHfKcbaTVyAIHNhhB888vvxh8EdQ2uSUT0LPcBso= -gorm.io/driver/mysql v1.5.4/go.mod h1:9rYxJph/u9SWkWc9yY4XJ1F/+xO0S/ChOmbk3+Z5Tvs= +gorm.io/driver/mysql v1.5.6 h1:Ld4mkIickM+EliaQZQx3uOJDJHtrd70MxAUqWqlx3Y8= +gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= gorm.io/driver/postgres v1.5.7 h1:8ptbNJTDbEmhdr62uReG5BGkdQyeasu/FZHxI0IMGnM= gorm.io/driver/postgres v1.5.7/go.mod h1:3e019WlBaYI5o5LIdNV+LyxCMNtLOQETBXL2h4chKpA= gorm.io/driver/sqlite v1.1.3/go.mod h1:AKDgRWk8lcSQSw+9kxCJnX/yySj8G3rdwYlU57cB45c= gorm.io/driver/sqlite v1.5.0/go.mod h1:kDMDfntV9u/vuMmz8APHtHF0b4nyBB7sfCieC6G8k8I= gorm.io/driver/sqlite v1.5.5 h1:7MDMtUZhV065SilG62E0MquljeArQZNfJnjd9i9gx3E= gorm.io/driver/sqlite v1.5.5/go.mod h1:6NgQ7sQWAIFsPrJJl1lSNSu2TABh0ZZ/zm5fosATavE= -gorm.io/driver/sqlserver v1.5.1 h1:wpyW/pR26U94uaujltiFGXY7fd2Jw5hC9PB1ZF/Y5s4= -gorm.io/driver/sqlserver v1.5.1/go.mod h1:AYHzzte2msKTmYBYsSIq8ZUsznLJwBdkB2wpI+kt0nM= -gorm.io/gen v0.3.25 h1:uT/1YfvcnYUdike4XPYyi89FEnVHZF115GUXQm2Sfug= -gorm.io/gen v0.3.25/go.mod h1:p+t0iCKjaPz+pKRxcx63nXdRgnrah/QD2l92747ihyA= +gorm.io/driver/sqlserver v1.5.3 h1:rjupPS4PVw+rjJkfvr8jn2lJ8BMhT4UW5FwuJY0P3Z0= +gorm.io/driver/sqlserver v1.5.3/go.mod h1:B+CZ0/7oFJ6tAlefsKoyxdgDCXJKSgwS2bMOQZT0I00= +gorm.io/gen v0.3.26 h1:sFf1j7vNStimPRRAtH4zz5NiHM+1dr6eA9aaRdplyhY= +gorm.io/gen v0.3.26/go.mod h1:a5lq5y3w4g5LMxBcw0wnO6tYUCdNutWODq5LrIt75LE= gorm.io/gorm v1.20.1/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.23.0/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= -gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.2/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= -gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A= gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.9 h1:wct0gxZIELDk8+ZqF/MVnHLkA1rvYlBWUMv2EdsK1g8= +gorm.io/gorm v1.25.9/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= gorm.io/hints v1.1.2 h1:b5j0kwk5p4+3BtDtYqqfY+ATSxjj+6ptPgVveuynn9o= gorm.io/hints v1.1.2/go.mod h1:/ARdpUHAtyEMCh5NNi3tI7FsGh+Cj/MIUlvNxCNCFWg= gorm.io/plugin/dbresolver v1.5.1 h1:s9Dj9f7r+1rE3nx/Ywzc85nXptUEaeOO0pt27xdopM8= @@ -1939,16 +2052,16 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= -k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= -k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= -k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= -k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= -k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= -k8s.io/klog/v2 v2.120.0 h1:z+q5mfovBj1fKFxiRzsa2DsJLPIVMk/KFL81LMOfK+8= -k8s.io/klog/v2 v2.120.0/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/api v0.30.0 h1:siWhRq7cNjy2iHssOB9SCGNCl2spiF1dO3dABqZ8niA= +k8s.io/api v0.30.0/go.mod h1:OPlaYhoHs8EQ1ql0R/TsUgaRPhpKNxIMrKQfWUp8QSE= +k8s.io/apimachinery v0.30.0 h1:qxVPsyDM5XS96NIh9Oj6LavoVFYff/Pon9cZeDIkHHA= +k8s.io/apimachinery v0.30.0/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.30.0 h1:sB1AGGlhY/o7KCyCEQ0bPWzYDL0pwOZO4vAtTSh/gJQ= +k8s.io/client-go v0.30.0/go.mod h1:g7li5O5256qe6TYdAMyX/otJqMhIiGgTapdLchhmOaY= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk= @@ -1957,19 +2070,21 @@ modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= -modernc.org/sqlite v1.29.2 h1:xgBSyA3gemwgP31PWFfFjtBorQNYpeypGdoSDjXhrgI= -modernc.org/sqlite v1.29.2/go.mod h1:hG41jCYxOAOoO6BRK66AdRlmOcDzXf7qnwlwjUIOqa0= +modernc.org/sqlite v1.29.6 h1:0lOXGrycJPptfHDuohfYgNqoe4hu+gYuN/pKgY5XjS4= +modernc.org/sqlite v1.29.6/go.mod h1:S02dvcmm7TnTRvGhv8IGYyLnIt7AS2KPaB1F/71p75U= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/release-utils v0.7.7 h1:JKDOvhCk6zW8ipEOkpTGDH/mW3TI+XqtPp16aaQ79FU= +sigs.k8s.io/release-utils v0.7.7/go.mod h1:iU7DGVNi3umZJ8q6aHyUFzsDUIaYwNnNKGHo3YE5E3s= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -software.sslmate.com/src/go-pkcs12 v0.2.0 h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE= -software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ= +software.sslmate.com/src/go-pkcs12 v0.4.0 h1:H2g08FrTvSFKUj+D309j1DPfk5APnIdAQAB8aEykJ5k= +software.sslmate.com/src/go-pkcs12 v0.4.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= tags.cncf.io/container-device-interface v0.6.2 h1:dThE6dtp/93ZDGhqaED2Pu374SOeUkBfuvkLuiTdwzg= tags.cncf.io/container-device-interface v0.6.2/go.mod h1:Shusyhjs1A5Na/kqPVLL0KqnHQHuunol9LFeUNkuGVE= diff --git a/pkg/daemon/gc/gc_artifact.go b/pkg/daemon/gc/gc_artifact.go index aa2cb599..11ab4177 100644 --- a/pkg/daemon/gc/gc_artifact.go +++ b/pkg/daemon/gc/gc_artifact.go @@ -28,7 +28,6 @@ import ( "github.com/go-sigma/sigma/pkg/consts" "github.com/go-sigma/sigma/pkg/dal/dao" "github.com/go-sigma/sigma/pkg/dal/models" - "github.com/go-sigma/sigma/pkg/dal/query" "github.com/go-sigma/sigma/pkg/modules/workq" "github.com/go-sigma/sigma/pkg/modules/workq/definition" "github.com/go-sigma/sigma/pkg/types" @@ -256,16 +255,18 @@ func (g gcArtifact) deleteArtifact() { go func() { defer g.waitAllDone.Done() defer close(g.collectRecordChan) + // artifactService := g.artifactServiceFactory.New() for task := range g.deleteArtifactChan { // TODO: we should set a lock for the delete action // otherwise, we should delete the artifact in goroutine - err := query.Q.Transaction(func(tx *query.Query) error { - err := g.artifactServiceFactory.New(tx).DeleteByID(g.ctx, task.Artifact.ID) - if err != nil { - return err - } - return nil - }) + // err := query.Q.Transaction(func(tx *query.Query) error { + err := g.artifactServiceFactory.New().DeleteByID(g.ctx, task.Artifact.ID) + // if err != nil { + // return err + // } + // return nil + // }) + // if err != nil { log.Error().Err(err).Interface("blob", task).Msgf("Delete blob failed: %v", err) g.collectRecordChan <- artifactTaskCollectRecord{ diff --git a/pkg/daemon/gc/testdata/gc_artifact_normal.mysql.sql b/pkg/daemon/gc/testdata/gc_artifact_normal.mysql.sql index f0a15717..b99cf354 100644 --- a/pkg/daemon/gc/testdata/gc_artifact_normal.mysql.sql +++ b/pkg/daemon/gc/testdata/gc_artifact_normal.mysql.sql @@ -7,17 +7,17 @@ INSERT INTO `daemon_gc_artifact_runners` (`id`, `rule_id`, `message`, `status`, INSERT INTO `repositories` (`id`, `name`, `description`, `overview`, `size_limit`, `size`, `tag_limit`, `tag_count`, `namespace_id`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 'library/alpine', NULL, NULL, 0, 13709154, 0, 1, 1, 1710256613610, 1710256613610, 0); -INSERT INTO `artifacts` (`id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) - VALUES (1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), - (2, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), - (3, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), - (4, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), - (5, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), - (6, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), - (7, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), - (8, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), - (9, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), - (10, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); +INSERT INTO `artifacts` (`id`, `namespace_id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) + VALUES (1, 1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), + (2, 1, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), + (3, 1, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), + (4, 1, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), + (5, 1, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), + (6, 1, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), + (7, 1, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), + (8, 1, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), + (9, 1, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), + (10, 1, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); INSERT INTO `artifact_artifacts` (`artifact_id`, `artifact_sub_id`) VALUES (5, 1), diff --git a/pkg/daemon/gc/testdata/gc_artifact_normal.postgresql.sql b/pkg/daemon/gc/testdata/gc_artifact_normal.postgresql.sql index bfc42b4c..359fa0f7 100644 --- a/pkg/daemon/gc/testdata/gc_artifact_normal.postgresql.sql +++ b/pkg/daemon/gc/testdata/gc_artifact_normal.postgresql.sql @@ -7,17 +7,17 @@ INSERT INTO "daemon_gc_artifact_runners" ("id", "rule_id", "message", "status", INSERT INTO "repositories" ("id", "name", "description", "overview", "size_limit", "size", "tag_limit", "tag_count", "namespace_id", "created_at", "updated_at", "deleted_at") VALUES (1, 'library/alpine', NULL, NULL, 0, 13709154, 0, 1, 1, 1710256613610, 1710256613610, 0); -INSERT INTO "artifacts" ("id", "repository_id", "digest", "size", "blobs_size", "content_type", "raw", "config_raw", "config_media_type", "type", "pushed_at", "last_pull", "pull_times", "referrer_id", "created_at", "updated_at", "deleted_at") - VALUES (1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), - (2, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), - (3, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), - (4, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), - (5, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), - (6, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), - (7, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), - (8, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), - (9, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), - (10, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); +INSERT INTO "artifacts" ("id", "namespace_id", "repository_id", "digest", "size", "blobs_size", "content_type", "raw", "config_raw", "config_media_type", "type", "pushed_at", "last_pull", "pull_times", "referrer_id", "created_at", "updated_at", "deleted_at") + VALUES (1, 1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), + (2, 1, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), + (3, 1, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), + (4, 1, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), + (5, 1, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), + (6, 1, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), + (7, 1, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), + (8, 1, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), + (9, 1, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', '\x7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), + (10, 1, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', '\x7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); INSERT INTO "artifact_artifacts" ("artifact_id", "artifact_sub_id") VALUES (5, 1), diff --git a/pkg/daemon/gc/testdata/gc_artifact_normal.sqlite3.sql b/pkg/daemon/gc/testdata/gc_artifact_normal.sqlite3.sql index f0a15717..b99cf354 100644 --- a/pkg/daemon/gc/testdata/gc_artifact_normal.sqlite3.sql +++ b/pkg/daemon/gc/testdata/gc_artifact_normal.sqlite3.sql @@ -7,17 +7,17 @@ INSERT INTO `daemon_gc_artifact_runners` (`id`, `rule_id`, `message`, `status`, INSERT INTO `repositories` (`id`, `name`, `description`, `overview`, `size_limit`, `size`, `tag_limit`, `tag_count`, `namespace_id`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 'library/alpine', NULL, NULL, 0, 13709154, 0, 1, 1, 1710256613610, 1710256613610, 0); -INSERT INTO `artifacts` (`id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) - VALUES (1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), - (2, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), - (3, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), - (4, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), - (5, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), - (6, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), - (7, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), - (8, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), - (9, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), - (10, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); +INSERT INTO `artifacts` (`id`, `namespace_id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) + VALUES (1, 1, 1, 'sha256:e89271a298507dd66a2f116824cf942735b3cac13cf7da045a662a3b1146e595', 480, 3343448, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a62303538646363663662653533373134623063633333346332313863613535333166663663353239613339316430643638636166303064626434316437303561222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a30383430396434313732363033663430623536656236623736323430613165366264373862616130653936353930646337666637366335663161303933616632222c0a2020202020202273697a65223a20333334323834380a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3038393835393939315a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6466376663636333343533623665633134303164323761313239356230383832613833653733316664653866323364623964336636383761326236623465373020696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a30382e3237373532333139365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39346464376435333166613536393563306330333364636236396632313363326234633362356133616536653439373235326261383864613837313639633366225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613617, 0, 0, NULL, 1710256613617, 1710256613617, 0), + (2, 1, 1, 'sha256:f2ad7800cb3ae5ac2063a3db6edc56fc7ea975c3b83dd7cfbd1a9b0d9476e352', 480, 3398090, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a61373565333534626535613665373862653864343833376235306238663231643539366232313364323237353332396261346265336662653634343039326437222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a38613439666462336236613566663262643865633661383663303562323932326130663734353435373965636330373633376539346466643164303633396236222c0a2020202020202273697a65223a20333339373439300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22686973746f7279223a5b7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3030373231373535335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3736323564646664353839666238323465653339663162316562333837623938663336373634323066663532663236656239643937353135316538383936363720696e202f20227d2c7b2263726561746564223a22323032332d30352d30395432333a31313a31302e3133323134373532365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a62623031626437653332623538623636393463386333363232633233303137316631636563323430303161383230363861386433306433333866343230643663225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256613639, 0, 0, NULL, 1710256613639, 1710256613639, 0), + (3, 1, 1, 'sha256:fd790d0563e793f0f736cbcaa6d45034a2402ed8e6ed05857c9df0913d94d4d8', 838, 83080, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30393466643934616636343965376363313066636437666438363763383839393338363662613161373130376536323736656366663364306366326334346639222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c0a2020202020202273697a65223a2038313535352c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a32303664653134633033643434623233376561313738326337663266303538663631343161623133303331316238323839626561313936346438636237366230222c227368613235363a30363061666362623836653731353130313639333536343162323230313463643331353266636239336637383031363834656637366433666538336265336638225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613662, 0, 0, NULL, 1710256613662, 1710256613662, 0), + (4, 1, 1, 'sha256:14097473125d074c4d51962a4d3f23a705e6bd75e8b7ce288671ba2a89aeb290', 838, 83098, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35393664663337366466633334326436363934323738373865646333656365316464363133636261343135376235653832316166323136336134616465613631222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c0a2020202020202273697a65223a2038313537332c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a36633738643666373661316565636163343838666462343736343638333262303838303463306437366230663531316537323839303162306164646437393061222c227368613235363a36356536633962316365613039373738653136363934336131353530663934376462363564613939333737616232373038373461373431386534326435316266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256613676, 0, 0, NULL, 1710256613676, 1710256613676, 0), + (5, 1, 1, 'sha256:9e9b0bcd760277d309c976b6f99ca7e6171e143a954c34bd79ff7150d4633453', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66643739306430353633653739336630663733366362636161366434353033346132343032656438653665643035383537633964663039313364393464346438222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a66326164373830306362336165356163323036336133646236656463353666633765613937356333623833646437636662643161396230643934373665333532222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a31343039373437333132356430373463346435313936326134643366323361373035653662643735653862376365323838363731626132613839616562323930222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a65383932373161323938353037646436366132663131363832346366393432373335623363616331336366376461303435613636326133623131343665353935222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256613690, 0, 0, NULL, 1710256613690, 1710256613690, 0), + (6, 1, 1, 'sha256:33f521b4a6f9e719af668f1fe19d9e94f00399cfd19f71517b1454717d2a796d', 838, 82526, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a30653462613264393439396136356433373161613739633931613833623362336337363434663232643134623734383236393665666663633036663737383431222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c0a2020202020202273697a65223a2038313030312c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a39623937363562333831643138316336303335373031386563333835383139333465626335353635353837333032356330333039313166613139353563366364222c227368613235363a30353366396263626332633939383063623364383965643431323833663333636431326233636530303336303738363937636135363239376239396335356262225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627084, 0, 0, NULL, 1710256627084, 1710256627084, 0), + (7, 1, 1, 'sha256:9322cd57e6cdbcf101d37438d97df528c45285ebb7455c9bef264404ccc09a31', 480, 3259790, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a37393364316562636633623261393464613734653365623963643834323662353530643762643061396331353036616661343137623234346537626266646662222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a32363164613431363236373362393365356330653737303061333731386434306263633038366462663234623165633962353462636130623832333030363236222c0a2020202020202273697a65223a20333235393139300a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3033333937303431335a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3638356235656461646631643562663061656232616563333566383130643833383736653664326561303930336232313366373561396335663064633539303120696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a33393a32312e3137363439303930355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a31623537376138666238636532353032336130656330613137613664633364366161396363613938396637353435373830306362353531373965653265383334225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627098, 0, 0, NULL, 1710256627098, 1710256627098, 0), + (8, 1, 1, 'sha256:2d277fcdab280dfbeefb044ee9ab8b5d2609308b305812012d797cf943f2626b', 480, 3371306, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a34303266316165313365613537386464633034643739373933313762636233313533633462326465383337346363346162343930643339346662316565376664222c0a202020202273697a65223a203630300a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6c617965722e76312e7461722b677a6970222c0a20202020202022646967657374223a20227368613235363a63313538393837623035353137623666326335393133663361636566316632313832613332333435613330346665333537653361636535666164636164373135222c0a2020202020202273697a65223a20333337303730360a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22616d643634222c22636f6e666967223a7b22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c224f6e4275696c64223a6e756c6c7d2c2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22686973746f7279223a5b7b2263726561746564223a22323032322d31312d32325432323a31393a32382e3837303830313835355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3538376361653731393639383731643363363435366438343461383739356466396236346231326337313063323735323935613131383262343666363330653720696e202f20227d2c7b2263726561746564223a22323032322d31312d32325432323a31393a32392e3030383536323332365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a64656437613232306262303538653238656533323534666262613034636139306236373930373034323434323437363161353361303433623933623631326266225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Image', 1710256627124, 0, 0, NULL, 1710256627124, 1710256627124, 0), + (9, 1, 1, 'sha256:7b1f92419ec4a75c303343acc0393a6becc9c374f519bf38cd9ed4e0e676227b', 838, 82544, 'application/vnd.oci.image.manifest.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a202022636f6e666967223a207b0a20202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e636f6e6669672e76312b6a736f6e222c0a2020202022646967657374223a20227368613235363a35633266323463353537383934383063653238613836306533633539656439346463643161373463323335663830623535653930633464636330376564373863222c0a202020202273697a65223a203234310a20207d2c0a2020226c6179657273223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c0a2020202020202273697a65223a2038313031392c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f737064782e6465762f446f63756d656e74220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e696e2d746f746f2b6a736f6e222c0a20202020202022646967657374223a20227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363222c0a2020202020202273697a65223a20313238342c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022696e2d746f746f2e696f2f7072656469636174652d74797065223a202268747470733a2f2f736c73612e6465762f70726f76656e616e63652f76302e32220a2020202020207d0a202020207d0a20205d0a7d', X'7b22617263686974656374757265223a22756e6b6e6f776e222c226f73223a22756e6b6e6f776e222c22636f6e666967223a7b7d2c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a66613366303839666239346439333731613165383363643961323834393933363134626437343330303063636164393865323461363534396365643433353530222c227368613235363a65393436633136393734396236616437616133396465353139306632663432393734633230353634386337356264326666346438343732633330613264353363225d7d7d', 'application/vnd.oci.image.config.v1+json', 'Provenance', 1710256627144, 0, 0, NULL, 1710256627144, 1710256627144, 0), + (10, 1, 1, 'sha256:34a192d1baa2929229d64f3ec33650efa608eadcdd3314f6984c846f71e39ace', 1607, 2636, 'application/vnd.oci.image.index.v1+json', X'7b0a202022736368656d6156657273696f6e223a20322c0a2020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e696e6465782e76312b6a736f6e222c0a2020226d616e696665737473223a205b0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022616d643634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a2020202020202273697a65223a203438302c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a202261726d3634222c0a2020202020202020226f73223a20226c696e7578220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a33336635323162346136663965373139616636363866316665313964396539346630303339396366643139663731353137623134353437313764326137393664222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a32643237376663646162323830646662656566623034346565396162386235643236303933303862333035383132303132643739376366393433663236323662222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d2c0a202020207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e6f63692e696d6167652e6d616e69666573742e76312b6a736f6e222c0a20202020202022646967657374223a20227368613235363a37623166393234313965633461373563333033333433616363303339336136626563633963333734663531396266333863643965643465306536373632323762222c0a2020202020202273697a65223a203833382c0a20202020202022616e6e6f746174696f6e73223a207b0a202020202020202022766e642e646f636b65722e7265666572656e63652e646967657374223a20227368613235363a39333232636435376536636462636631303164333734333864393764663532386334353238356562623734353563396265663236343430346363633039613331222c0a202020202020202022766e642e646f636b65722e7265666572656e63652e74797065223a20226174746573746174696f6e2d6d616e6966657374220a2020202020207d2c0a20202020202022706c6174666f726d223a207b0a202020202020202022617263686974656374757265223a2022756e6b6e6f776e222c0a2020202020202020226f73223a2022756e6b6e6f776e220a2020202020207d0a202020207d0a20205d0a7d', NULL, NULL, 'ImageIndex', 1710256627160, 0, 0, NULL, 1710256627160, 1710256627160, 0); INSERT INTO `artifact_artifacts` (`artifact_id`, `artifact_sub_id`) VALUES (5, 1), diff --git a/pkg/daemon/gc/testdata/gc_blob_normal.mysql.sql b/pkg/daemon/gc/testdata/gc_blob_normal.mysql.sql index 3b012f5c..12b9967c 100644 --- a/pkg/daemon/gc/testdata/gc_blob_normal.mysql.sql +++ b/pkg/daemon/gc/testdata/gc_blob_normal.mysql.sql @@ -7,9 +7,9 @@ INSERT INTO `daemon_gc_blob_runners` (`id`, `rule_id`, `message`, `status`, `ope INSERT INTO `repositories` (`id`, `name`, `description`, `overview`, `size_limit`, `size`, `tag_limit`, `tag_count`, `namespace_id`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 'library/alpine', NULL, NULL, 0, 6594618, 0, 1, 1, 1711288021556, 1711288021556, 0); -INSERT INTO `artifacts` (`id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) - VALUES (1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), - (2, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); +INSERT INTO `artifacts` (`id`, `namespace_id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) + VALUES (1, 1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), + (2, 1, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); INSERT INTO `tags` (`id`, `repository_id`, `artifact_id`, `name`, `pushed_at`, `last_pull`, `pull_times`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 1, 2, '3.18', 1711288021567, 0, 0, 1711288021567, 1711288027582, 0); diff --git a/pkg/daemon/gc/testdata/gc_blob_normal.postgresql.sql b/pkg/daemon/gc/testdata/gc_blob_normal.postgresql.sql index 3ed37e5b..ad46b6de 100644 --- a/pkg/daemon/gc/testdata/gc_blob_normal.postgresql.sql +++ b/pkg/daemon/gc/testdata/gc_blob_normal.postgresql.sql @@ -7,9 +7,9 @@ INSERT INTO "daemon_gc_blob_runners" ("id", "rule_id", "message", "status", "ope INSERT INTO "repositories" ("id", "name", "description", "overview", "size_limit", "size", "tag_limit", "tag_count", "namespace_id", "created_at", "updated_at", "deleted_at") VALUES (1, 'library/alpine', NULL, NULL, 0, 6594618, 0, 1, 1, 1711288021556, 1711288021556, 0); -INSERT INTO "artifacts" ("id", "repository_id", "digest", "size", "blobs_size", "content_type", "raw", "config_raw", "config_media_type", "type", "pushed_at", "last_pull", "pull_times", "referrer_id", "created_at", "updated_at", "deleted_at") - VALUES (1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', '\x7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), - (2, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', '\x7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); +INSERT INTO "artifacts" ("id", "namespace_id", "repository_id", "digest", "size", "blobs_size", "content_type", "raw", "config_raw", "config_media_type", "type", "pushed_at", "last_pull", "pull_times", "referrer_id", "created_at", "updated_at", "deleted_at") + VALUES (1, 1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', '\x7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), + (2, 1, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', '\x7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', '\x7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); INSERT INTO "tags" ("id", "repository_id", "artifact_id", "name", "pushed_at", "last_pull", "pull_times", "created_at", "updated_at", "deleted_at") VALUES (1, 1, 2, '3.18', 1711288021567, 0, 0, 1711288021567, 1711288027582, 0); diff --git a/pkg/daemon/gc/testdata/gc_blob_normal.sqlite3.sql b/pkg/daemon/gc/testdata/gc_blob_normal.sqlite3.sql index 3b012f5c..12b9967c 100644 --- a/pkg/daemon/gc/testdata/gc_blob_normal.sqlite3.sql +++ b/pkg/daemon/gc/testdata/gc_blob_normal.sqlite3.sql @@ -7,9 +7,9 @@ INSERT INTO `daemon_gc_blob_runners` (`id`, `rule_id`, `message`, `status`, `ope INSERT INTO `repositories` (`id`, `name`, `description`, `overview`, `size_limit`, `size`, `tag_limit`, `tag_count`, `namespace_id`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 'library/alpine', NULL, NULL, 0, 6594618, 0, 1, 1, 1711288021556, 1711288021556, 0); -INSERT INTO `artifacts` (`id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) - VALUES (1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), - (2, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); +INSERT INTO `artifacts` (`id`, `namespace_id`, `repository_id`, `digest`, `size`, `blobs_size`, `content_type`, `raw`, `config_raw`, `config_media_type`, `type`, `pushed_at`, `last_pull`, `pull_times`, `referrer_id`, `created_at`, `updated_at`, `deleted_at`) + VALUES (1, 1, 1, 'sha256:24b42af5b7bdb9ccf1252e508ee0a4fd85eb3286a4596c422739ae6beb3038f4', 528, 3334848, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a33336162626630333231343932666637333739653630633235326330356334653765643464636366343666636361366335353830363763323565373664633862220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333333333336312c0a20202020202020202022646967657374223a20227368613235363a63366233396465356233333936313636316463393339623939376363316433306364613031653338303035613663363632356664396337653734386261623434220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2234623430313935626363666461616431316464376662333638326337303130303835636265343661613333313762626561303463396539383261663237646635222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22346234303139356263636664222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a62323630376565366430303135623137373332653963666433656466366434386134303762626332336438623632656366346434613665643533663236623537222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3635303239303632365a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a3664633238376132326436636337373233623035373664643361396136343434363864313333633534643432633861386564613430336533313137363438663720696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34343a35352e3735303038323630355a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a37633530346632316265383563386164653531623761646533326133396134323639626362636630653539333335323932336631623865613632373865356566225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288021563, 0, 0, NULL, 1711288021563, 1711288021563, 1711288063290), + (2, 1, 1, 'sha256:74440a3ca0e58af8aa796467285de45d0e079067c79200f2cfab30d6a38051d8', 528, 3259770, 'application/vnd.docker.distribution.manifest.v2+json', X'7b0a20202022736368656d6156657273696f6e223a20322c0a202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e646973747269627574696f6e2e6d616e69666573742e76322b6a736f6e222c0a20202022636f6e666967223a207b0a202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e636f6e7461696e65722e696d6167652e76312b6a736f6e222c0a2020202020202273697a65223a20313438372c0a20202020202022646967657374223a20227368613235363a66306664386665313662666135353137396336356432303863653861626635383139376538353133366636613164633534336432313336343234666436363563220a2020207d2c0a202020226c6179657273223a205b0a2020202020207b0a202020202020202020226d6564696154797065223a20226170706c69636174696f6e2f766e642e646f636b65722e696d6167652e726f6f7466732e646966662e7461722e677a6970222c0a2020202020202020202273697a65223a20333235383238332c0a20202020202020202022646967657374223a20227368613235363a35333835613961353930633365323837326233656432373535346135366662376365353434633639346234316239623935643730666138366633306230353636220a2020202020207d0a2020205d0a7d', X'7b22617263686974656374757265223a2261726d3634222c22636f6e666967223a7b22486f73746e616d65223a22222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a6e756c6c7d2c22636f6e7461696e6572223a2264333433356533353330333163356237343539646161373639383632636539633139323033363432633634336362393963633837633461613032633435343136222c22636f6e7461696e65725f636f6e666967223a7b22486f73746e616d65223a22643334333565333533303331222c22446f6d61696e6e616d65223a22222c2255736572223a22222c22417474616368537464696e223a66616c73652c224174746163685374646f7574223a66616c73652c22417474616368537464657272223a66616c73652c22547479223a66616c73652c224f70656e537464696e223a66616c73652c22537464696e4f6e6365223a66616c73652c22456e76223a5b22504154483d2f7573722f6c6f63616c2f7362696e3a2f7573722f6c6f63616c2f62696e3a2f7573722f7362696e3a2f7573722f62696e3a2f7362696e3a2f62696e225d2c22436d64223a5b222f62696e2f7368222c222d63222c2223286e6f702920222c22434d44205b5c222f62696e2f73685c225d225d2c22496d616765223a227368613235363a32356662363165383438363731313139343739396131323262346366613430343165616237613365386234626434356333623537653234666531353933303464222c22566f6c756d6573223a6e756c6c2c22576f726b696e67446972223a22222c22456e747279706f696e74223a6e756c6c2c224f6e4275696c64223a6e756c6c2c224c6162656c73223a7b7d7d2c2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22646f636b65725f76657273696f6e223a2232302e31302e3233222c22686973746f7279223a5b7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3530373337343539385a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f7029204144442066696c653a6333623662353735656237343166393134656331326264346466343364653063623034346131663262616537666631356431373665343962353938366439303320696e202f20227d2c7b2263726561746564223a22323032342d30312d32365432333a34353a30302e3631313336323335395a222c22637265617465645f6279223a222f62696e2f7368202d632023286e6f70292020434d44205b5c222f62696e2f73685c225d222c22656d7074795f6c61796572223a747275657d5d2c226f73223a226c696e7578222c22726f6f746673223a7b2274797065223a226c6179657273222c22646966665f696473223a5b227368613235363a34353865636438646163363733396265373431303036353034623166653138376464613535616239656231323465376364373964356631633962623734393735225d7d2c2276617269616e74223a227638227d', 'application/vnd.docker.container.image.v1+json', 'Image', 1711288027580, 0, 0, NULL, 1711288027580, 1711288027580, 0); INSERT INTO `tags` (`id`, `repository_id`, `artifact_id`, `name`, `pushed_at`, `last_pull`, `pull_times`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 1, 2, '3.18', 1711288021567, 0, 0, 1711288021567, 1711288027582, 0); diff --git a/pkg/dal/auth_test.go b/pkg/dal/auth_test.go index 57b87020..3901669e 100644 --- a/pkg/dal/auth_test.go +++ b/pkg/dal/auth_test.go @@ -49,12 +49,12 @@ func TestAuth(t *testing.T) { })) ctx := log.Logger.WithContext(context.Background()) - roleService := dao.NewNamespaceMemberServiceFactory().New() + namespaceMemberService := dao.NewNamespaceMemberServiceFactory().New() added, _ := dal.AuthEnforcer.AddPolicy(enums.NamespaceRoleManager.String(), "library", "DS$*/**$manifests$*", "public", "(GET)|(HEAD)", "allow") assert.True(t, added) - _, err := roleService.AddNamespaceMember(ctx, 1, models.Namespace{ID: 1, Name: "library"}, enums.NamespaceRoleManager) + _, err := namespaceMemberService.AddNamespaceMember(ctx, 1, models.Namespace{ID: 1, Name: "library"}, enums.NamespaceRoleManager) assert.NoError(t, err) err = dal.AuthEnforcer.LoadPolicy() assert.NoError(t, err) diff --git a/pkg/dal/dal.go b/pkg/dal/dal.go index 9903aa78..d449c806 100644 --- a/pkg/dal/dal.go +++ b/pkg/dal/dal.go @@ -43,14 +43,13 @@ var ( // Initialize initializes the database connection func Initialize(config configs.Configuration) error { var err error - var dsn string switch config.Database.Type { case enums.DatabaseMysql: - dsn, err = connectMysql(config) + err = connectMysql(config) case enums.DatabasePostgresql: - dsn, err = connectPostgres(config) + err = connectPostgres(config) case enums.DatabaseSqlite3: - dsn, err = connectSqlite3(config) + err = connectSqlite3(config) default: return fmt.Errorf("unknown database type: %s", config.Database.Type) } @@ -82,11 +81,11 @@ func Initialize(config configs.Configuration) error { switch config.Database.Type { case enums.DatabaseMysql: - err = migrateMysql(dsn) + err = migrateMysql(config.Database.Mysql.DBName) case enums.DatabasePostgresql: - err = migratePostgres(dsn) + err = migratePostgres(config.Database.Postgresql.DBName) case enums.DatabaseSqlite3: - err = migrateSqlite(dsn) + err = migrateSqlite() default: return fmt.Errorf("unknown database type: %s", config.Database.Type) } @@ -107,7 +106,7 @@ func Initialize(config configs.Configuration) error { return nil } -func connectMysql(config configs.Configuration) (string, error) { +func connectMysql(config configs.Configuration) error { host := config.Database.Mysql.Host port := config.Database.Mysql.Port user := config.Database.Mysql.User @@ -124,15 +123,15 @@ func connectMysql(config configs.Configuration) (string, error) { Logger: logger.ZLogger{}, }) if err != nil { - return "", err + return err } db = db.WithContext(log.Logger.WithContext(context.Background())) DB = db - return dsn, nil + return nil } -func connectPostgres(config configs.Configuration) (string, error) { +func connectPostgres(config configs.Configuration) error { host := config.Database.Postgresql.Host port := config.Database.Postgresql.Port user := config.Database.Postgresql.User @@ -148,30 +147,40 @@ func connectPostgres(config configs.Configuration) (string, error) { Logger: logger.ZLogger{}, }) if err != nil { - return "", err + return err } db = db.WithContext(log.Logger.WithContext(context.Background())) DB = db - migrateDsn := fmt.Sprintf("%s:%s@%s:%d/%s?sslmode=disable", user, password, host, port, dbname) - - return migrateDsn, nil + return nil } -func connectSqlite3(config configs.Configuration) (string, error) { +func connectSqlite3(config configs.Configuration) error { dbname := config.Database.Sqlite3.Path - db, err := gorm.Open(sqlite.Open(dbname+"?_busy_timeout=10000"), &gorm.Config{ + // +"?_busy_timeout=10000&_journal_mode=wal&mode=rwc&cache=shared" + // &_locking_mode=EXCLUSIVE + db, err := gorm.Open(sqlite.Open("file:"+dbname+"?_busy_timeout=30000&_locking_mode=EXCLUSIVE"), &gorm.Config{ NowFunc: func() time.Time { return time.Now().UTC() }, Logger: logger.ZLogger{}, }) if err != nil { - return "", err + return err } db = db.WithContext(log.Logger.WithContext(context.Background())) + + rawDB, err := db.DB() + if err != nil { + return err + } + rawDB.SetMaxOpenConns(10) + rawDB.SetMaxIdleConns(3) + rawDB.SetConnMaxIdleTime(time.Hour) + rawDB.SetConnMaxLifetime(time.Hour) + DB = db - return dbname, nil + return nil } diff --git a/pkg/dal/dao/artifact.go b/pkg/dal/dao/artifact.go index dff854b6..decc9ec9 100644 --- a/pkg/dal/dao/artifact.go +++ b/pkg/dal/dao/artifact.go @@ -353,20 +353,28 @@ func (s *artifactService) UpdateVulnerability(ctx context.Context, artifactID in // GetNamespaceSize get the specific namespace size func (s *artifactService) GetNamespaceSize(ctx context.Context, namespaceID int64) (int64, error) { - result, err := s.tx.Artifact.WithContext(ctx).ArtifactSizeByNamespace(namespaceID) + q := s.tx.Artifact.WithContext(ctx).Select(s.tx.Artifact.BlobsSize.Sum().As("blobs_size")). + Where(s.tx.Artifact.NamespaceID.Eq(namespaceID)). + Clauses(clause.Locking{Strength: clause.LockingStrengthUpdate, + Table: clause.Table{Name: clause.CurrentTable}}) + res, err := q.First() if err != nil { return 0, err } - return result.Size, nil + return res.BlobsSize, nil } // GetRepositorySize get the specific repository size func (s *artifactService) GetRepositorySize(ctx context.Context, repositoryID int64) (int64, error) { - result, err := s.tx.Artifact.WithContext(ctx).ArtifactSizeByRepository(repositoryID) + q := s.tx.Artifact.WithContext(ctx).Select(s.tx.Artifact.BlobsSize.Sum().As("blobs_size")). + Where(s.tx.Artifact.RepositoryID.Eq(repositoryID)). + Clauses(clause.Locking{Strength: clause.LockingStrengthUpdate, + Table: clause.Table{Name: clause.CurrentTable}}) + res, err := q.First() if err != nil { return 0, err } - return result.Size, nil + return res.BlobsSize, nil } // GetReferrers ... diff --git a/pkg/dal/dao/artifact_test.go b/pkg/dal/dao/artifact_test.go index 0c5b3fab..0c9418be 100644 --- a/pkg/dal/dao/artifact_test.go +++ b/pkg/dal/dao/artifact_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "golang.org/x/exp/slices" "gorm.io/gorm" @@ -37,26 +36,19 @@ import ( func TestArtifactServiceFactory(t *testing.T) { f := dao.NewArtifactServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestArtifactServiceAssociateArtifact(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -65,25 +57,17 @@ func TestArtifactServiceAssociateArtifact(t *testing.T) { namespaceServiceFactory := dao.NewNamespaceServiceFactory() repositoryServiceFactory := dao.NewRepositoryServiceFactory() - var repositoryObj *models.Repository - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) + userService := userServiceFactory.New() + userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + namespaceService := namespaceServiceFactory.New() + namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj = &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - return nil - }) - assert.NoError(t, err) + repositoryService := repositoryServiceFactory.New() + repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) artifactServiceFactory := dao.NewArtifactServiceFactory() artifactService := artifactServiceFactory.New() @@ -94,8 +78,7 @@ func TestArtifactServiceAssociateArtifact(t *testing.T) { ContentType: "test", Raw: []byte("test"), } - err = artifactService.Create(ctx, artifactObj1) - assert.NoError(t, err) + assert.NoError(t, artifactService.Create(ctx, artifactObj1)) artifactObj2 := &models.Artifact{ RepositoryID: repositoryObj.ID, @@ -104,207 +87,203 @@ func TestArtifactServiceAssociateArtifact(t *testing.T) { ContentType: "test", Raw: []byte("test"), } - err = artifactService.Create(ctx, artifactObj2) - assert.NoError(t, err) - err = artifactService.AssociateArtifact(ctx, artifactObj1, []*models.Artifact{artifactObj2}) - assert.NoError(t, err) + assert.NoError(t, artifactService.Create(ctx, artifactObj2)) + assert.NoError(t, artifactService.AssociateArtifact(ctx, artifactObj1, []*models.Artifact{artifactObj2})) } func TestArtifactService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) - tagServiceFactory := dao.NewTagServiceFactory() - namespaceServiceFactory := dao.NewNamespaceServiceFactory() - repositoryServiceFactory := dao.NewRepositoryServiceFactory() - artifactServiceFactory := dao.NewArtifactServiceFactory() - userServiceFactory := dao.NewUserServiceFactory() + userService := dao.NewUserServiceFactory().New() + namespaceService := dao.NewNamespaceServiceFactory().New() + repositoryService := dao.NewRepositoryServiceFactory().New() + tagService := dao.NewTagServiceFactory().New() + artifactService := dao.NewArtifactServiceFactory().New() - var artifactObj *models.Artifact - var tagObj1 *models.Tag - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) + userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) + repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) + + artifactObj := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:xxxx", + Size: 123, + ContentType: "test", + Raw: []byte("test"), + } + assert.NoError(t, artifactService.Create(ctx, artifactObj)) - artifactService := artifactServiceFactory.New(tx) - artifactObj = &models.Artifact{ + tagObj := &models.Tag{ + RepositoryID: repositoryObj.ID, + Name: "latest", + Artifact: &models.Artifact{ RepositoryID: repositoryObj.ID, - Digest: "sha256:xxxx", + Digest: "sha256:xxx", Size: 123, ContentType: "test", Raw: []byte("test"), - } - err = artifactService.Create(ctx, artifactObj) - assert.NoError(t, err) - - tagService := tagServiceFactory.New(tx) - tagObj := &models.Tag{ - RepositoryID: repositoryObj.ID, - Name: "latest", - Artifact: &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:xxx", - Size: 123, - ContentType: "test", - Raw: []byte("test"), - }, - } - err = tagService.Create(ctx, tagObj) - assert.NoError(t, err) - tagObj1 = tagObj - assert.Equal(t, tagObj1.Name, tagObj.Name) - - artifact1, err := artifactService.Get(ctx, artifactObj.ID) - assert.NoError(t, err) - assert.Equal(t, artifact1.ID, artifactObj.ID) + }, + } + assert.NoError(t, tagService.Create(ctx, tagObj)) + assert.Equal(t, tagObj.Name, tagObj.Name) - artifacts1, err := artifactService.GetByDigests(ctx, "test/busybox", []string{"sha256:xxxx"}) - assert.NoError(t, err) - assert.Equal(t, len(artifacts1), int(1)) + artifact1, err := artifactService.Get(ctx, artifactObj.ID) + assert.NoError(t, err) + assert.Equal(t, artifact1.ID, artifactObj.ID) - err = artifactService.Incr(ctx, artifactObj.ID) - assert.NoError(t, err) - artifact1, err = artifactService.Get(ctx, artifactObj.ID) - assert.NoError(t, err) - assert.Equal(t, artifact1.ID, artifactObj.ID) - assert.Equal(t, artifact1.PullTimes, int64(1)) + artifacts1, err := artifactService.GetByDigests(ctx, "test/busybox", []string{"sha256:xxxx"}) + assert.NoError(t, err) + assert.Equal(t, len(artifacts1), int(1)) - nsCount1, err := artifactService.CountByNamespace(ctx, []int64{namespaceObj.ID}) - assert.NoError(t, err) - assert.Equal(t, len(nsCount1), 1) - assert.Equal(t, nsCount1[namespaceObj.ID], int64(2)) + assert.NoError(t, artifactService.Incr(ctx, artifactObj.ID)) + artifact1, err = artifactService.Get(ctx, artifactObj.ID) + assert.NoError(t, err) + assert.Equal(t, artifact1.ID, artifactObj.ID) + assert.Equal(t, artifact1.PullTimes, int64(1)) - nsCount2, err := artifactService.CountByNamespace(ctx, []int64{}) - assert.NoError(t, err) - assert.Equal(t, len(nsCount2), 0) + nsCount1, err := artifactService.CountByNamespace(ctx, []int64{namespaceObj.ID}) + assert.NoError(t, err) + assert.Equal(t, len(nsCount1), 1) + assert.Equal(t, nsCount1[namespaceObj.ID], int64(2)) - repoCount1, err := artifactService.CountByRepository(ctx, []int64{repositoryObj.ID}) - assert.NoError(t, err) - assert.Equal(t, len(repoCount1), 1) - assert.Equal(t, repoCount1[repositoryObj.ID], int64(2)) + nsCount2, err := artifactService.CountByNamespace(ctx, []int64{}) + assert.NoError(t, err) + assert.Equal(t, len(nsCount2), 0) - repoCount2, err := artifactService.CountByRepository(ctx, []int64{}) - assert.NoError(t, err) - assert.Equal(t, len(repoCount2), 0) - - artifacts2, err := artifactService.ListArtifact(ctx, types.ListArtifactRequest{ - Pagination: types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(0)), - }, - Namespace: namespaceObj.Name, - Repository: repositoryObj.Name, - }) - assert.NoError(t, err) - assert.Equal(t, len(artifacts2), 2) - assert.True(t, slices.Contains([]string{artifacts2[0].Digest, artifacts2[1].Digest}, "sha256:xxxx")) - assert.True(t, slices.Contains([]string{artifacts2[0].Digest, artifacts2[1].Digest}, "sha256:xxx")) - - artifactCount1, err := artifactService.CountArtifact(ctx, types.ListArtifactRequest{ - Pagination: types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(0)), - }, - Namespace: namespaceObj.Name, - Repository: repositoryObj.Name, - }) - assert.NoError(t, err) - assert.Equal(t, artifactCount1, int64(2)) + repoCount1, err := artifactService.CountByRepository(ctx, []int64{repositoryObj.ID}) + assert.NoError(t, err) + assert.Equal(t, len(repoCount1), 1) + assert.Equal(t, repoCount1[repositoryObj.ID], int64(2)) - return nil + repoCount2, err := artifactService.CountByRepository(ctx, []int64{}) + assert.NoError(t, err) + assert.Equal(t, len(repoCount2), 0) + + artifacts2, err := artifactService.ListArtifact(ctx, types.ListArtifactRequest{ + Pagination: types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(0)), + }, + Namespace: namespaceObj.Name, + Repository: repositoryObj.Name, }) assert.NoError(t, err) - - err = query.Q.Transaction(func(tx *query.Query) error { - artifactService := artifactServiceFactory.New(tx) - err = artifactService.AssociateBlobs(ctx, artifactObj, - []*models.Blob{{ - Digest: "sha256:123", - Size: 123, - ContentType: "test", - }}) - assert.NoError(t, err) - return nil + assert.Equal(t, len(artifacts2), 2) + assert.True(t, slices.Contains([]string{artifacts2[0].Digest, artifacts2[1].Digest}, "sha256:xxxx")) + assert.True(t, slices.Contains([]string{artifacts2[0].Digest, artifacts2[1].Digest}, "sha256:xxx")) + + artifactCount1, err := artifactService.CountArtifact(ctx, types.ListArtifactRequest{ + Pagination: types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(0)), + }, + Namespace: namespaceObj.Name, + Repository: repositoryObj.Name, }) assert.NoError(t, err) + assert.Equal(t, artifactCount1, int64(2)) - artifactService := artifactServiceFactory.New() - err = artifactService.DeleteByDigest(ctx, "test/busybox", artifactObj.Digest) - assert.NoError(t, err) - err = artifactService.DeleteByID(ctx, 10) - assert.ErrorIs(t, err, gorm.ErrRecordNotFound) - err = artifactService.DeleteByID(ctx, tagObj1.ArtifactID) - assert.NoError(t, err) + assert.NoError(t, artifactService.AssociateBlobs(ctx, artifactObj, + []*models.Blob{{ + Digest: "sha256:123", + Size: 123, + ContentType: "test", + }})) - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "artifact-service1", Password: ptr.Of("test"), Email: ptr.Of("test1@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) + assert.NoError(t, artifactService.DeleteByDigest(ctx, "test/busybox", artifactObj.Digest)) + assert.ErrorIs(t, artifactService.DeleteByID(ctx, 10), gorm.ErrRecordNotFound) + assert.NoError(t, artifactService.DeleteByID(ctx, tagObj.ArtifactID)) - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: "test1", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + assert.NoError(t, userService.Create(ctx, + &models.User{Username: "artifact-service1", Password: ptr.Of("test"), Email: ptr.Of("test1@gmail.com")})) - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: "test1/busybox", NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) + assert.NoError(t, namespaceService.Create(ctx, &models.Namespace{Name: "test1", Visibility: enums.VisibilityPrivate})) - artifactObj = &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:xxxx", - Size: 123, - ContentType: "test", - Raw: []byte("test"), - } - artifactService := artifactServiceFactory.New(tx) - err = artifactService.Create(ctx, artifactObj) - assert.NoError(t, err) + assert.NoError(t, repositoryService.Create(ctx, + &models.Repository{Name: "test1/busybox", NamespaceID: namespaceObj.ID}, + dao.AutoCreateNamespace{UserID: userObj.ID})) - sbomObj := &models.ArtifactSbom{ArtifactID: artifactObj.ID, Raw: []byte("test"), Status: enums.TaskCommonStatusPending} - err = artifactService.CreateSbom(ctx, sbomObj) - assert.NoError(t, err) - err = artifactService.UpdateSbom(ctx, artifactObj.ID, map[string]any{ - query.ArtifactSbom.Status.ColumnName().String(): enums.TaskCommonStatusSuccess, - }) - assert.NoError(t, err) + assert.NoError(t, artifactService.Create(ctx, &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:xxxx", + Size: 123, + ContentType: "test", + Raw: []byte("test"), + })) + + assert.NoError(t, artifactService.CreateSbom(ctx, + &models.ArtifactSbom{ArtifactID: artifactObj.ID, Raw: []byte("test"), Status: enums.TaskCommonStatusPending})) + assert.NoError(t, artifactService.UpdateSbom(ctx, artifactObj.ID, map[string]any{ + query.ArtifactSbom.Status.ColumnName().String(): enums.TaskCommonStatusSuccess, + })) + + assert.NoError(t, artifactService.CreateVulnerability(ctx, + &models.ArtifactVulnerability{ArtifactID: artifactObj.ID, Raw: []byte("test"), Status: enums.TaskCommonStatusPending})) + assert.NoError(t, artifactService.UpdateVulnerability(ctx, artifactObj.ID, map[string]any{ + query.ArtifactVulnerability.Status.ColumnName().String(): enums.TaskCommonStatusSuccess, + })) +} - vulnObj := &models.ArtifactVulnerability{ArtifactID: artifactObj.ID, Raw: []byte("test"), Status: enums.TaskCommonStatusPending} - err = artifactService.CreateVulnerability(ctx, vulnObj) - assert.NoError(t, err) - err = artifactService.UpdateVulnerability(ctx, artifactObj.ID, map[string]any{ - query.ArtifactVulnerability.Status.ColumnName().String(): enums.TaskCommonStatusSuccess, - }) +func TestArtifactServiceGetNamespaceSize(t *testing.T) { + logger.SetLevel("debug") + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) + defer func() { + conn, err := dal.DB.DB() assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) + }() + + ctx := log.Logger.WithContext(context.Background()) + + userService := dao.NewUserServiceFactory().New() + namespaceService := dao.NewNamespaceServiceFactory().New() + repositoryService := dao.NewRepositoryServiceFactory().New() + artifactService := dao.NewArtifactServiceFactory().New() + + userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) + + namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) + + repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) + + artifactObj := &models.Artifact{ + NamespaceID: namespaceObj.ID, + RepositoryID: repositoryObj.ID, + Digest: "sha256:xxxx", + Size: 123, + BlobsSize: 123, + ContentType: "test", + Raw: []byte("test"), + } + assert.NoError(t, artifactService.Create(ctx, artifactObj)) + + assert.NoError(t, query.Q.Transaction(func(tx *query.Query) error { + artifactService := dao.NewArtifactServiceFactory().New(tx) + size, err := artifactService.GetNamespaceSize(ctx, namespaceObj.ID) + if err != nil { + return err + } + assert.Equal(t, int64(123), size) return nil - }) - assert.NoError(t, err) + })) } diff --git a/pkg/dal/dao/audit_test.go b/pkg/dal/dao/audit_test.go index 80dc11a8..c56bc88b 100644 --- a/pkg/dal/dao/audit_test.go +++ b/pkg/dal/dao/audit_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -34,14 +33,11 @@ import ( func TestAuditServiceFactory(t *testing.T) { f := dao.NewAuditServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestAuditService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") assert.NoError(t, tests.Initialize(t)) assert.NoError(t, tests.DB.Init()) diff --git a/pkg/dal/dao/blob_test.go b/pkg/dal/dao/blob_test.go index 4c289869..5ba903b1 100644 --- a/pkg/dal/dao/blob_test.go +++ b/pkg/dal/dao/blob_test.go @@ -34,10 +34,8 @@ import ( func TestBlobServiceFactory(t *testing.T) { f := dao.NewBlobServiceFactory() - blobService := f.New() - assert.NotNil(t, blobService) - blobService = f.New(query.Q) - assert.NotNil(t, blobService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestBlobService(t *testing.T) { diff --git a/pkg/dal/dao/blobupload_test.go b/pkg/dal/dao/blobupload_test.go index e67a9bd7..4df0fdb6 100644 --- a/pkg/dal/dao/blobupload_test.go +++ b/pkg/dal/dao/blobupload_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -32,78 +31,63 @@ import ( func TestBlobUploadServiceFactory(t *testing.T) { f := dao.NewBlobUploadServiceFactory() - blobUploadService := f.New() - assert.NotNil(t, blobUploadService) - blobUploadService = f.New(query.Q) - assert.NotNil(t, blobUploadService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestBlobUploadService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) blobUploadServiceFactory := dao.NewBlobUploadServiceFactory() - err = query.Q.Transaction(func(tx *query.Query) error { - blobUploadService := blobUploadServiceFactory.New(tx) - blobUploadObj := &models.BlobUpload{ - PartNumber: 1, - UploadID: "test1", - Etag: "test1", - Repository: "test/busybox", - FileID: "test1", - Size: 100, - } - err = blobUploadService.Create(ctx, blobUploadObj) - assert.NoError(t, err) - - _, err = blobUploadService.TotalEtagsByUploadID(ctx, "test1") - assert.NoError(t, err) - - blobUploadObj1 := &models.BlobUpload{ - PartNumber: 2, - UploadID: "test1", - Etag: "test2", - Repository: "test/busybox", - FileID: "test2", - Size: 100, - } - err = blobUploadService.Create(ctx, blobUploadObj1) - assert.NoError(t, err) - - uploads1, err := blobUploadService.FindAllByUploadID(ctx, "test1") - assert.NoError(t, err) - assert.Len(t, uploads1, 2) - - upload1, err := blobUploadService.GetLastPart(ctx, "test1") - assert.NoError(t, err) - assert.Equal(t, blobUploadObj1.ID, upload1.ID) + blobUploadService := blobUploadServiceFactory.New() + blobUploadObj := &models.BlobUpload{ + PartNumber: 1, + UploadID: "test1", + Etag: "test1", + Repository: "test/busybox", + FileID: "test1", + Size: 100, + } + assert.NoError(t, blobUploadService.Create(ctx, blobUploadObj)) + + _, err := blobUploadService.TotalEtagsByUploadID(ctx, "test1") + assert.NoError(t, err) - etags1, err := blobUploadService.TotalEtagsByUploadID(ctx, "test1") - assert.NoError(t, err) - assert.Len(t, etags1, 1) + blobUploadObj1 := &models.BlobUpload{ + PartNumber: 2, + UploadID: "test1", + Etag: "test2", + Repository: "test/busybox", + FileID: "test2", + Size: 100, + } + assert.NoError(t, blobUploadService.Create(ctx, blobUploadObj1)) + + uploads1, err := blobUploadService.FindAllByUploadID(ctx, "test1") + assert.NoError(t, err) + assert.Len(t, uploads1, 2) - size, err := blobUploadService.TotalSizeByUploadID(ctx, "test1") - assert.NoError(t, err) - assert.Equal(t, int64(200), size) + upload1, err := blobUploadService.GetLastPart(ctx, "test1") + assert.NoError(t, err) + assert.Equal(t, blobUploadObj1.ID, upload1.ID) - err = blobUploadService.DeleteByUploadID(ctx, "test1") - assert.NoError(t, err) + etags1, err := blobUploadService.TotalEtagsByUploadID(ctx, "test1") + assert.NoError(t, err) + assert.Len(t, etags1, 1) - return nil - }) + size, err := blobUploadService.TotalSizeByUploadID(ctx, "test1") assert.NoError(t, err) + assert.Equal(t, int64(200), size) + + assert.NoError(t, blobUploadService.DeleteByUploadID(ctx, "test1")) } diff --git a/pkg/dal/dao/builder_test.go b/pkg/dal/dao/builder_test.go index 8d5cd9df..54d8cce3 100644 --- a/pkg/dal/dao/builder_test.go +++ b/pkg/dal/dao/builder_test.go @@ -25,8 +25,6 @@ import ( func TestBuilderServiceFactory(t *testing.T) { f := dao.NewBuilderServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } diff --git a/pkg/dal/dao/cache_test.go b/pkg/dal/dao/cache_test.go index 7b0b081f..ee651b8b 100644 --- a/pkg/dal/dao/cache_test.go +++ b/pkg/dal/dao/cache_test.go @@ -25,8 +25,6 @@ import ( func TestCacheServiceFactory(t *testing.T) { f := dao.NewCacheServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } diff --git a/pkg/dal/dao/code_repository_test.go b/pkg/dal/dao/code_repository_test.go index ab1acba3..5b491459 100644 --- a/pkg/dal/dao/code_repository_test.go +++ b/pkg/dal/dao/code_repository_test.go @@ -25,8 +25,6 @@ import ( func TestCodeRepositoryServiceFactory(t *testing.T) { f := dao.NewCodeRepositoryServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } diff --git a/pkg/dal/dao/daemon_test.go b/pkg/dal/dao/daemon_test.go index d97befe8..bb707665 100644 --- a/pkg/dal/dao/daemon_test.go +++ b/pkg/dal/dao/daemon_test.go @@ -25,8 +25,6 @@ import ( func TestDaemonServiceFactory(t *testing.T) { f := dao.NewDaemonServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } diff --git a/pkg/dal/dao/locker_test.go b/pkg/dal/dao/locker_test.go index aa89f240..89527741 100644 --- a/pkg/dal/dao/locker_test.go +++ b/pkg/dal/dao/locker_test.go @@ -25,8 +25,6 @@ import ( func TestLockerServiceFactory(t *testing.T) { f := dao.NewLockerServiceFactory() - artifactService := f.New() - assert.NotNil(t, artifactService) - artifactService = f.New(query.Q) - assert.NotNil(t, artifactService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } diff --git a/pkg/dal/dao/namespace_test.go b/pkg/dal/dao/namespace_test.go index ccc1cc68..defe37ba 100644 --- a/pkg/dal/dao/namespace_test.go +++ b/pkg/dal/dao/namespace_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "gorm.io/gorm" @@ -36,106 +35,84 @@ import ( func TestNamespaceServiceFactory(t *testing.T) { f := dao.NewNamespaceServiceFactory() - namespaceService := f.New() - assert.NotNil(t, namespaceService) - namespaceService = f.New(query.Q) - assert.NotNil(t, namespaceService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestNamespaceService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) - f := dao.NewNamespaceServiceFactory() - userServiceFactory := dao.NewUserServiceFactory() - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "namespace-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) - - namespaceService := f.New(tx) + namespaceServiceFactory := dao.NewNamespaceServiceFactory() + namespaceService := namespaceServiceFactory.New() - namespaceObj := &models.Namespace{ - Name: "test", - Visibility: enums.VisibilityPrivate, - } - err := namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + userServiceFactory := dao.NewUserServiceFactory() + userService := userServiceFactory.New() + userObj := &models.User{Username: "namespace-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - ns, err := namespaceService.Get(ctx, namespaceObj.ID) - assert.NoError(t, err) - assert.Equal(t, ns.ID, namespaceObj.ID) - assert.Equal(t, ns.Name, namespaceObj.Name) + namespaceObj := &models.Namespace{ + Name: "test", + Visibility: enums.VisibilityPrivate, + } + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - ns1, err := namespaceService.GetByName(ctx, "test") - assert.NoError(t, err) - assert.Equal(t, ns1.ID, namespaceObj.ID) - assert.Equal(t, ns1.Name, namespaceObj.Name) + ns, err := namespaceService.Get(ctx, namespaceObj.ID) + assert.NoError(t, err) + assert.Equal(t, ns.ID, namespaceObj.ID) + assert.Equal(t, ns.Name, namespaceObj.Name) - namespaceList, _, err := namespaceService.ListNamespace(ctx, ptr.Of("t"), types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(0)), - }, types.Sortable{}) - assert.NoError(t, err) - assert.Equal(t, len(namespaceList), int(1)) - - namespaceList, _, err = namespaceService.ListNamespace(ctx, ptr.Of("t"), types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(0)), - }, types.Sortable{ - Sort: ptr.Of("created_at"), - Method: ptr.Of(enums.SortMethodDesc), - }) - assert.NoError(t, err) - assert.Equal(t, len(namespaceList), int(1)) + ns1, err := namespaceService.GetByName(ctx, "test") + assert.NoError(t, err) + assert.Equal(t, ns1.ID, namespaceObj.ID) + assert.Equal(t, ns1.Name, namespaceObj.Name) - count, err := namespaceService.CountNamespace(ctx, ptr.Of("t")) - assert.NoError(t, err) - assert.Equal(t, count, int64(1)) + namespaceList, _, err := namespaceService.ListNamespace(ctx, ptr.Of("t"), types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(0)), + }, types.Sortable{}) + assert.NoError(t, err) + assert.Equal(t, len(namespaceList), int(1)) + + namespaceList, _, err = namespaceService.ListNamespace(ctx, ptr.Of("t"), types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(0)), + }, types.Sortable{ + Sort: ptr.Of("created_at"), + Method: ptr.Of(enums.SortMethodDesc), + }) + assert.NoError(t, err) + assert.Equal(t, len(namespaceList), int(1)) - err = namespaceService.UpdateByID(ctx, namespaceObj.ID, map[string]interface{}{query.Namespace.Description.ColumnName().String(): "test"}) - assert.NoError(t, err) + count, err := namespaceService.CountNamespace(ctx, ptr.Of("t")) + assert.NoError(t, err) + assert.Equal(t, count, int64(1)) - err = namespaceService.DeleteByID(ctx, namespaceObj.ID) - assert.NoError(t, err) + assert.NoError(t, namespaceService.UpdateByID(ctx, namespaceObj.ID, map[string]interface{}{query.Namespace.Description.ColumnName().String(): "test"})) - err = namespaceService.DeleteByID(ctx, 10) - assert.ErrorIs(t, err, gorm.ErrRecordNotFound) + assert.NoError(t, namespaceService.DeleteByID(ctx, namespaceObj.ID)) - return nil - }) - assert.NoError(t, err) + assert.ErrorIs(t, namespaceService.DeleteByID(ctx, 10), gorm.ErrRecordNotFound) } func TestNamespaceServiceQuota(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -143,27 +120,18 @@ func TestNamespaceServiceQuota(t *testing.T) { namespaceServiceFactory := dao.NewNamespaceServiceFactory() userServiceFactory := dao.NewUserServiceFactory() - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) + userService := userServiceFactory.New() + userObj := &models.User{Username: "artifact-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - namespaceService := namespaceServiceFactory.New(tx) + namespaceService := namespaceServiceFactory.New() - namespaceObj := &models.Namespace{ - Name: "test", - } - err := namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + namespaceObj := &models.Namespace{ + Name: "test", + } + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - err = namespaceService.UpdateQuota(ctx, namespaceObj.ID, 100) - assert.NoError(t, err) - - err = namespaceService.UpdateQuota(ctx, 10, 100) - assert.ErrorIs(t, err, gorm.ErrRecordNotFound) + assert.NoError(t, namespaceService.UpdateQuota(ctx, namespaceObj.ID, 100)) - return nil - }) - assert.NoError(t, err) + assert.ErrorIs(t, namespaceService.UpdateQuota(ctx, 10, 100), gorm.ErrRecordNotFound) } diff --git a/pkg/dal/dao/repository_test.go b/pkg/dal/dao/repository_test.go index e58aae8a..4c593dab 100644 --- a/pkg/dal/dao/repository_test.go +++ b/pkg/dal/dao/repository_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -35,19 +34,14 @@ import ( func TestRepositoryServiceFactory(t *testing.T) { f := dao.NewRepositoryServiceFactory() - repositoryService := f.New() - assert.NotNil(t, repositoryService) - repositoryService = f.New(query.Q) - assert.NotNil(t, repositoryService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestRepositoryService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) @@ -61,58 +55,46 @@ func TestRepositoryService(t *testing.T) { repositoryServiceFactory := dao.NewRepositoryServiceFactory() userServiceFactory := dao.NewUserServiceFactory() - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "repository-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) + userService := userServiceFactory.New() + userObj := &models.User{Username: "repository-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) + namespaceService := namespaceServiceFactory.New() + namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) + repositoryService := repositoryServiceFactory.New() + repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) - namespaceObj1 := &models.Namespace{Name: "test1", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj1) - assert.NoError(t, err) - err = repositoryService.Create(ctx, &models.Repository{Name: "test1/busybox"}, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - - count1, err := repositoryService.CountRepository(ctx, namespaceObj.ID, nil) - assert.NoError(t, err) - assert.Equal(t, count1, int64(1)) + namespaceObj1 := &models.Namespace{Name: "test1", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj1)) + assert.NoError(t, repositoryService.Create(ctx, &models.Repository{Name: "test1/busybox"}, dao.AutoCreateNamespace{UserID: userObj.ID})) - repository1, err := repositoryService.Get(ctx, repositoryObj.ID) - assert.NoError(t, err) - assert.Equal(t, repositoryObj.ID, repository1.ID) + count1, err := repositoryService.CountRepository(ctx, namespaceObj.ID, nil) + assert.NoError(t, err) + assert.Equal(t, count1, int64(1)) - repository2, err := repositoryService.GetByName(ctx, "test/busybox") - assert.NoError(t, err) - assert.Equal(t, repositoryObj.ID, repository2.ID) + repository1, err := repositoryService.Get(ctx, repositoryObj.ID) + assert.NoError(t, err) + assert.Equal(t, repositoryObj.ID, repository1.ID) - repositories1, count, err := repositoryService.ListRepository(ctx, namespaceObj.ID, nil, types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(1)), - }, types.Sortable{Sort: ptr.Of("created_at"), Method: ptr.Of(enums.SortMethodAsc)}) - assert.NoError(t, err) - assert.Equal(t, int64(len(repositories1)), count) + repository2, err := repositoryService.GetByName(ctx, "test/busybox") + assert.NoError(t, err) + assert.Equal(t, repositoryObj.ID, repository2.ID) - repositories2, err := repositoryService.ListByDtPagination(ctx, 100, 1) - assert.NoError(t, err) - assert.Equal(t, len(repositories2), int(1)) + repositories1, count, err := repositoryService.ListRepository(ctx, namespaceObj.ID, nil, types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(1)), + }, types.Sortable{Sort: ptr.Of("created_at"), Method: ptr.Of(enums.SortMethodAsc)}) + assert.NoError(t, err) + assert.Equal(t, int64(len(repositories1)), count) - err = repositoryService.UpdateRepository(ctx, repository1.ID, map[string]any{"description": ptr.Of("test"), "overview": []byte("test")}) - assert.NoError(t, err) + repositories2, err := repositoryService.ListByDtPagination(ctx, 100, 1) + assert.NoError(t, err) + assert.Equal(t, len(repositories2), int(1)) - err = repositoryService.DeleteByID(ctx, repositoryObj.ID) - assert.NoError(t, err) + assert.NoError(t, repositoryService.UpdateRepository(ctx, repository1.ID, map[string]any{"description": ptr.Of("test"), "overview": []byte("test")})) - return nil - }) - assert.NoError(t, err) + assert.NoError(t, repositoryService.DeleteByID(ctx, repositoryObj.ID)) } diff --git a/pkg/dal/dao/setting_test.go b/pkg/dal/dao/setting_test.go index d7c2b090..ac75ebb2 100644 --- a/pkg/dal/dao/setting_test.go +++ b/pkg/dal/dao/setting_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -38,19 +37,14 @@ func TestSettingServiceFactory(t *testing.T) { } func TestSettingService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -59,8 +53,7 @@ func TestSettingService(t *testing.T) { settingService := settingServiceFactory.New() assert.NotNil(t, settingService) - err = settingService.Create(ctx, "key", []byte("val")) - assert.NoError(t, err) + assert.NoError(t, settingService.Create(ctx, "key", []byte("val"))) settingObj, err := settingService.Get(ctx, "key") assert.NoError(t, err) @@ -68,8 +61,7 @@ func TestSettingService(t *testing.T) { assert.Equal(t, "key", settingObj.Key) assert.Equal(t, []byte("val"), settingObj.Val) - err = settingService.Update(ctx, "key", []byte("new")) - assert.NoError(t, err) + assert.NoError(t, settingService.Update(ctx, "key", []byte("new"))) settingObj, err = settingService.Get(ctx, "key") assert.NoError(t, err) @@ -77,6 +69,5 @@ func TestSettingService(t *testing.T) { assert.Equal(t, "key", settingObj.Key) assert.Equal(t, []byte("new"), settingObj.Val) - err = settingService.Delete(ctx, "key") - assert.NoError(t, err) + assert.NoError(t, settingService.Delete(ctx, "key")) } diff --git a/pkg/dal/dao/tag_test.go b/pkg/dal/dao/tag_test.go index aef8ec6a..118cd024 100644 --- a/pkg/dal/dao/tag_test.go +++ b/pkg/dal/dao/tag_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "gorm.io/gorm" @@ -43,145 +42,126 @@ func TestTagServiceFactory(t *testing.T) { } func TestTagService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) - tagServiceFactory := dao.NewTagServiceFactory() - namespaceServiceFactory := dao.NewNamespaceServiceFactory() - repositoryServiceFactory := dao.NewRepositoryServiceFactory() - userServiceFactory := dao.NewUserServiceFactory() - - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "tag-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) - - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} - err = namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) - - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - - tagService := tagServiceFactory.New(tx) - tagObj := &models.Tag{ - RepositoryID: repositoryObj.ID, - Name: "latest", - Artifact: &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:xxx", - Size: 123, - ContentType: "test", - Raw: []byte("test"), - Type: enums.ArtifactTypeImage, - }, - } - err = tagService.Create(ctx, tagObj) - assert.NoError(t, err) + userService := dao.NewUserServiceFactory().New() + namespaceService := dao.NewNamespaceServiceFactory().New() + repositoryService := dao.NewRepositoryServiceFactory().New() + artirfactService := dao.NewArtifactServiceFactory().New() - tag1, err := tagService.GetByID(ctx, tagObj.ID) - assert.NoError(t, err) - assert.Equal(t, tag1.ID, tagObj.ID) + userObj := &models.User{Username: "tag-service", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) - tag2, err := tagService.GetByName(ctx, repositoryObj.ID, "latest") - assert.NoError(t, err) - assert.Equal(t, tag2.ID, tagObj.ID) + namespaceObj := &models.Namespace{Name: "test", Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) - err = tagService.Incr(ctx, tagObj.ID) - assert.NoError(t, err) - tag3, err := tagService.GetByID(ctx, tagObj.ID) - assert.NoError(t, err) - assert.Equal(t, tag3.PullTimes, int64(1)) + repositoryObj := &models.Repository{Name: "test/busybox", NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) - tags1, _, err := tagService.ListTag(ctx, repositoryObj.ID, nil, nil, types.Pagination{ - Limit: ptr.Of(int(100)), - Page: ptr.Of(int(0)), - }, types.Sortable{}) - assert.NoError(t, err) - assert.Equal(t, len(tags1), int(1)) - - // count1, err := tagService.CountTag(ctx, types.ListTagRequest{ - // Pagination: types.Pagination{ - // Limit: ptr.Of(int(100)), - // Page: ptr.Of(int(0)), - // }, - // Repository: "test/busybox", - // }) - // assert.NoError(t, err) - // assert.Equal(t, count1, int64(1)) - - err = tagService.DeleteByName(ctx, repositoryObj.ID, "latest") - assert.NoError(t, err) - - artifactObj := &models.Artifact{ + tagService := dao.NewTagServiceFactory().New() + tagObj := &models.Tag{ + RepositoryID: repositoryObj.ID, + Name: "latest", + Artifact: &models.Artifact{ RepositoryID: repositoryObj.ID, - Digest: "sha256:xxxxx", + Digest: "sha256:xxx", Size: 123, ContentType: "test", Raw: []byte("test"), - } - err = tx.Artifact.WithContext(ctx).Create(artifactObj) - assert.NoError(t, err) + Type: enums.ArtifactTypeImage, + }, + } + assert.NoError(t, tagService.Create(ctx, tagObj)) - tagObj1 := &models.Tag{ - RepositoryID: repositoryObj.ID, - Name: "latest1", - Artifact: artifactObj, - } - err = tagService.Create(ctx, tagObj1) - assert.NoError(t, err) + tag1, err := tagService.GetByID(ctx, tagObj.ID) + assert.NoError(t, err) + assert.Equal(t, tag1.ID, tagObj.ID) - err = tagService.DeleteByID(ctx, tagObj1.ID) - assert.NoError(t, err) + tag2, err := tagService.GetByName(ctx, repositoryObj.ID, "latest") + assert.NoError(t, err) + assert.Equal(t, tag2.ID, tagObj.ID) - err = tagService.DeleteByID(ctx, 10) - assert.ErrorIs(t, err, gorm.ErrRecordNotFound) + err = tagService.Incr(ctx, tagObj.ID) + assert.NoError(t, err) + tag3, err := tagService.GetByID(ctx, tagObj.ID) + assert.NoError(t, err) + assert.Equal(t, tag3.PullTimes, int64(1)) - artifactObj2 := &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:xxxxxxxx", - Size: 123, - ContentType: "test", - Raw: []byte("test"), - } - err = tx.Artifact.WithContext(ctx).Create(artifactObj2) - assert.NoError(t, err) - tagObj2 := &models.Tag{ - RepositoryID: repositoryObj.ID, - Name: "latest1", - Artifact: artifactObj2, - } - err = tagService.Create(ctx, tagObj2) - assert.NoError(t, err) + tags1, _, err := tagService.ListTag(ctx, repositoryObj.ID, nil, nil, types.Pagination{ + Limit: ptr.Of(int(100)), + Page: ptr.Of(int(0)), + }, types.Sortable{}) + assert.NoError(t, err) + assert.Equal(t, len(tags1), int(1)) + + // count1, err := tagService.CountTag(ctx, types.ListTagRequest{ + // Pagination: types.Pagination{ + // Limit: ptr.Of(int(100)), + // Page: ptr.Of(int(0)), + // }, + // Repository: "test/busybox", + // }) + // assert.NoError(t, err) + // assert.Equal(t, count1, int64(1)) + + err = tagService.DeleteByName(ctx, repositoryObj.ID, "latest") + assert.NoError(t, err) - tags2, err := tagService.ListByDtPagination(ctx, "test/busybox", 10, 1) - assert.NoError(t, err) - assert.Equal(t, len(tags2), int(1)) + artifactObj := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:xxxxx", + Size: 123, + ContentType: "test", + Raw: []byte("test"), + } + assert.NoError(t, artirfactService.Create(ctx, artifactObj)) + + tagObj1 := &models.Tag{ + RepositoryID: repositoryObj.ID, + Name: "latest1", + Artifact: artifactObj, + } + err = tagService.Create(ctx, tagObj1) + assert.NoError(t, err) - tagCount1, err := tagService.CountByArtifact(ctx, []int64{tagObj2.ArtifactID}) - assert.NoError(t, err) - assert.Equal(t, len(tagCount1), int(1)) - assert.Equal(t, tagCount1[tagObj2.ArtifactID], int64(1)) + err = tagService.DeleteByID(ctx, tagObj1.ID) + assert.NoError(t, err) + + err = tagService.DeleteByID(ctx, 10) + assert.ErrorIs(t, err, gorm.ErrRecordNotFound) + + artifactObj2 := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:xxxxxxxx", + Size: 123, + ContentType: "test", + Raw: []byte("test"), + } + assert.NoError(t, artirfactService.Create(ctx, artifactObj2)) + + tagObj2 := &models.Tag{ + RepositoryID: repositoryObj.ID, + Name: "latest1", + Artifact: artifactObj2, + } + assert.NoError(t, tagService.Create(ctx, tagObj2)) + + tags2, err := tagService.ListByDtPagination(ctx, "test/busybox", 10, 1) + assert.NoError(t, err) + assert.Equal(t, len(tags2), int(1)) - return nil - }) + tagCount1, err := tagService.CountByArtifact(ctx, []int64{tagObj2.ArtifactID}) assert.NoError(t, err) + assert.Equal(t, len(tagCount1), int(1)) + assert.Equal(t, tagCount1[tagObj2.ArtifactID], int64(1)) } diff --git a/pkg/dal/dao/user_test.go b/pkg/dal/dao/user_test.go index 5dbfd695..c230b2ae 100644 --- a/pkg/dal/dao/user_test.go +++ b/pkg/dal/dao/user_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -33,44 +32,31 @@ import ( func TestUserServiceFactory(t *testing.T) { f := dao.NewUserServiceFactory() - userService := f.New() - assert.NotNil(t, userService) - userService = f.New(query.Q) - assert.NotNil(t, userService) + assert.NotNil(t, f.New()) + assert.NotNil(t, f.New(query.Q)) } func TestUserGetByUsername(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() - userServiceFactory := dao.NewUserServiceFactory() - ctx := log.Logger.WithContext(context.Background()) - err = query.Q.Transaction(func(tx *query.Query) error { - userService := userServiceFactory.New(tx) - assert.NotNil(t, userService) - err := userService.Create(ctx, &models.User{Username: "test-case", Password: ptr.Of("test-case"), Email: ptr.Of("email")}) - assert.NoError(t, err) - testUser, err := userService.GetByUsername(ctx, "test-case") - assert.NoError(t, err) - assert.Equal(t, ptr.To(testUser.Password), "test-case") - total, err := userService.Count(ctx) - assert.NoError(t, err) - assert.Equal(t, total, int64(1)) - return nil - }) + userService := dao.NewUserServiceFactory().New() + assert.NotNil(t, userService) + assert.NoError(t, userService.Create(ctx, &models.User{Username: "test-case", Password: ptr.Of("test-case"), Email: ptr.Of("email")})) + + testUser, err := userService.GetByUsername(ctx, "test-case") + assert.NoError(t, err) + assert.Equal(t, ptr.To(testUser.Password), "test-case") + total, err := userService.Count(ctx) assert.NoError(t, err) + assert.Equal(t, total, int64(1)) } diff --git a/pkg/dal/dao/webhook_test.go b/pkg/dal/dao/webhook_test.go index 459d942e..24d87e9a 100644 --- a/pkg/dal/dao/webhook_test.go +++ b/pkg/dal/dao/webhook_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -29,23 +28,17 @@ import ( ) func TestWebhook(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() - f := dao.NewWebhookServiceFactory() - webhookService := f.New() + webhookService := dao.NewWebhookServiceFactory().New() ctx := log.Logger.WithContext(context.Background()) diff --git a/pkg/dal/dao/workq_test.go b/pkg/dal/dao/workq_test.go index 1339b968..4d32fdc6 100644 --- a/pkg/dal/dao/workq_test.go +++ b/pkg/dal/dao/workq_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/rs/zerolog/log" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/go-sigma/sigma/pkg/dal" @@ -40,19 +39,14 @@ func TestWorkQueueServiceFactory(t *testing.T) { } func TestWorkQueueService(t *testing.T) { - viper.SetDefault("log.level", "debug") logger.SetLevel("debug") - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -66,11 +60,9 @@ func TestWorkQueueService(t *testing.T) { Payload: []byte("payload"), Version: "version", } - err = workqService.Create(ctx, workqObj) - assert.NoError(t, err) + assert.NoError(t, workqService.Create(ctx, workqObj)) - err = workqService.UpdateStatus(ctx, workqObj.ID, "version", "newVersion", 1, enums.TaskCommonStatusPending) - assert.NoError(t, err) + assert.NoError(t, workqService.UpdateStatus(ctx, workqObj.ID, "version", "newVersion", 1, enums.TaskCommonStatusPending)) workqNewObj, err := workqService.Get(ctx, enums.DaemonGc) assert.NoError(t, err) diff --git a/pkg/dal/migrate.go b/pkg/dal/migrate.go index e5284703..0431a244 100644 --- a/pkg/dal/migrate.go +++ b/pkg/dal/migrate.go @@ -19,12 +19,11 @@ import ( "fmt" "github.com/golang-migrate/migrate/v4" + "github.com/golang-migrate/migrate/v4/database/mysql" + "github.com/golang-migrate/migrate/v4/database/postgres" + "github.com/golang-migrate/migrate/v4/database/sqlite3" "github.com/golang-migrate/migrate/v4/source/iofs" "github.com/rs/zerolog/log" - - _ "github.com/golang-migrate/migrate/v4/database/mysql" - _ "github.com/golang-migrate/migrate/v4/database/postgres" - _ "github.com/golang-migrate/migrate/v4/database/sqlite3" ) //go:embed migrations/mysql/*.sql @@ -36,12 +35,20 @@ var postgresqlFS embed.FS //go:embed migrations/sqlite3/*.sql var sqliteFS embed.FS -func migrateMysql(dsn string) error { +func migrateMysql(database string) error { d, err := iofs.New(mysqlFS, "migrations/mysql") if err != nil { return err } - m, err := migrate.NewWithSourceInstance("iofs", d, fmt.Sprintf("mysql://%s", dsn)) + rawDB, err := DB.DB() + if err != nil { + return fmt.Errorf("get raw db instance failed") + } + migrateDriver, err := mysql.WithInstance(rawDB, &mysql.Config{}) + if err != nil { + return fmt.Errorf("get migrate driver failed") + } + m, err := migrate.NewWithInstance("iofs", d, database, migrateDriver) if err != nil { return err } @@ -57,12 +64,20 @@ func migrateMysql(dsn string) error { return nil } -func migratePostgres(dsn string) error { +func migratePostgres(database string) error { d, err := iofs.New(postgresqlFS, "migrations/postgresql") if err != nil { return err } - m, err := migrate.NewWithSourceInstance("iofs", d, fmt.Sprintf("postgres://%s", dsn)) + rawDB, err := DB.DB() + if err != nil { + return fmt.Errorf("get raw db instance failed") + } + migrateDriver, err := postgres.WithInstance(rawDB, &postgres.Config{}) + if err != nil { + return fmt.Errorf("get migrate driver failed") + } + m, err := migrate.NewWithInstance("iofs", d, database, migrateDriver) if err != nil { return err } @@ -78,12 +93,20 @@ func migratePostgres(dsn string) error { return nil } -func migrateSqlite(dsn string) error { +func migrateSqlite() error { d, err := iofs.New(sqliteFS, "migrations/sqlite3") if err != nil { return err } - m, err := migrate.NewWithSourceInstance("iofs", d, fmt.Sprintf("sqlite3://%s", dsn)) + rawDB, err := DB.DB() + if err != nil { + return fmt.Errorf("get raw db instance failed") + } + migrateDriver, err := sqlite3.WithInstance(rawDB, &sqlite3.Config{}) + if err != nil { + return fmt.Errorf("get migrate driver failed") + } + m, err := migrate.NewWithInstance("iofs", d, "", migrateDriver) if err != nil { return err } diff --git a/pkg/dal/migrations/mysql/0001_initialize.up.sql b/pkg/dal/migrations/mysql/0001_initialize.up.sql index c42684b6..12bb3eec 100644 --- a/pkg/dal/migrations/mysql/0001_initialize.up.sql +++ b/pkg/dal/migrations/mysql/0001_initialize.up.sql @@ -136,6 +136,7 @@ CREATE TABLE IF NOT EXISTS `audits` ( CREATE TABLE IF NOT EXISTS `repositories` ( `id` bigint AUTO_INCREMENT PRIMARY KEY, + `namespace_id` bigint NOT NULL, `name` varchar(64) NOT NULL, `description` varchar(255), `overview` BLOB, @@ -143,7 +144,6 @@ CREATE TABLE IF NOT EXISTS `repositories` ( `size` bigint NOT NULL DEFAULT 0, `tag_limit` bigint NOT NULL DEFAULT 0, `tag_count` bigint NOT NULL DEFAULT 0, - `namespace_id` bigint NOT NULL, `created_at` bigint NOT NULL DEFAULT (UNIX_TIMESTAMP (CURRENT_TIMESTAMP()) * 1000), `updated_at` bigint NOT NULL DEFAULT (UNIX_TIMESTAMP (CURRENT_TIMESTAMP()) * 1000), `deleted_at` bigint NOT NULL DEFAULT 0, diff --git a/pkg/dal/migrations/mysql/0003_upgrade.up.sql b/pkg/dal/migrations/mysql/0003_upgrade.up.sql index 039242ed..86d5cbb9 100644 --- a/pkg/dal/migrations/mysql/0003_upgrade.up.sql +++ b/pkg/dal/migrations/mysql/0003_upgrade.up.sql @@ -9,3 +9,8 @@ CREATE TABLE IF NOT EXISTS `lockers` ( CONSTRAINT `idx_lockers_key` UNIQUE (`key`, `deleted_at`) ); +ALTER TABLE `artifacts` + ADD COLUMN `namespace_id` bigint NOT NULL AFTER `id`; + +ALTER TABLE `artifacts` + ADD CONSTRAINT FOREIGN KEY (`namespace_id`) REFERENCES `namespaces` (`id`) diff --git a/pkg/dal/migrations/postgresql/0001_initialize.up.sql b/pkg/dal/migrations/postgresql/0001_initialize.up.sql index edc2f948..170b429e 100644 --- a/pkg/dal/migrations/postgresql/0001_initialize.up.sql +++ b/pkg/dal/migrations/postgresql/0001_initialize.up.sql @@ -275,6 +275,7 @@ CREATE TYPE artifact_type AS ENUM ( CREATE TABLE IF NOT EXISTS "artifacts" ( "id" bigserial PRIMARY KEY, + "namespace_id" bigint NOT NULL, "repository_id" bigint NOT NULL, "digest" varchar(256) NOT NULL, "size" bigint NOT NULL DEFAULT 0, @@ -291,6 +292,7 @@ CREATE TABLE IF NOT EXISTS "artifacts" ( "created_at" bigint NOT NULL DEFAULT ((EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000)::bigint), "updated_at" bigint NOT NULL DEFAULT ((EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000)::bigint), "deleted_at" bigint NOT NULL DEFAULT 0, + FOREIGN KEY ("namespace_id") REFERENCES "namespaces" ("id"), FOREIGN KEY ("repository_id") REFERENCES "repositories" ("id"), FOREIGN KEY ("referrer_id") REFERENCES "artifacts" ("id"), CONSTRAINT "artifacts_unique_with_repo" UNIQUE ("repository_id", "digest", "deleted_at") diff --git a/pkg/dal/migrations/sqlite3/0001_initialize.up.sql b/pkg/dal/migrations/sqlite3/0001_initialize.up.sql index a2ba215c..d59a8e1f 100644 --- a/pkg/dal/migrations/sqlite3/0001_initialize.up.sql +++ b/pkg/dal/migrations/sqlite3/0001_initialize.up.sql @@ -156,6 +156,7 @@ CREATE TABLE IF NOT EXISTS `repositories` ( CREATE TABLE IF NOT EXISTS `artifacts` ( `id` integer PRIMARY KEY AUTOINCREMENT, + `namespace_id` integer NOT NULL, `repository_id` integer NOT NULL, `digest` varchar(256) NOT NULL, `size` integer NOT NULL DEFAULT 0, @@ -172,6 +173,7 @@ CREATE TABLE IF NOT EXISTS `artifacts` ( `created_at` integer NOT NULL DEFAULT (unixepoch () * 1000), `updated_at` integer NOT NULL DEFAULT (unixepoch () * 1000), `deleted_at` bigint NOT NULL DEFAULT 0, + FOREIGN KEY (`namespace_id`) REFERENCES `namespaces` (`id`), FOREIGN KEY (`repository_id`) REFERENCES `repositories` (`id`), FOREIGN KEY (`referrer_id`) REFERENCES `artifacts` (`id`), CONSTRAINT `artifacts_unique_with_repo` UNIQUE (`repository_id`, `digest`, `deleted_at`) diff --git a/pkg/dal/models/artifact.go b/pkg/dal/models/artifact.go index 2fc7bd12..e76c1704 100644 --- a/pkg/dal/models/artifact.go +++ b/pkg/dal/models/artifact.go @@ -16,11 +16,9 @@ package models import ( "gorm.io/gen" - "gorm.io/gorm" "gorm.io/plugin/soft_delete" "github.com/go-sigma/sigma/pkg/types/enums" - "github.com/go-sigma/sigma/pkg/xerrors" ) // Artifact represents an artifact @@ -30,6 +28,9 @@ type Artifact struct { DeletedAt soft_delete.DeletedAt `gorm:"softDelete:milli"` ID int64 `gorm:"primaryKey"` + NamespaceID int64 + Namespace Namespace + RepositoryID int64 Repository Repository @@ -74,89 +75,89 @@ type ArtifactAssociated interface { ArtifactAssociated(artifactID int64) (gen.M, error) } -// AfterCreate ... -func (a *Artifact) BeforeCreate(tx *gorm.DB) error { - if a == nil { - return nil - } - var repositoryObj Repository - err := tx.Model(&Repository{}).Where(&Repository{ID: a.RepositoryID}).First(&repositoryObj).Error - if err != nil { - return err - } - var namespaceObj Namespace - err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).First(&namespaceObj).Error - if err != nil { - return err - } - if namespaceObj.SizeLimit > 0 && namespaceObj.Size+a.BlobsSize > namespaceObj.SizeLimit { - return xerrors.GenDSErrCodeResourceSizeQuotaExceedNamespace(namespaceObj.Name, namespaceObj.Size, namespaceObj.SizeLimit, a.BlobsSize) - } - if repositoryObj.SizeLimit > 0 && repositoryObj.Size+a.BlobsSize > repositoryObj.SizeLimit { - return xerrors.GenDSErrCodeResourceSizeQuotaExceedRepository(repositoryObj.Name, repositoryObj.Size, repositoryObj.SizeLimit, a.BlobsSize) - } - - // we should check all the checker here, and update the size and tag count - err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).UpdateColumns( - map[string]any{ - "size": namespaceObj.Size + a.BlobsSize, - }).Error - if err != nil { - return err - } - err = tx.Model(&Repository{}).Where(&Repository{ID: repositoryObj.ID}).UpdateColumns(map[string]any{ - "size": repositoryObj.Size + a.BlobsSize, - }).Error - if err != nil { - return err - } - return nil -} - -// BeforeUpdate ... -func (a *Artifact) BeforeUpdate(tx *gorm.DB) error { - if a == nil { - return nil - } - var repositoryObj Repository - err := tx.Model(&Repository{}).Where("id = ?", a.RepositoryID).First(&repositoryObj).Error - if err != nil { - return err - } - - err = tx.Exec(`UPDATE - namespaces -SET - size = ( - SELECT - SUM(artifacts.blobs_size) - FROM - repositories - INNER JOIN artifacts ON repositories.id = artifacts.repository_id - WHERE - repositories.namespace_id = ?) -WHERE - id = ?`, repositoryObj.NamespaceID, repositoryObj.NamespaceID).Error - if err != nil { - return err - } - err = tx.Exec(`UPDATE - repositories -SET - size = ( - SELECT - SUM(size) - FROM - artifacts - WHERE - artifacts.repository_id = ?) -WHERE - id = ?`, repositoryObj.ID, repositoryObj.ID).Error - if err != nil { - return err - } - return nil -} +// // AfterCreate ... +// func (a *Artifact) BeforeCreate(tx *gorm.DB) error { +// if a == nil { +// return nil +// } +// var repositoryObj Repository +// err := tx.Model(&Repository{}).Where(&Repository{ID: a.RepositoryID}).First(&repositoryObj).Error +// if err != nil { +// return err +// } +// var namespaceObj Namespace +// err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).First(&namespaceObj).Error +// if err != nil { +// return err +// } +// if namespaceObj.SizeLimit > 0 && namespaceObj.Size+a.BlobsSize > namespaceObj.SizeLimit { +// return xerrors.GenDSErrCodeResourceSizeQuotaExceedNamespace(namespaceObj.Name, namespaceObj.Size, namespaceObj.SizeLimit, a.BlobsSize) +// } +// if repositoryObj.SizeLimit > 0 && repositoryObj.Size+a.BlobsSize > repositoryObj.SizeLimit { +// return xerrors.GenDSErrCodeResourceSizeQuotaExceedRepository(repositoryObj.Name, repositoryObj.Size, repositoryObj.SizeLimit, a.BlobsSize) +// } + +// // we should check all the checker here, and update the size and tag count +// err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).UpdateColumns( +// map[string]any{ +// "size": namespaceObj.Size + a.BlobsSize, +// }).Error +// if err != nil { +// return err +// } +// err = tx.Model(&Repository{}).Where(&Repository{ID: repositoryObj.ID}).UpdateColumns(map[string]any{ +// "size": repositoryObj.Size + a.BlobsSize, +// }).Error +// if err != nil { +// return err +// } +// return nil +// } + +// // BeforeUpdate ... +// func (a *Artifact) BeforeUpdate(tx *gorm.DB) error { +// if a == nil { +// return nil +// } +// var repositoryObj Repository +// err := tx.Model(&Repository{}).Where("id = ?", a.RepositoryID).First(&repositoryObj).Error +// if err != nil { +// return err +// } + +// err = tx.Exec(`UPDATE +// namespaces +// SET +// size = ( +// SELECT +// SUM(artifacts.blobs_size) +// FROM +// repositories +// INNER JOIN artifacts ON repositories.id = artifacts.repository_id +// WHERE +// repositories.namespace_id = ?) +// WHERE +// id = ?`, repositoryObj.NamespaceID, repositoryObj.NamespaceID).Error +// if err != nil { +// return err +// } +// err = tx.Exec(`UPDATE +// repositories +// SET +// size = ( +// SELECT +// SUM(size) +// FROM +// artifacts +// WHERE +// artifacts.repository_id = ?) +// WHERE +// id = ?`, repositoryObj.ID, repositoryObj.ID).Error +// if err != nil { +// return err +// } +// return nil +// } // ArtifactSbom represents an artifact sbom type ArtifactSbom struct { diff --git a/pkg/dal/models/builder.go b/pkg/dal/models/builder.go index 5ea2bc0a..bd5a9e5a 100644 --- a/pkg/dal/models/builder.go +++ b/pkg/dal/models/builder.go @@ -17,11 +17,9 @@ package models import ( "time" - "gorm.io/gorm" "gorm.io/plugin/soft_delete" "github.com/go-sigma/sigma/pkg/types/enums" - "github.com/go-sigma/sigma/pkg/utils/ptr" ) // Builder represents a builder @@ -98,33 +96,33 @@ type BuilderRunner struct { Builder Builder } -// AfterUpdate ... -func (b *BuilderRunner) AfterUpdate(tx *gorm.DB) error { - if b == nil { - return nil - } - - var runnerObj BuilderRunner - err := tx.Model(&BuilderRunner{}).Where("id = ?", b.ID).First(&runnerObj).Error - if err != nil { - return err - } - - if runnerObj.Duration != nil { - return nil - } - - if runnerObj.StartedAt != nil && runnerObj.EndedAt != nil { - var duration = ptr.To(runnerObj.EndedAt) - ptr.To(runnerObj.StartedAt) - err = tx.Model(&BuilderRunner{}).Where("id = ?", b.ID).Updates( - map[string]any{ - "duration": duration, - "id": b.ID, // here will trigger the after update hook, so the id is needed - }).Error - if err != nil { - return err - } - } - - return nil -} +// // AfterUpdate ... +// func (b *BuilderRunner) AfterUpdate(tx *gorm.DB) error { +// if b == nil { +// return nil +// } + +// var runnerObj BuilderRunner +// err := tx.Model(&BuilderRunner{}).Where("id = ?", b.ID).First(&runnerObj).Error +// if err != nil { +// return err +// } + +// if runnerObj.Duration != nil { +// return nil +// } + +// if runnerObj.StartedAt != nil && runnerObj.EndedAt != nil { +// var duration = ptr.To(runnerObj.EndedAt) - ptr.To(runnerObj.StartedAt) +// err = tx.Model(&BuilderRunner{}).Where("id = ?", b.ID).Updates( +// map[string]any{ +// "duration": duration, +// "id": b.ID, // here will trigger the after update hook, so the id is needed +// }).Error +// if err != nil { +// return err +// } +// } + +// return nil +// } diff --git a/pkg/dal/models/namespace.go b/pkg/dal/models/namespace.go index 4bc6f283..a49f3d25 100644 --- a/pkg/dal/models/namespace.go +++ b/pkg/dal/models/namespace.go @@ -15,9 +15,6 @@ package models import ( - "strings" - - "gorm.io/gorm" "gorm.io/plugin/soft_delete" "github.com/go-sigma/sigma/pkg/types/enums" @@ -50,18 +47,18 @@ func init() { policyStatements = append(policyStatements, policyStatement1) } -func policyStatement(namespaceName string) string { - var result string - for _, p := range policyStatements { - result += strings.ReplaceAll(p, "^_^Namespace^_^", namespaceName) - } - return result -} +// func policyStatement(namespaceName string) string { +// var result string +// for _, p := range policyStatements { +// result += strings.ReplaceAll(p, "^_^Namespace^_^", namespaceName) +// } +// return result +// } // BeforeCreate ... -func (n *Namespace) BeforeCreate(tx *gorm.DB) error { - if n == nil || n.ID == 0 { - return nil - } - return tx.Exec(policyStatement(n.Name)).Error -} +// func (n *Namespace) BeforeCreate(tx *gorm.DB) error { +// if n == nil || n.ID == 0 { +// return nil +// } +// return tx.Exec(policyStatement(n.Name)).Error +// } diff --git a/pkg/dal/models/repository.go b/pkg/dal/models/repository.go index 18664cdf..c48412a9 100644 --- a/pkg/dal/models/repository.go +++ b/pkg/dal/models/repository.go @@ -15,10 +15,7 @@ package models import ( - "gorm.io/gorm" "gorm.io/plugin/soft_delete" - - "github.com/go-sigma/sigma/pkg/xerrors" ) // Repository represents a repository @@ -41,48 +38,48 @@ type Repository struct { Builder *Builder } -// BeforeCreate ... -func (a *Repository) BeforeCreate(tx *gorm.DB) error { - if a == nil { - return nil - } - var namespaceObj Namespace - err := tx.Model(&Namespace{}).Where(&Namespace{ID: a.NamespaceID}).First(&namespaceObj).Error - if err != nil { - return err - } - if namespaceObj.RepositoryLimit > 0 && namespaceObj.RepositoryCount+1 > namespaceObj.RepositoryLimit { - return xerrors.GenDSErrCodeResourceCountQuotaExceedNamespaceRepository(namespaceObj.Name, namespaceObj.RepositoryLimit) - } - err = tx.Model(&Namespace{}).Where(&Namespace{ID: a.NamespaceID}).UpdateColumns( - map[string]any{ - "repository_count": namespaceObj.RepositoryCount + 1, - }).Error - if err != nil { - return err - } - return nil -} +// // BeforeCreate ... +// func (a *Repository) BeforeCreate(tx *gorm.DB) error { +// if a == nil { +// return nil +// } +// var namespaceObj Namespace +// err := tx.Model(&Namespace{}).Where(&Namespace{ID: a.NamespaceID}).First(&namespaceObj).Error +// if err != nil { +// return err +// } +// if namespaceObj.RepositoryLimit > 0 && namespaceObj.RepositoryCount+1 > namespaceObj.RepositoryLimit { +// return xerrors.GenDSErrCodeResourceCountQuotaExceedNamespaceRepository(namespaceObj.Name, namespaceObj.RepositoryLimit) +// } +// err = tx.Model(&Namespace{}).Where(&Namespace{ID: a.NamespaceID}).UpdateColumns( +// map[string]any{ +// "repository_count": namespaceObj.RepositoryCount + 1, +// }).Error +// if err != nil { +// return err +// } +// return nil +// } -// AfterUpdate ... -func (a *Repository) AfterUpdate(tx *gorm.DB) error { - if a == nil { - return nil - } - err := tx.Exec(`UPDATE - namespaces -SET - repository_count = ( - SELECT - count(repositories.id) - FROM - repositories - WHERE - namespace_id = ?) -WHERE - id = ?`, a.NamespaceID, a.NamespaceID).Error - if err != nil { - return err - } - return nil -} +// // AfterUpdate ... +// func (a *Repository) AfterUpdate(tx *gorm.DB) error { +// if a == nil { +// return nil +// } +// err := tx.Exec(`UPDATE +// namespaces +// SET +// repository_count = ( +// SELECT +// count(repositories.id) +// FROM +// repositories +// WHERE +// namespace_id = ?) +// WHERE +// id = ?`, a.NamespaceID, a.NamespaceID).Error +// if err != nil { +// return err +// } +// return nil +// } diff --git a/pkg/dal/models/tag.go b/pkg/dal/models/tag.go index d415c736..63f01fa4 100644 --- a/pkg/dal/models/tag.go +++ b/pkg/dal/models/tag.go @@ -15,10 +15,7 @@ package models import ( - "gorm.io/gorm" "gorm.io/plugin/soft_delete" - - "github.com/go-sigma/sigma/pkg/xerrors" ) // Tag represents a tag @@ -40,98 +37,98 @@ type Tag struct { Artifact *Artifact } -// AfterCreate ... -// if something err occurs, the create will be aborted -func (a *Tag) BeforeCreate(tx *gorm.DB) error { - if a == nil { - return nil - } - var repositoryObj Repository - err := tx.Model(&Repository{}).Where(&Repository{ID: a.RepositoryID}).First(&repositoryObj).Error - if err != nil { - return err - } - var namespaceObj Namespace - err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).First(&namespaceObj).Error - if err != nil { - return err - } - - if namespaceObj.TagLimit > 0 && namespaceObj.TagCount+1 > namespaceObj.TagLimit { - return xerrors.GenDSErrCodeResourceCountQuotaExceedNamespaceTag(namespaceObj.Name, namespaceObj.TagLimit) - } - if repositoryObj.TagLimit > 0 && repositoryObj.TagCount+1 > repositoryObj.TagLimit { - return xerrors.GenDSErrCodeResourceCountQuotaExceedRepository(repositoryObj.Name, repositoryObj.TagLimit) - } - - err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).UpdateColumns( - map[string]any{ - "tag_count": namespaceObj.TagCount + 1, - }).Error - if err != nil { - return err - } - err = tx.Model(&Repository{}).Where(&Repository{ID: repositoryObj.ID}).UpdateColumns(map[string]any{ - "tag_count": repositoryObj.TagCount + 1, - }).Error - if err != nil { - return err - } - return nil -} - -// AfterDelete ... -func (a *Tag) AfterDelete(tx *gorm.DB) error { - if a == nil { - return nil - } - - var tagObj Tag - err := tx.Unscoped().Model(&Tag{}).Where(&Repository{ID: a.RepositoryID}).First(&tagObj).Error - if err != nil { - return err - } - - var repositoryObj Repository - err = tx.Model(&Repository{}).Where("id = ?", tagObj.RepositoryID).First(&repositoryObj).Error - if err != nil { - return err - } - - err = tx.Exec(`UPDATE - namespaces - SET - tag_count = ( - SELECT - COUNT(tags.id) - FROM - repositories - INNER JOIN tags ON repositories.id = tags.repository_id - WHERE - tags.deleted_at = 0 AND - repositories.namespace_id = ?) - WHERE - id = ?`, repositoryObj.NamespaceID, repositoryObj.NamespaceID).Error - if err != nil { - return err - } - - err = tx.Exec(`UPDATE - repositories - SET - tag_count = ( - SELECT - count(tags.name) - FROM - tags - WHERE - tags.deleted_at = 0 AND - tags.repository_id = ?) - WHERE - id = ?`, repositoryObj.ID, repositoryObj.ID).Error - if err != nil { - return err - } - - return nil -} +// // AfterCreate ... +// // if something err occurs, the create will be aborted +// func (a *Tag) BeforeCreate(tx *gorm.DB) error { +// if a == nil { +// return nil +// } +// var repositoryObj Repository +// err := tx.Model(&Repository{}).Where(&Repository{ID: a.RepositoryID}).First(&repositoryObj).Error +// if err != nil { +// return err +// } +// var namespaceObj Namespace +// err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).First(&namespaceObj).Error +// if err != nil { +// return err +// } + +// if namespaceObj.TagLimit > 0 && namespaceObj.TagCount+1 > namespaceObj.TagLimit { +// return xerrors.GenDSErrCodeResourceCountQuotaExceedNamespaceTag(namespaceObj.Name, namespaceObj.TagLimit) +// } +// if repositoryObj.TagLimit > 0 && repositoryObj.TagCount+1 > repositoryObj.TagLimit { +// return xerrors.GenDSErrCodeResourceCountQuotaExceedRepository(repositoryObj.Name, repositoryObj.TagLimit) +// } + +// err = tx.Model(&Namespace{}).Where(&Namespace{ID: repositoryObj.NamespaceID}).UpdateColumns( +// map[string]any{ +// "tag_count": namespaceObj.TagCount + 1, +// }).Error +// if err != nil { +// return err +// } +// err = tx.Model(&Repository{}).Where(&Repository{ID: repositoryObj.ID}).UpdateColumns(map[string]any{ +// "tag_count": repositoryObj.TagCount + 1, +// }).Error +// if err != nil { +// return err +// } +// return nil +// } + +// // AfterDelete ... +// func (a *Tag) AfterDelete(tx *gorm.DB) error { +// if a == nil { +// return nil +// } + +// var tagObj Tag +// err := tx.Unscoped().Model(&Tag{}).Where(&Repository{ID: a.RepositoryID}).First(&tagObj).Error +// if err != nil { +// return err +// } + +// var repositoryObj Repository +// err = tx.Model(&Repository{}).Where("id = ?", tagObj.RepositoryID).First(&repositoryObj).Error +// if err != nil { +// return err +// } + +// err = tx.Exec(`UPDATE +// namespaces +// SET +// tag_count = ( +// SELECT +// COUNT(tags.id) +// FROM +// repositories +// INNER JOIN tags ON repositories.id = tags.repository_id +// WHERE +// tags.deleted_at = 0 AND +// repositories.namespace_id = ?) +// WHERE +// id = ?`, repositoryObj.NamespaceID, repositoryObj.NamespaceID).Error +// if err != nil { +// return err +// } + +// err = tx.Exec(`UPDATE +// repositories +// SET +// tag_count = ( +// SELECT +// count(tags.name) +// FROM +// tags +// WHERE +// tags.deleted_at = 0 AND +// tags.repository_id = ?) +// WHERE +// id = ?`, repositoryObj.ID, repositoryObj.ID).Error +// if err != nil { +// return err +// } + +// return nil +// } diff --git a/pkg/dal/query/artifact_sboms.gen.go b/pkg/dal/query/artifact_sboms.gen.go index 982c20fc..856db691 100644 --- a/pkg/dal/query/artifact_sboms.gen.go +++ b/pkg/dal/query/artifact_sboms.gen.go @@ -42,6 +42,11 @@ func newArtifactSbom(db *gorm.DB, opts ...gen.DOOption) artifactSbom { db: db.Session(&gorm.Session{}), RelationField: field.NewRelation("Artifact", "models.Artifact"), + Namespace: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Artifact.Namespace", "models.Namespace"), + }, Repository: struct { field.RelationField Namespace struct { @@ -308,6 +313,9 @@ type artifactSbomBelongsToArtifact struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField Namespace struct { diff --git a/pkg/dal/query/artifact_vulnerabilities.gen.go b/pkg/dal/query/artifact_vulnerabilities.gen.go index c2653bf7..2da6b025 100644 --- a/pkg/dal/query/artifact_vulnerabilities.gen.go +++ b/pkg/dal/query/artifact_vulnerabilities.gen.go @@ -43,6 +43,11 @@ func newArtifactVulnerability(db *gorm.DB, opts ...gen.DOOption) artifactVulnera db: db.Session(&gorm.Session{}), RelationField: field.NewRelation("Artifact", "models.Artifact"), + Namespace: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Artifact.Namespace", "models.Namespace"), + }, Repository: struct { field.RelationField Namespace struct { @@ -312,6 +317,9 @@ type artifactVulnerabilityBelongsToArtifact struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField Namespace struct { diff --git a/pkg/dal/query/artifacts.gen.go b/pkg/dal/query/artifacts.gen.go index 6a220e7a..7f080999 100644 --- a/pkg/dal/query/artifacts.gen.go +++ b/pkg/dal/query/artifacts.gen.go @@ -32,6 +32,7 @@ func newArtifact(db *gorm.DB, opts ...gen.DOOption) artifact { _artifact.UpdatedAt = field.NewInt64(tableName, "updated_at") _artifact.DeletedAt = field.NewUint64(tableName, "deleted_at") _artifact.ID = field.NewInt64(tableName, "id") + _artifact.NamespaceID = field.NewInt64(tableName, "namespace_id") _artifact.RepositoryID = field.NewInt64(tableName, "repository_id") _artifact.Digest = field.NewString(tableName, "digest") _artifact.Size = field.NewInt64(tableName, "size") @@ -51,6 +52,9 @@ func newArtifact(db *gorm.DB, opts ...gen.DOOption) artifact { RelationField: field.NewRelation("Vulnerability", "models.ArtifactVulnerability"), Artifact: struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField Namespace struct { @@ -107,6 +111,11 @@ func newArtifact(db *gorm.DB, opts ...gen.DOOption) artifact { } }{ RelationField: field.NewRelation("Vulnerability.Artifact", "models.Artifact"), + Namespace: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Vulnerability.Artifact.Namespace", "models.Namespace"), + }, Repository: struct { field.RelationField Namespace struct { @@ -272,6 +281,12 @@ func newArtifact(db *gorm.DB, opts ...gen.DOOption) artifact { RelationField: field.NewRelation("Tags", "models.Tag"), } + _artifact.Namespace = artifactBelongsToNamespace{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Namespace", "models.Namespace"), + } + _artifact.Repository = artifactBelongsToRepository{ db: db.Session(&gorm.Session{}), @@ -309,6 +324,7 @@ type artifact struct { UpdatedAt field.Int64 DeletedAt field.Uint64 ID field.Int64 + NamespaceID field.Int64 RepositoryID field.Int64 Digest field.String Size field.Int64 @@ -328,6 +344,8 @@ type artifact struct { Tags artifactHasManyTags + Namespace artifactBelongsToNamespace + Repository artifactBelongsToRepository Referrer artifactBelongsToReferrer @@ -355,6 +373,7 @@ func (a *artifact) updateTableName(table string) *artifact { a.UpdatedAt = field.NewInt64(table, "updated_at") a.DeletedAt = field.NewUint64(table, "deleted_at") a.ID = field.NewInt64(table, "id") + a.NamespaceID = field.NewInt64(table, "namespace_id") a.RepositoryID = field.NewInt64(table, "repository_id") a.Digest = field.NewString(table, "digest") a.Size = field.NewInt64(table, "size") @@ -392,11 +411,12 @@ func (a *artifact) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (a *artifact) fillFieldMap() { - a.fieldMap = make(map[string]field.Expr, 24) + a.fieldMap = make(map[string]field.Expr, 26) a.fieldMap["created_at"] = a.CreatedAt a.fieldMap["updated_at"] = a.UpdatedAt a.fieldMap["deleted_at"] = a.DeletedAt a.fieldMap["id"] = a.ID + a.fieldMap["namespace_id"] = a.NamespaceID a.fieldMap["repository_id"] = a.RepositoryID a.fieldMap["digest"] = a.Digest a.fieldMap["size"] = a.Size @@ -430,6 +450,9 @@ type artifactHasOneVulnerability struct { Artifact struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField Namespace struct { @@ -694,6 +717,77 @@ func (a artifactHasManyTagsTx) Count() int64 { return a.tx.Count() } +type artifactBelongsToNamespace struct { + db *gorm.DB + + field.RelationField +} + +func (a artifactBelongsToNamespace) Where(conds ...field.Expr) *artifactBelongsToNamespace { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a artifactBelongsToNamespace) WithContext(ctx context.Context) *artifactBelongsToNamespace { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a artifactBelongsToNamespace) Session(session *gorm.Session) *artifactBelongsToNamespace { + a.db = a.db.Session(session) + return &a +} + +func (a artifactBelongsToNamespace) Model(m *models.Artifact) *artifactBelongsToNamespaceTx { + return &artifactBelongsToNamespaceTx{a.db.Model(m).Association(a.Name())} +} + +type artifactBelongsToNamespaceTx struct{ tx *gorm.Association } + +func (a artifactBelongsToNamespaceTx) Find() (result *models.Namespace, err error) { + return result, a.tx.Find(&result) +} + +func (a artifactBelongsToNamespaceTx) Append(values ...*models.Namespace) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a artifactBelongsToNamespaceTx) Replace(values ...*models.Namespace) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a artifactBelongsToNamespaceTx) Delete(values ...*models.Namespace) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a artifactBelongsToNamespaceTx) Clear() error { + return a.tx.Clear() +} + +func (a artifactBelongsToNamespaceTx) Count() int64 { + return a.tx.Count() +} + type artifactBelongsToRepository struct { db *gorm.DB diff --git a/pkg/dal/query/blobs.gen.go b/pkg/dal/query/blobs.gen.go index 4ac0e201..ee31e6ca 100644 --- a/pkg/dal/query/blobs.gen.go +++ b/pkg/dal/query/blobs.gen.go @@ -42,6 +42,11 @@ func newBlob(db *gorm.DB, opts ...gen.DOOption) blob { db: db.Session(&gorm.Session{}), RelationField: field.NewRelation("Artifacts", "models.Artifact"), + Namespace: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Artifacts.Namespace", "models.Namespace"), + }, Repository: struct { field.RelationField Namespace struct { @@ -301,6 +306,9 @@ type blobManyToManyArtifacts struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField Namespace struct { diff --git a/pkg/dal/query/tags.gen.go b/pkg/dal/query/tags.gen.go index c1ae0d41..3914638c 100644 --- a/pkg/dal/query/tags.gen.go +++ b/pkg/dal/query/tags.gen.go @@ -109,6 +109,11 @@ func newTag(db *gorm.DB, opts ...gen.DOOption) tag { db: db.Session(&gorm.Session{}), RelationField: field.NewRelation("Artifact", "models.Artifact"), + Namespace: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Artifact.Namespace", "models.Namespace"), + }, Repository: struct { field.RelationField }{ @@ -380,6 +385,9 @@ type tagBelongsToArtifact struct { field.RelationField + Namespace struct { + field.RelationField + } Repository struct { field.RelationField } diff --git a/pkg/handlers/artifacts/artifacts_delete_test.go b/pkg/handlers/artifacts/artifacts_delete_test.go index 83153d88..faed9e75 100644 --- a/pkg/handlers/artifacts/artifacts_delete_test.go +++ b/pkg/handlers/artifacts/artifacts_delete_test.go @@ -44,17 +44,13 @@ func TestDeleteArtifact(t *testing.T) { logger.SetLevel("debug") e := echo.New() validators.Initialize(e) - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -64,43 +60,40 @@ func TestDeleteArtifact(t *testing.T) { repositoryName = "test/busybox" ) - err = query.Q.Transaction(func(tx *query.Query) error { - userServiceFactory := dao.NewUserServiceFactory() - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) - namespaceServiceFactory := dao.NewNamespaceServiceFactory() - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} - err := namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) - log.Info().Interface("namespace", namespaceObj).Msg("namespace created") - repositoryServiceFactory := dao.NewRepositoryServiceFactory() - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: repositoryName, NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - artifactServiceFactory := dao.NewArtifactServiceFactory() - artifactService := artifactServiceFactory.New(tx) - artifactObj := &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", - Size: 1234, - ContentType: "application/octet-stream", - Raw: []byte("test"), - Blobs: []*models.Blob{{Digest: "sha256:123", Size: 123, ContentType: "test"}, {Digest: "sha256:234", Size: 234, ContentType: "test"}}, - } - err = artifactService.Create(ctx, artifactObj) - assert.NoError(t, err) - tagServiceFactory := dao.NewTagServiceFactory() - tagService := tagServiceFactory.New(tx) - tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} - err = tagService.Create(ctx, tagObj) - assert.NoError(t, err) - return nil - }) - assert.NoError(t, err) + userServiceFactory := dao.NewUserServiceFactory() + userService := userServiceFactory.New() + userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) + namespaceServiceFactory := dao.NewNamespaceServiceFactory() + namespaceService := namespaceServiceFactory.New() + namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) + log.Info().Interface("namespace", namespaceObj).Msg("namespace created") + repositoryServiceFactory := dao.NewRepositoryServiceFactory() + repositoryService := repositoryServiceFactory.New() + repositoryObj := &models.Repository{Name: repositoryName, NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) + artifactServiceFactory := dao.NewArtifactServiceFactory() + artifactService := artifactServiceFactory.New() + artifactObj := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", + Size: 1234, + ContentType: "application/octet-stream", + Raw: []byte("test"), + Blobs: []*models.Blob{ + {Digest: "sha256:123", Size: 123, ContentType: "test"}, + {Digest: "sha256:234", Size: 234, ContentType: "test"}, + }, + } + assert.NoError(t, artifactService.Create(ctx, artifactObj)) + + time.Sleep(time.Second * 3) + + tagServiceFactory := dao.NewTagServiceFactory() + tagService := tagServiceFactory.New() + tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} + assert.NoError(t, tagService.Create(ctx, tagObj)) artifactHandler := handlerNew() @@ -112,8 +105,7 @@ func TestDeleteArtifact(t *testing.T) { c := e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf") - err = artifactHandler.DeleteArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.DeleteArtifact(c)) assert.Equal(t, http.StatusNoContent, c.Response().Status) q = make(url.Values) @@ -124,8 +116,7 @@ func TestDeleteArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5") - err = artifactHandler.DeleteArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.DeleteArtifact(c)) assert.Equal(t, http.StatusBadRequest, c.Response().Status) q = make(url.Values) @@ -136,21 +127,22 @@ func TestDeleteArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf") - err = artifactHandler.DeleteArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.DeleteArtifact(c)) assert.Equal(t, http.StatusNotFound, c.Response().Status) ctrl := gomock.NewController(t) defer ctrl.Finish() daoMockArtifactService := daomock.NewMockArtifactService(ctrl) - daoMockArtifactService.EXPECT().DeleteByDigest(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, _, _ string) error { - return fmt.Errorf("test") - }).Times(1) + daoMockArtifactService.EXPECT().DeleteByDigest(gomock.Any(), gomock.Any(), gomock.Any()). + DoAndReturn(func(_ context.Context, _, _ string) error { + return fmt.Errorf("test") + }).Times(1) daoMockArtifactServiceFactory := daomock.NewMockArtifactServiceFactory(ctrl) - daoMockArtifactServiceFactory.EXPECT().New(gomock.Any()).DoAndReturn(func(txs ...*query.Query) dao.ArtifactService { - return daoMockArtifactService - }).Times(1) + daoMockArtifactServiceFactory.EXPECT().New(gomock.Any()). + DoAndReturn(func(txs ...*query.Query) dao.ArtifactService { + return daoMockArtifactService + }).Times(1) artifactHandler = handlerNew(inject{artifactServiceFactory: daoMockArtifactServiceFactory}) @@ -162,7 +154,6 @@ func TestDeleteArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf") - err = artifactHandler.DeleteArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.DeleteArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) } diff --git a/pkg/handlers/artifacts/artifacts_get_test.go b/pkg/handlers/artifacts/artifacts_get_test.go index d802543b..67eb5262 100644 --- a/pkg/handlers/artifacts/artifacts_get_test.go +++ b/pkg/handlers/artifacts/artifacts_get_test.go @@ -45,17 +45,13 @@ func TestGetArtifact(t *testing.T) { logger.SetLevel("debug") e := echo.New() validators.Initialize(e) - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -65,44 +61,35 @@ func TestGetArtifact(t *testing.T) { repositoryName = "busybox" ) - err = query.Q.Transaction(func(tx *query.Query) error { - userServiceFactory := dao.NewUserServiceFactory() - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) - namespaceServiceFactory := dao.NewNamespaceServiceFactory() - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} - err := namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) - log.Info().Interface("namespace", namespaceObj).Msg("namespace created") - repositoryServiceFactory := dao.NewRepositoryServiceFactory() - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: namespaceName + "/" + repositoryName, NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - artifactServiceFactory := dao.NewArtifactServiceFactory() - artifactService := artifactServiceFactory.New(tx) - artifactObj := &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", - Size: 1234, - ContentType: "application/octet-stream", - Raw: []byte("test"), - PushedAt: time.Now().UnixMilli(), - Blobs: []*models.Blob{{Digest: "sha256:123", Size: 123, ContentType: "test"}, {Digest: "sha256:234", Size: 234, ContentType: "test"}}, - } - err = artifactService.Create(ctx, artifactObj) - assert.NoError(t, err) - tagServiceFactory := dao.NewTagServiceFactory() - tagService := tagServiceFactory.New(tx) - tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} - err = tagService.Create(ctx, tagObj) - assert.NoError(t, err) - return nil - }) - assert.NoError(t, err) + userServiceFactory := dao.NewUserServiceFactory() + userService := userServiceFactory.New() + userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) + namespaceServiceFactory := dao.NewNamespaceServiceFactory() + namespaceService := namespaceServiceFactory.New() + namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) + log.Info().Interface("namespace", namespaceObj).Msg("namespace created") + repositoryServiceFactory := dao.NewRepositoryServiceFactory() + repositoryService := repositoryServiceFactory.New() + repositoryObj := &models.Repository{Name: namespaceName + "/" + repositoryName, NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) + artifactServiceFactory := dao.NewArtifactServiceFactory() + artifactService := artifactServiceFactory.New() + artifactObj := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", + Size: 1234, + ContentType: "application/octet-stream", + Raw: []byte("test"), + PushedAt: time.Now().UnixMilli(), + Blobs: []*models.Blob{{Digest: "sha256:123", Size: 123, ContentType: "test"}, {Digest: "sha256:234", Size: 234, ContentType: "test"}}, + } + assert.NoError(t, artifactService.Create(ctx, artifactObj)) + tagServiceFactory := dao.NewTagServiceFactory() + tagService := tagServiceFactory.New() + tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} + assert.NoError(t, tagService.Create(ctx, tagObj)) artifactHandler := handlerNew() @@ -114,8 +101,7 @@ func TestGetArtifact(t *testing.T) { c := e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusOK, c.Response().Status) assert.Equal(t, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", gjson.GetBytes(rec.Body.Bytes(), "digest").String()) @@ -127,8 +113,7 @@ func TestGetArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("digest") c.SetParamValues("sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusBadRequest, c.Response().Status) q = make(url.Values) @@ -139,8 +124,7 @@ func TestGetArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5f1f") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusNotFound, c.Response().Status) q = make(url.Values) @@ -151,8 +135,7 @@ func TestGetArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5f1f") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusNotFound, c.Response().Status) ctrl := gomock.NewController(t) @@ -177,8 +160,7 @@ func TestGetArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5f1f") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) daoMockRepositoryService := daomock.NewMockRepositoryService(ctrl) @@ -200,7 +182,6 @@ func TestGetArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace", "digest") c.SetParamValues(namespaceName, "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5f1f") - err = artifactHandler.GetArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.GetArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) } diff --git a/pkg/handlers/artifacts/artifacts_list_test.go b/pkg/handlers/artifacts/artifacts_list_test.go index 498fa02e..33d15a9e 100644 --- a/pkg/handlers/artifacts/artifacts_list_test.go +++ b/pkg/handlers/artifacts/artifacts_list_test.go @@ -47,17 +47,13 @@ func TestListArtifact(t *testing.T) { logger.SetLevel("debug") e := echo.New() validators.Initialize(e) - err := tests.Initialize(t) - assert.NoError(t, err) - err = tests.DB.Init() - assert.NoError(t, err) + assert.NoError(t, tests.Initialize(t)) + assert.NoError(t, tests.DB.Init()) defer func() { conn, err := dal.DB.DB() assert.NoError(t, err) - err = conn.Close() - assert.NoError(t, err) - err = tests.DB.DeInit() - assert.NoError(t, err) + assert.NoError(t, conn.Close()) + assert.NoError(t, tests.DB.DeInit()) }() ctx := log.Logger.WithContext(context.Background()) @@ -67,43 +63,34 @@ func TestListArtifact(t *testing.T) { repositoryName = "busybox" ) - err = query.Q.Transaction(func(tx *query.Query) error { - userServiceFactory := dao.NewUserServiceFactory() - userService := userServiceFactory.New(tx) - userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} - err = userService.Create(ctx, userObj) - assert.NoError(t, err) - namespaceServiceFactory := dao.NewNamespaceServiceFactory() - namespaceService := namespaceServiceFactory.New(tx) - namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} - err := namespaceService.Create(ctx, namespaceObj) - assert.NoError(t, err) - log.Info().Interface("namespace", namespaceObj).Msg("namespace created") - repositoryServiceFactory := dao.NewRepositoryServiceFactory() - repositoryService := repositoryServiceFactory.New(tx) - repositoryObj := &models.Repository{Name: namespaceName + "/" + repositoryName, NamespaceID: namespaceObj.ID} - err = repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID}) - assert.NoError(t, err) - artifactServiceFactory := dao.NewArtifactServiceFactory() - artifactService := artifactServiceFactory.New(tx) - artifactObj := &models.Artifact{ - RepositoryID: repositoryObj.ID, - Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", - Size: 1234, - ContentType: "application/octet-stream", - Raw: []byte("test"), - Blobs: []*models.Blob{{Digest: "sha256:123", Size: 123, ContentType: "test"}, {Digest: "sha256:234", Size: 234, ContentType: "test"}}, - } - err = artifactService.Create(ctx, artifactObj) - assert.NoError(t, err) - tagServiceFactory := dao.NewTagServiceFactory() - tagService := tagServiceFactory.New(tx) - tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} - err = tagService.Create(ctx, tagObj) - assert.NoError(t, err) - return nil - }) - assert.NoError(t, err) + userServiceFactory := dao.NewUserServiceFactory() + userService := userServiceFactory.New() + userObj := &models.User{Username: "new-runner", Password: ptr.Of("test"), Email: ptr.Of("test@gmail.com")} + assert.NoError(t, userService.Create(ctx, userObj)) + namespaceServiceFactory := dao.NewNamespaceServiceFactory() + namespaceService := namespaceServiceFactory.New() + namespaceObj := &models.Namespace{Name: namespaceName, Visibility: enums.VisibilityPrivate} + assert.NoError(t, namespaceService.Create(ctx, namespaceObj)) + log.Info().Interface("namespace", namespaceObj).Msg("namespace created") + repositoryServiceFactory := dao.NewRepositoryServiceFactory() + repositoryService := repositoryServiceFactory.New() + repositoryObj := &models.Repository{Name: namespaceName + "/" + repositoryName, NamespaceID: namespaceObj.ID} + assert.NoError(t, repositoryService.Create(ctx, repositoryObj, dao.AutoCreateNamespace{UserID: userObj.ID})) + artifactServiceFactory := dao.NewArtifactServiceFactory() + artifactService := artifactServiceFactory.New() + artifactObj := &models.Artifact{ + RepositoryID: repositoryObj.ID, + Digest: "sha256:e032eb458559f05c333b90abdeeac8ccb23bc1613137eeab2bbc0ea1224c5faf", + Size: 1234, + ContentType: "application/octet-stream", + Raw: []byte("test"), + Blobs: []*models.Blob{{Digest: "sha256:123", Size: 123, ContentType: "test"}, {Digest: "sha256:234", Size: 234, ContentType: "test"}}, + } + assert.NoError(t, artifactService.Create(ctx, artifactObj)) + tagServiceFactory := dao.NewTagServiceFactory() + tagService := tagServiceFactory.New() + tagObj := &models.Tag{Name: "latest", RepositoryID: repositoryObj.ID, ArtifactID: artifactObj.ID, PushedAt: time.Now().UnixMilli()} + assert.NoError(t, tagService.Create(ctx, tagObj)) artifactHandler := handlerNew() @@ -117,8 +104,7 @@ func TestListArtifact(t *testing.T) { c := e.NewContext(req, rec) c.SetParamNames("namespace") c.SetParamValues(namespaceName) - err = artifactHandler.ListArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.ListArtifact(c)) assert.Equal(t, http.StatusOK, c.Response().Status) assert.Equal(t, int64(1), gjson.GetBytes(rec.Body.Bytes(), "total").Int()) @@ -130,8 +116,7 @@ func TestListArtifact(t *testing.T) { req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) rec = httptest.NewRecorder() c = e.NewContext(req, rec) - err = artifactHandler.ListArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.ListArtifact(c)) assert.Equal(t, http.StatusBadRequest, c.Response().Status) ctrl := gomock.NewController(t) @@ -139,20 +124,23 @@ func TestListArtifact(t *testing.T) { daoMockArtifactService := daomock.NewMockArtifactService(ctrl) daoMockArtifactServiceTimes := 0 - daoMockArtifactService.EXPECT().ListArtifact(gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, _ types.ListArtifactRequest) ([]*models.Artifact, error) { - daoMockArtifactServiceTimes++ - if daoMockArtifactServiceTimes == 1 { - return nil, fmt.Errorf("test") - } - return []*models.Artifact{}, nil - }).Times(3) - daoMockArtifactService.EXPECT().CountArtifact(gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, _ types.ListArtifactRequest) (int64, error) { - return 0, fmt.Errorf("test") - }).Times(2) + daoMockArtifactService.EXPECT().ListArtifact(gomock.Any(), gomock.Any()). + DoAndReturn(func(_ context.Context, _ types.ListArtifactRequest) ([]*models.Artifact, error) { + daoMockArtifactServiceTimes++ + if daoMockArtifactServiceTimes == 1 { + return nil, fmt.Errorf("test") + } + return []*models.Artifact{}, nil + }).Times(3) + daoMockArtifactService.EXPECT().CountArtifact(gomock.Any(), gomock.Any()). + DoAndReturn(func(_ context.Context, _ types.ListArtifactRequest) (int64, error) { + return 0, fmt.Errorf("test") + }).Times(2) daoMockArtifactServiceFactory := daomock.NewMockArtifactServiceFactory(ctrl) - daoMockArtifactServiceFactory.EXPECT().New(gomock.Any()).DoAndReturn(func(txs ...*query.Query) dao.ArtifactService { - return daoMockArtifactService - }).Times(3) + daoMockArtifactServiceFactory.EXPECT().New(gomock.Any()). + DoAndReturn(func(txs ...*query.Query) dao.ArtifactService { + return daoMockArtifactService + }).Times(3) artifactHandler = handlerNew(inject{artifactServiceFactory: daoMockArtifactServiceFactory}) @@ -166,8 +154,7 @@ func TestListArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace") c.SetParamValues(namespaceName) - err = artifactHandler.ListArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.ListArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) q = make(url.Values) @@ -180,8 +167,7 @@ func TestListArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace") c.SetParamValues(namespaceName) - err = artifactHandler.ListArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.ListArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) q = make(url.Values) @@ -194,7 +180,6 @@ func TestListArtifact(t *testing.T) { c = e.NewContext(req, rec) c.SetParamNames("namespace") c.SetParamValues(namespaceName) - err = artifactHandler.ListArtifact(c) - assert.NoError(t, err) + assert.NoError(t, artifactHandler.ListArtifact(c)) assert.Equal(t, http.StatusInternalServerError, c.Response().Status) } diff --git a/pkg/handlers/distribution/base/repository_list_test.go b/pkg/handlers/distribution/base/repository_list_test.go index a656ef6b..46044dbf 100644 --- a/pkg/handlers/distribution/base/repository_list_test.go +++ b/pkg/handlers/distribution/base/repository_list_test.go @@ -28,12 +28,14 @@ import ( "github.com/go-sigma/sigma/pkg/dal" "github.com/go-sigma/sigma/pkg/dal/dao" "github.com/go-sigma/sigma/pkg/dal/models" + "github.com/go-sigma/sigma/pkg/logger" "github.com/go-sigma/sigma/pkg/tests" "github.com/go-sigma/sigma/pkg/types/enums" "github.com/go-sigma/sigma/pkg/utils/ptr" ) func TestListRepositories(t *testing.T) { + logger.SetLevel("debug") assert.NoError(t, tests.Initialize(t)) assert.NoError(t, tests.DB.Init()) defer func() { diff --git a/pkg/handlers/distribution/base/tags_list_test.go b/pkg/handlers/distribution/base/tags_list_test.go index 4e3831ee..43a5745c 100644 --- a/pkg/handlers/distribution/base/tags_list_test.go +++ b/pkg/handlers/distribution/base/tags_list_test.go @@ -28,12 +28,14 @@ import ( "github.com/go-sigma/sigma/pkg/dal" "github.com/go-sigma/sigma/pkg/dal/dao" "github.com/go-sigma/sigma/pkg/dal/models" + "github.com/go-sigma/sigma/pkg/logger" "github.com/go-sigma/sigma/pkg/tests" "github.com/go-sigma/sigma/pkg/types/enums" "github.com/go-sigma/sigma/pkg/utils/ptr" ) func TestListTags(t *testing.T) { + logger.SetLevel("debug") assert.NoError(t, tests.Initialize(t)) assert.NoError(t, tests.DB.Init()) defer func() { diff --git a/pkg/handlers/distribution/manifest/manifest_put.go b/pkg/handlers/distribution/manifest/manifest_put.go index fb0fc97a..e509043c 100644 --- a/pkg/handlers/distribution/manifest/manifest_put.go +++ b/pkg/handlers/distribution/manifest/manifest_put.go @@ -152,6 +152,7 @@ func (h *handler) PutManifest(c echo.Context) error { } artifactObj := &models.Artifact{ + NamespaceID: namespaceObj.ID, RepositoryID: repositoryObj.ID, Digest: refs.Digest.String(), Size: size, diff --git a/pkg/handlers/namespaces/namespaces_create_test.go b/pkg/handlers/namespaces/namespaces_create_test.go index 677906a1..3f116f44 100644 --- a/pkg/handlers/namespaces/namespaces_create_test.go +++ b/pkg/handlers/namespaces/namespaces_create_test.go @@ -34,6 +34,7 @@ import ( daomocks "github.com/go-sigma/sigma/pkg/dal/dao/mocks" "github.com/go-sigma/sigma/pkg/dal/models" "github.com/go-sigma/sigma/pkg/dal/query" + "github.com/go-sigma/sigma/pkg/logger" "github.com/go-sigma/sigma/pkg/modules/workq/definition" workqmocks "github.com/go-sigma/sigma/pkg/modules/workq/definition/mocks" "github.com/go-sigma/sigma/pkg/tests" @@ -43,6 +44,7 @@ import ( ) func TestPostNamespace(t *testing.T) { + logger.SetLevel("debug") e := echo.New() validators.Initialize(e) assert.NoError(t, tests.Initialize(t)) diff --git a/pkg/modules/locker/database/database.go b/pkg/modules/locker/database/database.go index e42f9958..67896bb1 100644 --- a/pkg/modules/locker/database/database.go +++ b/pkg/modules/locker/database/database.go @@ -53,7 +53,7 @@ func (l lockerDatabase) Acquire(ctx context.Context, key string, expire, waitTim } ddlCtx, cancel := context.WithTimeout(ctx, waitTimeout) defer cancel() - ticker := time.NewTicker(time.Duration(100) * time.Millisecond) + ticker := time.NewTicker(time.Duration(500) * time.Millisecond) defer func() { ticker.Stop() }() @@ -89,7 +89,7 @@ func (l lockerDatabase) AcquireWithRenew(ctx context.Context, key string, expire } go func() { - ticker := time.NewTicker(time.Duration(100) * time.Millisecond) + ticker := time.NewTicker(time.Duration(500) * time.Millisecond) defer func() { ticker.Stop() }()