mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-18 14:47:38 +01:00
Merge pull request #12936 from wy65701436/fix-swagger-dep
remove the dependency on swagger models
This commit is contained in:
commit
513c48d47c
@ -16,8 +16,6 @@ package models
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/go-openapi/strfmt"
|
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/astaxie/beego/validation"
|
"github.com/astaxie/beego/validation"
|
||||||
@ -38,20 +36,6 @@ type Label struct {
|
|||||||
Deleted bool `orm:"column(deleted)" json:"deleted"`
|
Deleted bool `orm:"column(deleted)" json:"deleted"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSwagger converts the label to the swagger model
|
|
||||||
func (l *Label) ToSwagger() *models.Label {
|
|
||||||
return &models.Label{
|
|
||||||
Color: l.Color,
|
|
||||||
CreationTime: strfmt.DateTime(l.CreationTime),
|
|
||||||
Description: l.Description,
|
|
||||||
ID: l.ID,
|
|
||||||
Name: l.Name,
|
|
||||||
ProjectID: l.ProjectID,
|
|
||||||
Scope: l.Scope,
|
|
||||||
UpdateTime: strfmt.DateTime(l.UpdateTime),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName ...
|
// TableName ...
|
||||||
func (l *Label) TableName() string {
|
func (l *Label) TableName() string {
|
||||||
return "harbor_label"
|
return "harbor_label"
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/go-openapi/strfmt"
|
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/goharbor/harbor/src/pkg/signature/notary/model"
|
"github.com/goharbor/harbor/src/pkg/signature/notary/model"
|
||||||
@ -40,19 +38,6 @@ type RepoRecord struct {
|
|||||||
UpdateTime time.Time `orm:"column(update_time);auto_now" json:"update_time"`
|
UpdateTime time.Time `orm:"column(update_time);auto_now" json:"update_time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSwagger converts the repository into the swagger model
|
|
||||||
func (r *RepoRecord) ToSwagger() *models.Repository {
|
|
||||||
return &models.Repository{
|
|
||||||
CreationTime: strfmt.DateTime(r.CreationTime),
|
|
||||||
Description: r.Description,
|
|
||||||
ID: r.RepositoryID,
|
|
||||||
Name: r.Name,
|
|
||||||
ProjectID: r.ProjectID,
|
|
||||||
PullCount: r.PullCount,
|
|
||||||
UpdateTime: strfmt.DateTime(r.UpdateTime),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName is required by by beego orm to map RepoRecord to table repository
|
// TableName is required by by beego orm to map RepoRecord to table repository
|
||||||
func (r *RepoRecord) TableName() string {
|
func (r *RepoRecord) TableName() string {
|
||||||
return RepoTable
|
return RepoTable
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"github.com/goharbor/harbor/src/controller/tag"
|
"github.com/goharbor/harbor/src/controller/tag"
|
||||||
"github.com/goharbor/harbor/src/lib/encode/repository"
|
"github.com/goharbor/harbor/src/lib/encode/repository"
|
||||||
"github.com/goharbor/harbor/src/pkg/artifact"
|
"github.com/goharbor/harbor/src/pkg/artifact"
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Artifact is the overall view of artifact
|
// Artifact is the overall view of artifact
|
||||||
@ -52,14 +51,6 @@ type AdditionLink struct {
|
|||||||
Absolute bool `json:"absolute"` // specify the href is an absolute URL or not
|
Absolute bool `json:"absolute"` // specify the href is an absolute URL or not
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSwagger converts the addition link to the swagger model
|
|
||||||
func (a *AdditionLink) ToSwagger() models.AdditionLink {
|
|
||||||
return models.AdditionLink{
|
|
||||||
Absolute: a.Absolute,
|
|
||||||
Href: a.HREF,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Option is used to specify the properties returned when listing/getting artifacts
|
// Option is used to specify the properties returned when listing/getting artifacts
|
||||||
type Option struct {
|
type Option struct {
|
||||||
WithTag bool
|
WithTag bool
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package tag
|
package tag
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/go-openapi/strfmt"
|
|
||||||
"github.com/goharbor/harbor/src/pkg/signature"
|
"github.com/goharbor/harbor/src/pkg/signature"
|
||||||
"github.com/goharbor/harbor/src/pkg/tag/model/tag"
|
"github.com/goharbor/harbor/src/pkg/tag/model/tag"
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tag is the overall view of tag
|
// Tag is the overall view of tag
|
||||||
@ -14,20 +12,6 @@ type Tag struct {
|
|||||||
Signed bool `json:"signed"`
|
Signed bool `json:"signed"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSwagger converts the tag to the swagger model
|
|
||||||
func (t *Tag) ToSwagger() *models.Tag {
|
|
||||||
return &models.Tag{
|
|
||||||
ArtifactID: t.ArtifactID,
|
|
||||||
ID: t.ID,
|
|
||||||
Name: t.Name,
|
|
||||||
PullTime: strfmt.DateTime(t.PullTime),
|
|
||||||
PushTime: strfmt.DateTime(t.PushTime),
|
|
||||||
RepositoryID: t.RepositoryID,
|
|
||||||
Immutable: t.Immutable,
|
|
||||||
Signed: t.Signed,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Option is used to specify the properties returned when listing/getting tags
|
// Option is used to specify the properties returned when listing/getting tags
|
||||||
type Option struct {
|
type Option struct {
|
||||||
WithImmutableStatus bool
|
WithImmutableStatus bool
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"github.com/docker/distribution/manifest/manifestlist"
|
"github.com/docker/distribution/manifest/manifestlist"
|
||||||
"github.com/goharbor/harbor/src/lib/log"
|
"github.com/goharbor/harbor/src/lib/log"
|
||||||
"github.com/goharbor/harbor/src/pkg/artifact/dao"
|
"github.com/goharbor/harbor/src/pkg/artifact/dao"
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
|
||||||
v1 "github.com/opencontainers/image-spec/specs-go/v1"
|
v1 "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -181,24 +180,3 @@ func (r *Reference) To() *dao.ArtifactReference {
|
|||||||
}
|
}
|
||||||
return ref
|
return ref
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSwagger converts the reference to the swagger model
|
|
||||||
func (r *Reference) ToSwagger() *models.Reference {
|
|
||||||
ref := &models.Reference{
|
|
||||||
ChildDigest: r.ChildDigest,
|
|
||||||
ChildID: r.ChildID,
|
|
||||||
ParentID: r.ParentID,
|
|
||||||
Annotations: r.Annotations,
|
|
||||||
Urls: r.URLs,
|
|
||||||
}
|
|
||||||
if r.Platform != nil {
|
|
||||||
ref.Platform = &models.Platform{
|
|
||||||
Architecture: r.Platform.Architecture,
|
|
||||||
Os: r.Platform.OS,
|
|
||||||
OsFeatures: r.Platform.OSFeatures,
|
|
||||||
OsVersion: r.Platform.OSVersion,
|
|
||||||
Variant: r.Platform.Variant,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ref
|
|
||||||
}
|
|
||||||
|
@ -327,7 +327,7 @@ func (a *artifactAPI) ListTags(ctx context.Context, params operation.ListTagsPar
|
|||||||
|
|
||||||
var ts []*models.Tag
|
var ts []*models.Tag
|
||||||
for _, tag := range tags {
|
for _, tag := range tags {
|
||||||
ts = append(ts, tag.ToSwagger())
|
ts = append(ts, model.NewTag(tag).ToSwagger())
|
||||||
}
|
}
|
||||||
return operation.NewListTagsOK().
|
return operation.NewListTagsOK().
|
||||||
WithXTotalCount(total).
|
WithXTotalCount(total).
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"github.com/go-openapi/strfmt"
|
"github.com/go-openapi/strfmt"
|
||||||
"github.com/goharbor/harbor/src/controller/artifact"
|
"github.com/goharbor/harbor/src/controller/artifact"
|
||||||
"github.com/goharbor/harbor/src/lib/log"
|
"github.com/goharbor/harbor/src/lib/log"
|
||||||
|
pkg_art "github.com/goharbor/harbor/src/pkg/artifact"
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -46,20 +47,21 @@ func (a *Artifact) ToSwagger() *models.Artifact {
|
|||||||
ExtraAttrs: a.ExtraAttrs,
|
ExtraAttrs: a.ExtraAttrs,
|
||||||
Annotations: a.Annotations,
|
Annotations: a.Annotations,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, reference := range a.References {
|
for _, reference := range a.References {
|
||||||
art.References = append(art.References, reference.ToSwagger())
|
art.References = append(art.References, NewReference(reference).ToSwagger())
|
||||||
}
|
}
|
||||||
for _, tag := range a.Tags {
|
for _, tag := range a.Tags {
|
||||||
art.Tags = append(art.Tags, tag.ToSwagger())
|
art.Tags = append(art.Tags, NewTag(tag).ToSwagger())
|
||||||
}
|
}
|
||||||
for addition, link := range a.AdditionLinks {
|
for addition, link := range a.AdditionLinks {
|
||||||
if art.AdditionLinks == nil {
|
if art.AdditionLinks == nil {
|
||||||
art.AdditionLinks = make(map[string]models.AdditionLink)
|
art.AdditionLinks = make(map[string]models.AdditionLink)
|
||||||
}
|
}
|
||||||
art.AdditionLinks[addition] = link.ToSwagger()
|
art.AdditionLinks[addition] = NewAdditionLink(link).ToSwagger()
|
||||||
}
|
}
|
||||||
for _, label := range a.Labels {
|
for _, label := range a.Labels {
|
||||||
art.Labels = append(art.Labels, label.ToSwagger())
|
art.Labels = append(art.Labels, NewLabel(label).ToSwagger())
|
||||||
}
|
}
|
||||||
if len(a.ScanOverview) > 0 {
|
if len(a.ScanOverview) > 0 {
|
||||||
art.ScanOverview = models.ScanOverview{}
|
art.ScanOverview = models.ScanOverview{}
|
||||||
@ -80,3 +82,52 @@ func (a *Artifact) ToSwagger() *models.Artifact {
|
|||||||
}
|
}
|
||||||
return art
|
return art
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AdditionLink is a link via that the addition can be fetched
|
||||||
|
type AdditionLink struct {
|
||||||
|
*artifact.AdditionLink
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSwagger converts the addition link to the swagger model
|
||||||
|
func (a *AdditionLink) ToSwagger() models.AdditionLink {
|
||||||
|
return models.AdditionLink{
|
||||||
|
Absolute: a.Absolute,
|
||||||
|
Href: a.HREF,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewAdditionLink ...
|
||||||
|
func NewAdditionLink(a *artifact.AdditionLink) *AdditionLink {
|
||||||
|
return &AdditionLink{AdditionLink: a}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference records the child artifact referenced by parent artifact
|
||||||
|
type Reference struct {
|
||||||
|
*pkg_art.Reference
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSwagger converts the reference to the swagger model
|
||||||
|
func (r *Reference) ToSwagger() *models.Reference {
|
||||||
|
ref := &models.Reference{
|
||||||
|
ChildDigest: r.ChildDigest,
|
||||||
|
ChildID: r.ChildID,
|
||||||
|
ParentID: r.ParentID,
|
||||||
|
Annotations: r.Annotations,
|
||||||
|
Urls: r.URLs,
|
||||||
|
}
|
||||||
|
if r.Platform != nil {
|
||||||
|
ref.Platform = &models.Platform{
|
||||||
|
Architecture: r.Platform.Architecture,
|
||||||
|
Os: r.Platform.OS,
|
||||||
|
OsFeatures: r.Platform.OSFeatures,
|
||||||
|
OsVersion: r.Platform.OSVersion,
|
||||||
|
Variant: r.Platform.Variant,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ref
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewReference ...
|
||||||
|
func NewReference(r *pkg_art.Reference) *Reference {
|
||||||
|
return &Reference{Reference: r}
|
||||||
|
}
|
||||||
|
31
src/server/v2.0/handler/model/label.go
Normal file
31
src/server/v2.0/handler/model/label.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-openapi/strfmt"
|
||||||
|
common_models "github.com/goharbor/harbor/src/common/models"
|
||||||
|
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Label model
|
||||||
|
type Label struct {
|
||||||
|
*common_models.Label
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSwagger converts the label to the swagger model
|
||||||
|
func (l *Label) ToSwagger() *models.Label {
|
||||||
|
return &models.Label{
|
||||||
|
Color: l.Color,
|
||||||
|
CreationTime: strfmt.DateTime(l.CreationTime),
|
||||||
|
Description: l.Description,
|
||||||
|
ID: l.ID,
|
||||||
|
Name: l.Name,
|
||||||
|
ProjectID: l.ProjectID,
|
||||||
|
Scope: l.Scope,
|
||||||
|
UpdateTime: strfmt.DateTime(l.UpdateTime),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewLabel ...
|
||||||
|
func NewLabel(l *common_models.Label) *Label {
|
||||||
|
return &Label{Label: l}
|
||||||
|
}
|
30
src/server/v2.0/handler/model/repository.go
Normal file
30
src/server/v2.0/handler/model/repository.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-openapi/strfmt"
|
||||||
|
common_models "github.com/goharbor/harbor/src/common/models"
|
||||||
|
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RepoRecord model
|
||||||
|
type RepoRecord struct {
|
||||||
|
*common_models.RepoRecord
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSwagger converts the repository into the swagger model
|
||||||
|
func (r *RepoRecord) ToSwagger() *models.Repository {
|
||||||
|
return &models.Repository{
|
||||||
|
CreationTime: strfmt.DateTime(r.CreationTime),
|
||||||
|
Description: r.Description,
|
||||||
|
ID: r.RepositoryID,
|
||||||
|
Name: r.Name,
|
||||||
|
ProjectID: r.ProjectID,
|
||||||
|
PullCount: r.PullCount,
|
||||||
|
UpdateTime: strfmt.DateTime(r.UpdateTime),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRepoRecord ...
|
||||||
|
func NewRepoRecord(r *common_models.RepoRecord) *RepoRecord {
|
||||||
|
return &RepoRecord{RepoRecord: r}
|
||||||
|
}
|
31
src/server/v2.0/handler/model/tag.go
Normal file
31
src/server/v2.0/handler/model/tag.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-openapi/strfmt"
|
||||||
|
"github.com/goharbor/harbor/src/controller/tag"
|
||||||
|
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Tag model
|
||||||
|
type Tag struct {
|
||||||
|
*tag.Tag
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSwagger converts the tag to the swagger model
|
||||||
|
func (t *Tag) ToSwagger() *models.Tag {
|
||||||
|
return &models.Tag{
|
||||||
|
ArtifactID: t.ArtifactID,
|
||||||
|
ID: t.ID,
|
||||||
|
Name: t.Name,
|
||||||
|
PullTime: strfmt.DateTime(t.PullTime),
|
||||||
|
PushTime: strfmt.DateTime(t.PushTime),
|
||||||
|
RepositoryID: t.RepositoryID,
|
||||||
|
Immutable: t.Immutable,
|
||||||
|
Signed: t.Signed,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTag ...
|
||||||
|
func NewTag(t *tag.Tag) *Tag {
|
||||||
|
return &Tag{Tag: t}
|
||||||
|
}
|
@ -28,6 +28,7 @@ import (
|
|||||||
"github.com/goharbor/harbor/src/controller/repository"
|
"github.com/goharbor/harbor/src/controller/repository"
|
||||||
"github.com/goharbor/harbor/src/lib/log"
|
"github.com/goharbor/harbor/src/lib/log"
|
||||||
"github.com/goharbor/harbor/src/lib/q"
|
"github.com/goharbor/harbor/src/lib/q"
|
||||||
|
"github.com/goharbor/harbor/src/server/v2.0/handler/model"
|
||||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||||
operation "github.com/goharbor/harbor/src/server/v2.0/restapi/operations/repository"
|
operation "github.com/goharbor/harbor/src/server/v2.0/restapi/operations/repository"
|
||||||
)
|
)
|
||||||
@ -81,7 +82,7 @@ func (r *repositoryAPI) ListRepositories(ctx context.Context, params operation.L
|
|||||||
}
|
}
|
||||||
var repos []*models.Repository
|
var repos []*models.Repository
|
||||||
for _, repository := range repositories {
|
for _, repository := range repositories {
|
||||||
repos = append(repos, r.assembleRepository(ctx, repository))
|
repos = append(repos, r.assembleRepository(ctx, model.NewRepoRecord(repository)))
|
||||||
}
|
}
|
||||||
return operation.NewListRepositoriesOK().
|
return operation.NewListRepositoriesOK().
|
||||||
WithXTotalCount(total).
|
WithXTotalCount(total).
|
||||||
@ -97,10 +98,10 @@ func (r *repositoryAPI) GetRepository(ctx context.Context, params operation.GetR
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return r.SendError(ctx, err)
|
return r.SendError(ctx, err)
|
||||||
}
|
}
|
||||||
return operation.NewGetRepositoryOK().WithPayload(r.assembleRepository(ctx, repository))
|
return operation.NewGetRepositoryOK().WithPayload(r.assembleRepository(ctx, model.NewRepoRecord(repository)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *repositoryAPI) assembleRepository(ctx context.Context, repository *cmodels.RepoRecord) *models.Repository {
|
func (r *repositoryAPI) assembleRepository(ctx context.Context, repository *model.RepoRecord) *models.Repository {
|
||||||
repo := repository.ToSwagger()
|
repo := repository.ToSwagger()
|
||||||
total, err := r.artCtl.Count(ctx, &q.Query{
|
total, err := r.artCtl.Count(ctx, &q.Query{
|
||||||
Keywords: map[string]interface{}{
|
Keywords: map[string]interface{}{
|
||||||
|
Loading…
Reference in New Issue
Block a user