This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user