GraphQL API and utilities for the rpdata project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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 }
|