import 'dart:math'; import 'package:drift/drift.dart'; import 'package:sendtrain/database/database.dart'; Future seedDb() async { final database = AppDatabase(); // seed data setup final List sessionValues = [ [ 'Projecting @ Climbers Rock', 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.' ], [ 'Moonboard @ Boardroom', 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.' ], [ 'Off-Wall Training', 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.' ], [ 'Climbing Outdoors', 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.' ], [ 'Volume Session @ Gravity', 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.' ], ]; final List mediaItems = [ [ 'https://www.climbing.com/wp-content/uploads/2022/06/campus-board-e1655470701154.jpeg', MediaType.image ], ['BgheYcxhrsw', MediaType.youtube] ]; final int totalSessions = 15; final int totalActivities = 6; final int totalActions = 5; final int totalMedia = 5; final random = Random(); // seed loop for (int i = 0; i < totalSessions; i++) { // session things var status = SessionStatus.completed; if (i == 0) status = SessionStatus.started; if (i == 1) status = SessionStatus.pending; final sessionValue = sessionValues[random.nextInt(sessionValues.length)]; database .into(database.sessions) .insert(SessionsCompanion.insert( title: sessionValue[0], content: sessionValue[1], status: status, date: Value(DateTime.now()))) .then((sessionId) { // activities things for (int j = 0; j < random.nextInt(totalActivities); j++) { database .into(database.activities) .insert(ActivitiesCompanion.insert( title: "test activity $j", type: ActivityType .values[random.nextInt(ActivityType.values.length)], description: "test training activity $j", category: ActivityCategories.values[ random.nextInt(ActivityCategories.values.length)])) .then((activityId) { // session activity relationships database .into(database.sessionActivities) .insert(SessionActivitiesCompanion.insert( sessionId: sessionId, activityId: activityId, results: Value("results json, will need to test"), achievements: Value("comma, seperated, items"), )); // actions for (int k = 0; k < random.nextInt(totalActions); k++) { database .into(database.actions) .insert(ActionsCompanion.insert( title: 'test action $k', description: 'test action description $k', set: '')) .then((actionId) { // add activity action association database.into(database.activityActions).insert( ActivityActionsCompanion.insert( activityId: activityId, actionId: actionId)); for (int l = 0; l < random.nextInt(totalMedia); l++) { final mediaItem = mediaItems[random.nextInt(mediaItems.length)]; database .into(database.mediaItems) .insert(MediaItemsCompanion.insert( title: 'media title $l', description: 'media description $l', reference: mediaItem[0], type: mediaItem[1])) .then((mediaId) { database.into(database.objectMediaItems).insert( ObjectMediaItemsCompanion.insert( objectId: actionId, mediaId: mediaId, objectType: ObjectType.actions)); }); } }); } for (int l = 0; l < random.nextInt(totalMedia); l++) { final mediaItem = mediaItems[random.nextInt(mediaItems.length)]; database .into(database.mediaItems) .insert(MediaItemsCompanion.insert( title: 'media title $l', description: 'media description $l', reference: mediaItem[0], type: mediaItem[1])) .then((mediaId) { database.into(database.objectMediaItems).insert( ObjectMediaItemsCompanion.insert( objectId: activityId, mediaId: mediaId, objectType: ObjectType.activities)); }); } }); } for (int l = 0; l < random.nextInt(totalMedia); l++) { final mediaItem = mediaItems[random.nextInt(mediaItems.length)]; database .into(database.mediaItems) .insert(MediaItemsCompanion.insert( title: 'media title $l', description: 'media description $l', reference: mediaItem[0], type: mediaItem[1])) .then((mediaId) { database.into(database.objectMediaItems).insert( ObjectMediaItemsCompanion.insert( objectId: sessionId, mediaId: mediaId, objectType: ObjectType.sessions)); }); } }); } }