feat: Add ls equivalent to query cmd

This commit is contained in:
Felicitas Pojtinger
2021-11-24 20:07:51 +01:00
parent 8924b9de91
commit 0ae66d3263
2 changed files with 36 additions and 1 deletions

View File

@@ -68,6 +68,39 @@ func (p *MetadataPersister) GetHeaderChildren(ctx context.Context, name string)
).All(ctx, p.db)
}
func (p *MetadataPersister) GetHeaderDirectChildren(ctx context.Context, name string) (models.HeaderSlice, error) {
if name == "" || name == "." || name == "/" {
return p.GetHeaders(ctx)
}
prefixWithoutTrailingSlash := strings.TrimSuffix(name, "/")
prefixWithTrailingSlash := prefixWithoutTrailingSlash + "/%"
headers := models.HeaderSlice{}
if err := queries.Raw(
fmt.Sprintf(
`select * from %v where %v = ? or %v = ? or (%v like ? and %v not like ?)`,
models.TableNames.Headers,
models.HeaderColumns.Name,
models.HeaderColumns.Name,
models.HeaderColumns.Name,
models.HeaderColumns.Name,
),
prefixWithoutTrailingSlash,
prefixWithTrailingSlash,
prefixWithTrailingSlash,
prefixWithTrailingSlash+"/%",
).Bind(ctx, p.db, &headers); err != nil {
if err == sql.ErrNoRows {
return headers, nil
}
return nil, err
}
return headers, nil
}
func (p *MetadataPersister) DeleteHeader(ctx context.Context, name string, ignoreNotExists bool) (*models.Header, error) {
hdr, err := models.FindHeader(ctx, p.db, name)
if err != nil {