-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathget-data.js
More file actions
executable file
·117 lines (104 loc) · 2.62 KB
/
Copy pathget-data.js
File metadata and controls
executable file
·117 lines (104 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import db from './connections/index.js';
function formatDate(date) {
const [jour, mois, annee] = date.split("/");
const fullYear = annee.length === 2 ? `20${annee}` : annee;
return `${fullYear}-${mois}-${jour}`;
}
export default async function getData({ prix, hippo, date }) {
try {
let key = null, value = null, operator = 'LIKE';
if (prix) {
key = 'races.prix';
value = prix;
} else if (hippo) {
key = 'races.lieu';
value = hippo;
} else if (date) {
key = 'races.date';
const formattedDate = formatDate(date);
value = formattedDate;
operator = '=';
}
if (key && value) {
const result = await db.query(`
SELECT
races.id,
races.type,
races.date,
races.montant,
races.distance,
races.prix,
races.lieu,
races.heure_depart,
races.details,
races.partants,
races.non_partants,
races.arrivee,
races.r_c,
race_results.nom_cheval,
race_results.sexe,
race_results.annee_de_naissance,
race_results.nom_jockey,
race_results.nom_entraineur,
race_results.musique,
race_results.cotes,
race_results.gains,
race_results.corde,
race_results.discipline,
race_results.distance AS horse_distance,
race_results.numero
FROM races
LEFT JOIN race_results
ON race_results.race_id = races.id
WHERE ${key} ${operator} $1
`, [operator == 'LIKE' ? `%${value}%` : date]
);
const races = {};
for (const row of result.rows) {
if (!races[row.id]) {
races[row.id] = {
type: row.type,
montant: row.montant,
distance: row.distance,
prix: row.prix,
lieu: row.lieu,
heure_depart: row.heure_depart,
details: row.details,
partants: row.partants,
non_partants: row.non_partants,
arrivee: row.arrivee,
"r/c": row.r_c,
arrivee_details: {},
date: row.date
};
}
if (row.numero !== null) {
races[row.id].arrivee_details[row.numero] = {
nom_cheval: row.nom_cheval,
sexe: row.sexe,
annee_de_naissance: row.annee_de_naissance,
nom_jockey: row.nom_jockey,
nom_entraineur: row.nom_entraineur,
musique: row.musique,
cotes: row.cotes,
gains: row.gains,
corde: row.corde,
discipline: row.discipline,
distance: row.horse_distance
};
}
}
const response = Object.values(races);
if (response.length > 0) {
return [true, response];
} else {
return [false, "Pas de correspondance"];
}
} else {
return [false, "Pas de correspondance"];
}
} catch (err) {
console.log(err);
return [false, []]
}
}