Added Meta Data to Orders and made the frontend english

This commit is contained in:
2026-05-26 17:53:30 +02:00
parent 8bc4691992
commit 929969d03a
4 changed files with 156 additions and 41 deletions
+46 -7
View File
@@ -1,10 +1,12 @@
package store
import (
"encoding/json"
"fmt"
"mime"
"os"
"path/filepath"
"sort"
"strings"
"time"
@@ -28,23 +30,60 @@ func NewOrderStore(dir string) *OrderStore {
// List returns all orders sorted by creation time (newest first).
func (s *OrderStore) List() ([]model.Order, error) {
return listFromDir(s.dir,
func(name string) bool { return filepath.Ext(name) == ".json" },
"orders dir",
func(o model.Order) time.Time { return o.CreatedAt },
)
if err := ensureDir(s.dir); err != nil {
return nil, err
}
entries, err := os.ReadDir(s.dir)
if err != nil {
return nil, fmt.Errorf("read orders dir: %w", err)
}
var out []model.Order
for _, e := range entries {
if e.IsDir() || filepath.Ext(e.Name()) != ".json" {
continue
}
o, err := readOrderFile(filepath.Join(s.dir, e.Name()))
if err != nil {
return nil, err
}
out = append(out, o)
}
sort.Slice(out, func(i, j int) bool {
return out[i].CreatedAt.After(out[j].CreatedAt)
})
return out, nil
}
// Get returns an order by ID.
func (s *OrderStore) Get(id string) (model.Order, error) {
path := s.metaPath(id)
o, err := readJSON[model.Order](path)
o, err := readOrderFile(s.metaPath(id))
if err != nil {
if os.IsNotExist(err) {
return model.Order{}, fmt.Errorf("order not found: %s", id)
}
return model.Order{}, err
}
return o, nil
}
func readOrderFile(path string) (model.Order, error) {
var aux struct {
model.Order
RefLink string `json:"ref_link,omitempty"`
}
data, err := os.ReadFile(path)
if err != nil {
return model.Order{}, err
}
if err := json.Unmarshal(data, &aux); err != nil {
return model.Order{}, err
}
o := aux.Order
if o.Ref == "" && aux.RefLink != "" {
o.Ref = aux.RefLink
}
if o.Images == nil {
o.Images = []model.OrderImage{}
}