Added Meta Data to Orders and made the frontend english
This commit is contained in:
+46
-7
@@ -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{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user