44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package imports
|
|
|
|
import "fncConvertGui/internal/models"
|
|
|
|
type CSVtoTransactionsFunc func(data string) ([]models.Transaction, error)
|
|
|
|
type MappingVersion struct {
|
|
Name string `json:"name"`
|
|
CsvToTransaction CSVtoTransactionsFunc `json:"-"`
|
|
}
|
|
|
|
type Importer struct {
|
|
Name string `json:"name"`
|
|
Versions []MappingVersion `json:"versions"`
|
|
}
|
|
|
|
// ImporterInfo is the JSON-safe subset sent to the frontend.
|
|
type ImporterInfo struct {
|
|
Name string `json:"name"`
|
|
Versions []string `json:"versions"`
|
|
}
|
|
|
|
var DefaultImporters = []Importer{
|
|
{
|
|
Name: "LZO",
|
|
Versions: []MappingVersion{
|
|
{Name: "1.0.0", CsvToTransaction: nil},
|
|
},
|
|
},
|
|
}
|
|
|
|
// ListImporters returns a frontend-friendly summary of all registered importers.
|
|
func ListImporters() []ImporterInfo {
|
|
out := make([]ImporterInfo, len(DefaultImporters))
|
|
for i, imp := range DefaultImporters {
|
|
versions := make([]string, len(imp.Versions))
|
|
for j, v := range imp.Versions {
|
|
versions[j] = v.Name
|
|
}
|
|
out[i] = ImporterInfo{Name: imp.Name, Versions: versions}
|
|
}
|
|
return out
|
|
}
|