Skip to content
This repository has been archived by the owner on Feb 17, 2024. It is now read-only.

Commit

Permalink
Merge pull request #29 from stealthrocket/timemachine-remove-resource…
Browse files Browse the repository at this point in the history
…-type

timemachine: remove resource type tag
  • Loading branch information
achille-roussel committed May 29, 2023
2 parents 6ae087e + 1887d66 commit 9fb247d
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 30 deletions.
10 changes: 7 additions & 3 deletions internal/cmd/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ Examples:
"size": 7150231,
"annotations": {
"timecraft.module.name": "app.wasm",
"timecraft.object.created-at": "2023-05-28T21:52:26Z",
"timecraft.object.resource-type": "module"
"timecraft.object.created-at": "2023-05-28T21:52:26Z"
}
}
Expand All @@ -53,28 +52,33 @@ Options:
type resource struct {
name string
alt []string
typ format.MediaType
get func(context.Context, io.Writer, *timemachine.Registry) stream.WriteCloser[*format.Descriptor]
}

var resources = [...]resource{
{
name: "config",
alt: []string{"conf", "configs"},
typ: format.TypeTimecraftConfig,
get: getConfigs,
},
{
name: "module",
alt: []string{"mo", "mod", "mods", "modules"},
typ: format.TypeTimecraftModule,
get: getModules,
},
{
name: "process",
alt: []string{"ps", "procs", "processes"},
typ: format.TypeTimecraftProcess,
get: getProcesses,
},
{
name: "runtime",
alt: []string{"rt", "runtimes"},
typ: format.TypeTimecraftRuntime,
get: getRuntimes,
},
}
Expand Down Expand Up @@ -114,7 +118,7 @@ Did you mean?%s`, resourceNamePrefix, joinResourceNames(matchingResources, "\n
return err
}

reader := registry.ListResources(ctx, resource.name, timeRange)
reader := registry.ListResources(ctx, resource.typ, timeRange)
defer reader.Close()

var writer stream.WriteCloser[*format.Descriptor]
Expand Down
35 changes: 8 additions & 27 deletions internal/timemachine/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"io"
"path"
"strconv"
"strings"
"time"

"golang.org/x/exp/slices"
Expand Down Expand Up @@ -99,23 +98,23 @@ func (reg *Registry) LookupProcess(ctx context.Context, hash format.Hash) (*form
}

func (reg *Registry) ListModules(ctx context.Context, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, "module", timeRange, tags)
return reg.listObjects(ctx, format.TypeTimecraftModule, timeRange, tags)
}

func (reg *Registry) ListRuntimes(ctx context.Context, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, "runtime", timeRange, tags)
return reg.listObjects(ctx, format.TypeTimecraftRuntime, timeRange, tags)
}

func (reg *Registry) ListConfigs(ctx context.Context, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, "config", timeRange, tags)
return reg.listObjects(ctx, format.TypeTimecraftConfig, timeRange, tags)
}

func (reg *Registry) ListProcesses(ctx context.Context, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, "process", timeRange, tags)
return reg.listObjects(ctx, format.TypeTimecraftProcess, timeRange, tags)
}

func (reg *Registry) ListResources(ctx context.Context, resourceType string, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, resourceType, timeRange, tags)
func (reg *Registry) ListResources(ctx context.Context, mediaType format.MediaType, timeRange TimeRange, tags ...object.Tag) stream.ReadCloser[*format.Descriptor] {
return reg.listObjects(ctx, mediaType, timeRange, tags)
}

func errorCreateObject(hash format.Hash, value format.Resource, err error) error {
Expand All @@ -130,15 +129,6 @@ func errorListObjects(mediaType format.MediaType, err error) error {
return fmt.Errorf("list objects: %s: %w", mediaType, err)
}

func resourceTypeOf(mediaType format.MediaType) string {
const prefix = "application/vnd.timecraft."
if strings.HasPrefix(string(mediaType), prefix) {
s, _, _ := strings.Cut(string(mediaType[len(prefix):]), ".")
return s
}
return "unknown"
}

func appendTagFilters(filters []object.Filter, tags []object.Tag) []object.Filter {
for _, tag := range tags {
filters = append(filters, object.MATCH(tag.Name, tag.Value))
Expand Down Expand Up @@ -196,10 +186,6 @@ func (reg *Registry) createObject(ctx context.Context, value format.ResourceMars
Name: "timecraft.object.created-at",
Value: time.Now().UTC().Format(time.RFC3339),
},
{
Name: "timecraft.object.resource-type",
Value: resourceTypeOf(mediaType),
},
})

tags := makeTags(annotations)
Expand Down Expand Up @@ -242,13 +228,13 @@ func (reg *Registry) lookupObject(ctx context.Context, hash format.Hash, value f
return nil
}

func (reg *Registry) listObjects(ctx context.Context, resourceType string, timeRange TimeRange, matchTags []object.Tag) stream.ReadCloser[*format.Descriptor] {
func (reg *Registry) listObjects(ctx context.Context, mediaType format.MediaType, timeRange TimeRange, matchTags []object.Tag) stream.ReadCloser[*format.Descriptor] {
if !timeRange.Start.IsZero() {
timeRange.Start = timeRange.Start.Add(-1)
}

filters := []object.Filter{
object.MATCH("timecraft.object.resource-type", resourceType),
object.MATCH("timecraft.object.media-type", mediaType.String()),
object.AFTER(timeRange.Start),
object.BEFORE(timeRange.End),
}
Expand All @@ -257,11 +243,6 @@ func (reg *Registry) listObjects(ctx context.Context, resourceType string, timeR

reader := reg.Store.ListObjects(ctx, "obj/", filters...)
return convert(reader, func(info object.Info) (*format.Descriptor, error) {
m, ok := info.Lookup("timecraft.object.media-type")
if !ok {
m = "application/octet-stream"
}
mediaType := format.MediaType(m)
hash, err := format.ParseHash(path.Base(info.Name))
if err != nil {
return nil, errorListObjects(mediaType, err)
Expand Down

0 comments on commit 9fb247d

Please sign in to comment.