Refactoring
Some checks failed
Build Linux App / build (push) Failing after 1m33s

This commit is contained in:
2026-02-23 10:02:23 -05:00
parent 21f1387fa8
commit 0c9eb8878d
57 changed files with 8179 additions and 1114 deletions

View File

@@ -1,17 +1,23 @@
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;
import 'package:trainhub_flutter/core/constants/app_constants.dart';
import 'package:trainhub_flutter/data/database/daos/exercise_dao.dart';
import 'package:trainhub_flutter/data/database/daos/training_plan_dao.dart';
import 'package:trainhub_flutter/data/database/daos/program_dao.dart';
import 'package:trainhub_flutter/data/database/daos/analysis_dao.dart';
import 'package:trainhub_flutter/data/database/daos/chat_dao.dart';
import 'dart:io';
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:trainhub_flutter/core/constants/app_constants.dart';
import 'package:trainhub_flutter/data/database/daos/analysis_dao.dart';
import 'package:trainhub_flutter/data/database/daos/chat_dao.dart';
import 'package:trainhub_flutter/data/database/daos/exercise_dao.dart';
import 'package:trainhub_flutter/data/database/daos/knowledge_chunk_dao.dart';
import 'package:trainhub_flutter/data/database/daos/program_dao.dart';
import 'package:trainhub_flutter/data/database/daos/training_plan_dao.dart';
part 'app_database.g.dart';
// ---------------------------------------------------------------------------
// Existing tables (unchanged)
// ---------------------------------------------------------------------------
class Exercises extends Table {
TextColumn get id => text()();
TextColumn get name => text()();
@@ -116,6 +122,35 @@ class ChatMessages extends Table {
Set<Column> get primaryKey => {id};
}
// ---------------------------------------------------------------------------
// v2: Knowledge base chunks
// ---------------------------------------------------------------------------
/// Stores text chunks and their JSON-encoded embedding vectors.
/// Used for Retrieval-Augmented Generation (RAG) in the AI chat.
class KnowledgeChunks extends Table {
/// UUID for this individual chunk.
TextColumn get id => text()();
/// All chunks from the same `addNote()` call share this ID.
TextColumn get sourceId => text()();
/// The raw text of the chunk (max ~500 chars).
TextColumn get content => text()();
/// JSON-encoded `List<double>` — the 768-dim Nomic embedding vector.
TextColumn get embedding => text()();
TextColumn get createdAt => text()();
@override
Set<Column> get primaryKey => {id};
}
// ---------------------------------------------------------------------------
// Database class
// ---------------------------------------------------------------------------
@DriftDatabase(
tables: [
Exercises,
@@ -127,6 +162,7 @@ class ChatMessages extends Table {
Annotations,
ChatSessions,
ChatMessages,
KnowledgeChunks, // added in schema v2
],
daos: [
ExerciseDao,
@@ -134,13 +170,24 @@ class ChatMessages extends Table {
ProgramDao,
AnalysisDao,
ChatDao,
KnowledgeChunkDao, // added in schema v2
],
)
class AppDatabase extends _$AppDatabase {
AppDatabase() : super(_openConnection());
@override
int get schemaVersion => 1;
int get schemaVersion => 2;
@override
MigrationStrategy get migration => MigrationStrategy(
onUpgrade: (migrator, from, to) async {
// v1 → v2: add knowledge chunks table
if (from < 2) {
await migrator.createTable(knowledgeChunks);
}
},
);
}
LazyDatabase _openConnection() {