160 lines
6.0 KiB
Dart
160 lines
6.0 KiB
Dart
import 'dart:math';
|
|
|
|
import 'package:drift/drift.dart';
|
|
import 'package:sendtrain/database/database.dart';
|
|
|
|
Future<void> seedDb() async {
|
|
final database = AppDatabase();
|
|
|
|
// seed data setup
|
|
final List<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<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));
|
|
});
|
|
}
|
|
});
|
|
}
|
|
} |