Skip to content

Commit 680d0b5

Browse files
committed
Added columns transformers to be used when importing values from CSV
1 parent cb20ca1 commit 680d0b5

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

backend/api.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type Config struct {
4545
type ConfigColumnAlias struct {
4646
TableColumn string
4747
Alias string
48+
Transformer string
4849
}
4950

5051
var (
@@ -61,7 +62,19 @@ var (
6162
MailRecipient: "[email protected]",
6263
TableMapping: nil,
6364
}
64-
logger *log.Logger
65+
logger *log.Logger
66+
transformers = map[string]func(string) string{
67+
"SiNo2Boolean": func(v string) string {
68+
if strings.Contains(v, "SI") {
69+
return "1"
70+
}
71+
return "0"
72+
},
73+
"EurDate2SQLDate": func(v string) string {
74+
parts := strings.Split(v, "/")
75+
return parts[2] + "-" + parts[1] + "-" + parts[0]
76+
},
77+
}
6578
)
6679

6780
// CSV and Database elements
@@ -434,6 +447,9 @@ func updateDatabase() error {
434447
for _, element := range elements {
435448
values := make([]interface{}, 0, columnsCount)
436449
for _, column := range config.TableMapping {
450+
if column.Transformer != "" && transformers[column.Transformer] != nil {
451+
element[column.Alias] = transformers[column.Transformer](element[column.Alias])
452+
}
437453
values = append(values, element[column.Alias])
438454
}
439455
_, err = insertQuery.Exec(values...)

backend/config.dist.json

+24-11
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,29 @@
1010
"DatabaseConnection": "root:root@/unioncars?charset=utf8&loc=Local&parseTime=true",
1111
"TableName": "cars",
1212
"TableMapping": [
13-
{"TableColumn": "brand", "Alias": "DESC. MARCA"},
14-
{"TableColumn": "model_description", "Alias": "DESC. AUTOVETTURA"},
15-
{"TableColumn": "color", "Alias": "COLORE"},
16-
{"TableColumn": "model", "Alias": "DESC. MODELLO"},
17-
{"TableColumn": "equipment", "Alias": "EQUIPAGGIAMENTI SIGNIF. (10) SIGLA"},
18-
{"TableColumn": "image_url_1", "Alias": "FOTO1 AUTO USATA"},
19-
{"TableColumn": "image_url_2", "Alias": "FOTO2 AUTO USATA"},
20-
{"TableColumn": "image_url_3", "Alias": "FOTO3 AUTO USATA"},
21-
{"TableColumn": "image_url_4", "Alias": "FOTO4 VEICOLO"},
22-
{"TableColumn": "note", "Alias": "NOTE X INTERNET"},
23-
{"TableColumn": "price", "Alias": "PrezzoV. Euro"}
13+
{"TableColumn": "fuel_type", "Alias": "ALIM." },
14+
{"TableColumn": "pubblic", "Alias": "INT", "Transformer": "SiNo2Boolean" },
15+
{"TableColumn": "gear_type", "Alias": "CAMBIO" },
16+
{"TableColumn": "car_type", "Alias": "CARROZZERIA SEMPL." },
17+
{"TableColumn": "km", "Alias": "KM PERCO" },
18+
{"TableColumn": "engine_size", "Alias": "CIL." },
19+
{"TableColumn": "internal_code", "Alias": "COD. INTERNO" },
20+
{"TableColumn": "infocar", "Alias": "INFOCAR" },
21+
{"TableColumn": "external_color", "Alias": "COLORE" },
22+
{"TableColumn": "registration_date", "Alias": "IMMATRIC.", "Transformer": "EurDate2SQLDate" },
23+
{"TableColumn": "brand", "Alias": "DESC. MARCA" },
24+
{"TableColumn": "model", "Alias": "DESC. MODELLO" },
25+
{"TableColumn": "model_description", "Alias": "DESC. AUTOVETTURA" },
26+
{"TableColumn": "image_url_1", "Alias": "FOTO1 AUTO USATA" },
27+
{"TableColumn": "image_url_2", "Alias": "FOTO2 AUTO USATA" },
28+
{"TableColumn": "image_url_3", "Alias": "FOTO3 AUTO USATA" },
29+
{"TableColumn": "image_url_4", "Alias": "FOTO4 VEICOLO" },
30+
{"TableColumn": "image_url_5", "Alias": "FOTO5 VEICOLO" },
31+
{"TableColumn": "image_url_6", "Alias": "FOTO6 VEICOLO" },
32+
{"TableColumn": "image_url_7", "Alias": "FOTO7 VEICOLO" },
33+
{"TableColumn": "image_url_8", "Alias": "FOTO8 VEICOLO" },
34+
{"TableColumn": "power_horses", "Alias": "CAV" },
35+
{"TableColumn": "power_kw", "Alias": "KW" },
36+
{"TableColumn": "price", "Alias": "PrezzoV. Euro" }
2437
]
2538
}

0 commit comments

Comments
 (0)