seeded db, updated some db fields

This commit is contained in:
Joshua Burman 2024-12-09 00:06:44 -05:00
parent 0dc7c3ced0
commit b2e2eb67b0
3 changed files with 446 additions and 322 deletions

View File

@ -3,24 +3,33 @@ import 'package:drift_flutter/drift_flutter.dart';
part 'database.g.dart'; part 'database.g.dart';
enum SessionStatus {
pending,
started,
completed,
missed
}
class Sessions extends Table { class Sessions extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 3, max: 32)(); TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get content => text().named('body')(); TextColumn get content => text().named('body')();
TextColumn get status => textEnum<SessionStatus>()();
DateTimeColumn get date => dateTime().nullable()(); DateTimeColumn get date => dateTime().nullable()();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
class SessionActivities extends Table { class SessionActivities extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
IntColumn get sessionId => integer().references(Sessions, #id)(); IntColumn get sessionId => integer().references(Sessions, #id)();
IntColumn get activityId => integer().references(Activities, #id)(); IntColumn get activityId => integer().references(Activities, #id)();
TextColumn get results => text()(); TextColumn get results => text().nullable()();
TextColumn get achievements => text()(); TextColumn get achievements => text().nullable()();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
enum Categories { enum ActivityCategories {
fundamentals, fundamentals,
conditioning, conditioning,
advanced, advanced,
@ -28,20 +37,33 @@ enum Categories {
pro pro
} }
enum ActivityType {
strength,
power,
conditioning,
hypertrophy,
endurance,
stability,
mobility,
flexibility,
rehabilitation,
technical
}
class Activities extends Table { class Activities extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 3, max: 32)(); TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get type => text().withLength(min: 3, max: 32)(); TextColumn get type => textEnum<ActivityType>()();
TextColumn get description => text().named('body')(); TextColumn get description => text().named('body')();
TextColumn get categories => textEnum<Categories>()(); TextColumn get category => textEnum<ActivityCategories>()();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
class ActivityActions extends Table { class ActivityActions extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
IntColumn get activityId => integer().references(Activities, #id)(); IntColumn get activityId => integer().references(Activities, #id)();
IntColumn get actionId => integer().references(Actions, #id)(); IntColumn get actionId => integer().references(Actions, #id)();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
class Actions extends Table { class Actions extends Table {
@ -49,23 +71,27 @@ class Actions extends Table {
TextColumn get title => text().withLength(min: 3, max: 32)(); TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get description => text().named('body')(); TextColumn get description => text().named('body')();
TextColumn get set => text()(); TextColumn get set => text()();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
class ObjectMediaItems extends Table { class ObjectMediaItems extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
IntColumn get objectId => integer().references(Actions, #id)(); IntColumn get objectId => integer().references(Actions, #id)();
IntColumn get mediaId => integer().references(MediaItems, #id)(); IntColumn get mediaId => integer().references(MediaItems, #id)();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
enum MediaType {
youtube,
image
}
class MediaItems extends Table { class MediaItems extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 3, max: 32)(); TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get description => text().named('body')(); TextColumn get description => text().named('body')();
TextColumn get reference => text().withLength(min: 3, max: 32)(); TextColumn get reference => text().withLength(min: 3, max: 32)();
TextColumn get type => text().withLength(min: 3, max: 32)(); TextColumn get type => textEnum<MediaType>()();
DateTimeColumn get createdAt => dateTime().nullable()(); DateTimeColumn get createdAt => dateTime().withDefault(Variable(DateTime.now()))();
} }
@DriftDatabase(tables: [ @DriftDatabase(tables: [

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,7 @@
import 'package:drift/drift.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sendtrain/database.dart';
import 'package:sendtrain/models/activity_timer_model.dart'; import 'package:sendtrain/models/activity_timer_model.dart';
import 'package:sendtrain/screens/activities_screen.dart'; import 'package:sendtrain/screens/activities_screen.dart';
import 'package:sendtrain/screens/sessions_screen.dart'; import 'package:sendtrain/screens/sessions_screen.dart';
@ -90,6 +92,52 @@ class _AppState extends State<App> {
} }
void main() { void main() {
final database = AppDatabase();
// database.into(database.sessions).insert(SessionsCompanion.insert(
// title: 'test session title',
// content: 'test session content description',
// status: SessionStatus.pending,
// date: Value(DateTime.now())));
// database.into(database.activities).insert(ActivitiesCompanion.insert(
// title: "test activity",
// type: ActivityType.technical,
// description: "test training activity",
// category: ActivityCategories.fundamentals));
// database
// .into(database.sessionActivities)
// .insert(SessionActivitiesCompanion.insert(
// sessionId: 1,
// activityId: 1,
// results: Value("results json, will need to test"),
// achievements: Value("comma, seperated, items"),
// ));
// database.into(database.actions).insert(ActionsCompanion.insert(
// title: "test action title",
// description: "teste action description",
// set: "not sure how the json will work yet",
// ));
// database
// .into(database.activityActions)
// .insert(ActivityActionsCompanion.insert(
// activityId: 1,
// actionId: 1,
// ));
// database.into(database.mediaItems).insert(MediaItemsCompanion.insert(
// title: "test youtube media item",
// description: "this is a test youtube item",
// reference: "sZVAEy9UmoY",
// type: MediaType.youtube));
// database
// .into(database.objectMediaItems)
// .insert(ObjectMediaItemsCompanion.insert(objectId: 1, mediaId: 1));
runApp( runApp(
ChangeNotifierProvider( ChangeNotifierProvider(
create: (context) => ActivityTimerModel(), create: (context) => ActivityTimerModel(),