Files
notarius/internal/framework/pipeline/chunk_validation.go

37 lines
1.0 KiB
Go

package pipeline
import (
"fmt"
"gitea.maximumdirect.net/eric/notarius/internal/core/source"
)
func validateAndMaterializeChunkPlan(doc *source.SourceDocument, plan source.ChunkPlan) (source.ChunkPlan, []source.Chunk, error) {
canonical, err := source.CanonicalizeChunkPlan(plan)
if err != nil {
return source.ChunkPlan{}, nil, fmt.Errorf("canonicalize chunk plan: %w", err)
}
if err := source.ValidateChunkPlan(doc, canonical); err != nil {
return source.ChunkPlan{}, nil, err
}
chunks, err := source.MaterializeChunkPlan(doc, canonical)
if err != nil {
return source.ChunkPlan{}, nil, err
}
return canonical, chunks, nil
}
func cloneSourceUnit(unit source.SourceUnit) (source.SourceUnit, error) {
metadata, err := cloneMetadata(unit.Metadata)
if err != nil {
return source.SourceUnit{}, fmt.Errorf("clone source unit %d metadata: %w", unit.ID, err)
}
return source.SourceUnit{
ID: unit.ID,
Kind: unit.Kind,
Text: unit.Text,
Ref: unit.Ref,
Metadata: metadata,
}, nil
}