Files
api/database/postgres/tags.go
T
gisle 410e07a6a2
continuous-integration/drone/push Build is failing
add stuff that may not compile.
2021-03-25 14:13:43 +01:00

47 lines
1.1 KiB
Go

package postgres
import (
"context"
"database/sql"
"fmt"
"git.aiterp.net/rpdata/api/database/postgres/psqlcore"
"git.aiterp.net/rpdata/api/models"
)
type tagRepository struct {
db *sql.DB
}
func (r *tagRepository) Find(ctx context.Context, kind models.TagKind, name string) (*models.Tag, error) {
tag, err := psqlcore.New(r.db).SelectTagsByTag(ctx, fmt.Sprintf("%s:%s", kind, nmae))
if err != nil {
return nil, err
}
return &models.Tag{Kind: models.TagKind(tag.Kind), Name: tag.Name}, nil
}
func (r *tagRepository) List(ctx context.Context, filter models.TagFilter) ([]*models.Tag, error) {
var tags []string
var err error
if filter.Kind != nil {
tags, err = psqlcore.New(r.db).SelectDistinctTagsByKind(ctx, string(*filter.Kind))
} else {
tags, err = psqlcore.New(r.db).SelectDistinctTags(ctx)
}
if err != nil {
return nil, err
}
return models.DecodeTagArray(tags)
}
func modelsTagsFromDataTags(tags []psqlcore.CommonTag) []*models.Tag {
results := make([]*models.Tag, len(tags))
for i, tag := range tags {
results[i] = &models.Tag{Kind: models.TagKind(tag.Kind), Name: tag.Name}
}
return results
}