generateTestData function
Implementation
Future<void> generateTestData(FirestoreApp apiProvider) async {
final List<String> venues = [
'Venue A',
'Venue B',
'Venue C',
'Venue D',
'Venue E'
];
final List<List<String>> teams = List.generate(
30, (index) => ['Team ${index * 2 + 1}', 'Team ${index * 2 + 2}']);
final List<String> eventNames = [
'Goal',
'Red Card',
'Yellow Card',
'Injury',
'Timeout'
];
print('Starting test data generation...');
for (int i = 1; i < 5; i++) {
String competitionName = 'Competition ${i + 1}';
String competitionId = 'comp_${i + 1}';
print('Creating competition: $competitionName with ID: $competitionId');
await apiProvider.performSetOperation({
'path': 'sports/soccer/competitions/$competitionId',
'data': {'name': competitionName, 'id': competitionId},
});
for (int j = 0; j < 10; j++) {
List<String> matchTeams = teams[Random().nextInt(teams.length)];
String matchVenue = venues[Random().nextInt(venues.length)];
DateTime matchTime =
DateTime.now().add(Duration(days: Random().nextInt(365)));
DocumentReference matchRef = await apiProvider.performAddOperation({
'path': 'sports/soccer/competitions/$competitionId/matches',
'data': {
'teams': matchTeams,
'venue': matchVenue,
'matchTime': matchTime,
},
});
int eventsCount =
Random().nextInt(1) + 10; // Generating between 100 and 1000 events
for (int k = 0; k < eventsCount; k++) {
String eventName = eventNames[Random().nextInt(eventNames.length)];
String teamInvolved = matchTeams[Random().nextInt(matchTeams.length)];
Map<String, dynamic> payload = {
"time": "${Random().nextInt(90) + 1}",
"team": teamInvolved,
"player": "Player ${Random().nextInt(22) + 1}",
"eventType": eventName,
"details": jsonEncode({
"assist": "Player ${Random().nextInt(22) + 1}",
"partOfPlay": "Open Play",
"distance": "${Random().nextInt(30) + 5} meters",
"goalType": "Right-footed shot"
}),
};
await apiProvider.performAddOperation({
'path':
'sports/soccer/competitions/$competitionId/matches/${matchRef.id}/events',
'data': {
'name': eventName,
'payload': payload,
},
});
}
// Print progress every 100 matches
print(
'Match $j created for competition: $competitionName with ${eventsCount} events');
}
print('Finished creating matches for competition: $competitionName');
}
print('Test data generation complete.');
}