From a16a9218b1cc37da924883fb17c0dbc205eb2524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AC=BC=20musa?= Date: Mon, 24 Aug 2026 02:51:02 +0530 Subject: [PATCH] feat: added new notes and folder repo, dao, provider, model --- android/app/build.gradle.kts | 31 +- lib/{db => database}/db/app_database.dart | 34 +- lib/{db => database}/db/app_database.g.dart | 2391 ++++++++++++++--- lib/database/db/dao/folder/folder_dao.dart | 52 + lib/database/db/dao/folder/folder_dao.g.dart | 64 + lib/database/db/dao/note/note_dao.dart | 58 + lib/database/db/dao/note/note_dao.g.dart | 64 + .../db/dao/task_category_dao.dart | 4 +- .../db/dao/task_category_dao.g.dart | 0 .../db/dao/task_dao.dart} | 6 +- .../db/dao/task_dao.g.dart} | 2 +- .../db/dao/user_progress_dao.dart | 4 +- .../db/dao/user_progress_dao.g.dart | 0 .../db/tables/TABLES/folders_table.dart | 20 + .../db/tables/TABLES/notes_table.dart | 26 + .../db/tables/error_report.dart | 0 .../db/tables/task_categories_table.dart | 0 .../db/tables/task_table.dart} | 2 +- .../db/tables/user_progress_table.dart | 0 .../repository/note_repository.dart | 6 +- .../repository/note_repository.g.dart | 0 lib/feature/folder/data/folder_model.dart | 39 + .../folder/data/folder_repository.dart | 96 + .../folder/data/folder_repository.g.dart | 56 + .../folder/provider/folders_provider.dart | 51 + .../models/user_progress_model.dart | 2 +- .../provider/user_progress_view_model.dart | 4 +- .../provider/user_progress_view_model.g.dart | 2 +- lib/feature/notes/data/note_model.dart | 51 + lib/feature/notes/data/note_repository.dart | 111 + lib/feature/notes/data/note_repository.g.dart | 51 + .../notes/provider/notes_provider.dart | 64 + .../categories_screen/categories_screen.dart | 2 +- .../data_and_privacy_screen.dart | 4 +- .../services/backup_and_restore.dart | 31 +- lib/feature/tasks/models/note_model.dart | 4 +- .../tasks/view_models/note_view_model.dart | 4 +- .../view_models/task_category_view_model.dart | 2 +- .../create_note/add_category_dialog.dart | 2 +- .../create_note/category_picker_sheet.dart | 2 +- .../widget/create_note/create_note_view.dart | 2 +- .../create_note/task_setting_tiles.dart | 2 +- .../tasks/widget/task_priority_widget.dart | 2 +- lib/feature/tasks/widget/tasks_cards.dart | 2 +- lib/services/auth_service.dart | 4 +- lib/services/background_service.dart | 2 +- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 6 +- pubspec.lock | 485 ++-- pubspec.yaml | 22 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 2 +- 53 files changed, 3088 insertions(+), 792 deletions(-) rename lib/{db => database}/db/app_database.dart (63%) rename lib/{db => database}/db/app_database.g.dart (60%) create mode 100644 lib/database/db/dao/folder/folder_dao.dart create mode 100644 lib/database/db/dao/folder/folder_dao.g.dart create mode 100644 lib/database/db/dao/note/note_dao.dart create mode 100644 lib/database/db/dao/note/note_dao.g.dart rename lib/{db => database}/db/dao/task_category_dao.dart (87%) rename lib/{db => database}/db/dao/task_category_dao.g.dart (100%) rename lib/{db/db/dao/note_dao.dart => database/db/dao/task_dao.dart} (93%) rename lib/{db/db/dao/note_dao.g.dart => database/db/dao/task_dao.g.dart} (98%) rename lib/{db => database}/db/dao/user_progress_dao.dart (84%) rename lib/{db => database}/db/dao/user_progress_dao.g.dart (100%) create mode 100644 lib/database/db/tables/TABLES/folders_table.dart create mode 100644 lib/database/db/tables/TABLES/notes_table.dart rename lib/{db => database}/db/tables/error_report.dart (100%) rename lib/{db => database}/db/tables/task_categories_table.dart (100%) rename lib/{db/db/tables/note_table.dart => database/db/tables/task_table.dart} (99%) rename lib/{db => database}/db/tables/user_progress_table.dart (100%) rename lib/{db => database}/repository/note_repository.dart (96%) rename lib/{db => database}/repository/note_repository.g.dart (100%) create mode 100644 lib/feature/folder/data/folder_model.dart create mode 100644 lib/feature/folder/data/folder_repository.dart create mode 100644 lib/feature/folder/data/folder_repository.g.dart create mode 100644 lib/feature/folder/provider/folders_provider.dart create mode 100644 lib/feature/notes/data/note_model.dart create mode 100644 lib/feature/notes/data/note_repository.dart create mode 100644 lib/feature/notes/data/note_repository.g.dart create mode 100644 lib/feature/notes/provider/notes_provider.dart diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 9543a19..50c0f8f 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,3 +1,7 @@ +import com.android.build.api.dsl.ApplicationExtension +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("com.android.application") id("kotlin-android") @@ -5,17 +9,9 @@ plugins { id("dev.flutter.flutter-gradle-plugin") } -kotlin { - compilerOptions { - jvmTarget.set( - org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 - ) - } -} - -android { +extensions.configure { namespace = "com.onimusha.ascend" - compileSdk = 37 + compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { @@ -25,24 +21,35 @@ android { } defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.onimusha.ascend" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion - targetSdk = 37 + targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } buildTypes { release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. signingConfig = signingConfigs.getByName("debug") } } } +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } +} + dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") } flutter { source = "../.." -} \ No newline at end of file +} diff --git a/lib/db/db/app_database.dart b/lib/database/db/app_database.dart similarity index 63% rename from lib/db/db/app_database.dart rename to lib/database/db/app_database.dart index db35490..3ad64c6 100644 --- a/lib/db/db/app_database.dart +++ b/lib/database/db/app_database.dart @@ -1,11 +1,15 @@ import 'package:drift/drift.dart'; import 'package:drift_flutter/drift_flutter.dart'; -import 'package:ascend/db/db/dao/note_dao.dart'; -import 'package:ascend/db/db/dao/task_category_dao.dart'; -import 'package:ascend/db/db/dao/user_progress_dao.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; -import 'package:ascend/db/db/tables/task_categories_table.dart'; -import 'package:ascend/db/db/tables/user_progress_table.dart'; +import 'package:ascend/database/db/dao/task_dao.dart'; +import 'package:ascend/database/db/dao/folder/folder_dao.dart'; +import 'package:ascend/database/db/dao/note/note_dao.dart'; +import 'package:ascend/database/db/dao/task_category_dao.dart'; +import 'package:ascend/database/db/dao/user_progress_dao.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; +import 'package:ascend/database/db/tables/TABLES/folders_table.dart'; +import 'package:ascend/database/db/tables/TABLES/notes_table.dart'; +import 'package:ascend/database/db/tables/task_categories_table.dart'; +import 'package:ascend/database/db/tables/user_progress_table.dart'; import 'package:ascend/core/constants/constants.dart'; import 'package:path_provider/path_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -25,14 +29,20 @@ AppDatabase appDatabaseProvider(Ref ref) { // this is the main db class @DriftDatabase( - tables: [NoteTable, TaskCategoriesTable, UserProgressTable], - daos: [NoteDao, TaskCategoryDao, UserProgressDao], + tables: [ + NoteTable, + TaskCategoriesTable, + UserProgressTable, + FoldersTable, + NotesTable, + ], + daos: [NoteDao, NotesDao, FolderDao, TaskCategoryDao, UserProgressDao], ) class AppDatabase extends _$AppDatabase { AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection()); @override - int get schemaVersion => 4; + int get schemaVersion => 5; // migration strategy to add new columns to the db @override @@ -55,6 +65,10 @@ class AppDatabase extends _$AppDatabase { await migrator.addColumn(noteTable, noteTable.difficulty); await migrator.createTable(userProgressTable); } + if (from < 5) { + await migrator.createTable(foldersTable); + await migrator.createTable(notesTable); + } }, ); @@ -62,6 +76,8 @@ class AppDatabase extends _$AppDatabase { await transaction(() async { await delete(noteTable).go(); await delete(taskCategoriesTable).go(); + await delete(foldersTable).go(); + await delete(notesTable).go(); }); } diff --git a/lib/db/db/app_database.g.dart b/lib/database/db/app_database.g.dart similarity index 60% rename from lib/db/db/app_database.g.dart rename to lib/database/db/app_database.g.dart index 5316357..5b06d4b 100644 --- a/lib/db/db/app_database.g.dart +++ b/lib/database/db/app_database.g.dart @@ -1512,6 +1512,1072 @@ class UserProgressTableCompanion } } +class $FoldersTableTable extends FoldersTable + with TableInfo<$FoldersTableTable, FoldersTableData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $FoldersTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _colorMeta = const VerificationMeta('color'); + @override + late final GeneratedColumn color = GeneratedColumn( + 'color', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _createdAtMeta = const VerificationMeta( + 'createdAt', + ); + @override + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', + aliasedName, + false, + type: DriftSqlType.dateTime, + requiredDuringInsert: true, + ); + static const VerificationMeta _updatedAtMeta = const VerificationMeta( + 'updatedAt', + ); + @override + late final GeneratedColumn updatedAt = GeneratedColumn( + 'updated_at', + aliasedName, + false, + type: DriftSqlType.dateTime, + requiredDuringInsert: true, + ); + static const VerificationMeta _versionMeta = const VerificationMeta( + 'version', + ); + @override + late final GeneratedColumn version = GeneratedColumn( + 'version', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultValue: const Constant(1), + ); + static const VerificationMeta _isDeletedMeta = const VerificationMeta( + 'isDeleted', + ); + @override + late final GeneratedColumn isDeleted = GeneratedColumn( + 'is_deleted', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_deleted" IN (0, 1))', + ), + defaultValue: const Constant(false), + ); + @override + List get $columns => [ + id, + name, + color, + createdAt, + updatedAt, + version, + isDeleted, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'folders_table'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } else if (isInserting) { + context.missing(_nameMeta); + } + if (data.containsKey('color')) { + context.handle( + _colorMeta, + color.isAcceptableOrUnknown(data['color']!, _colorMeta), + ); + } else if (isInserting) { + context.missing(_colorMeta); + } + if (data.containsKey('created_at')) { + context.handle( + _createdAtMeta, + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta), + ); + } else if (isInserting) { + context.missing(_createdAtMeta); + } + if (data.containsKey('updated_at')) { + context.handle( + _updatedAtMeta, + updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta), + ); + } else if (isInserting) { + context.missing(_updatedAtMeta); + } + if (data.containsKey('version')) { + context.handle( + _versionMeta, + version.isAcceptableOrUnknown(data['version']!, _versionMeta), + ); + } + if (data.containsKey('is_deleted')) { + context.handle( + _isDeletedMeta, + isDeleted.isAcceptableOrUnknown(data['is_deleted']!, _isDeletedMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + FoldersTableData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return FoldersTableData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}id'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + )!, + color: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}color'], + )!, + createdAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}created_at'], + )!, + updatedAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}updated_at'], + )!, + version: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}version'], + )!, + isDeleted: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_deleted'], + )!, + ); + } + + @override + $FoldersTableTable createAlias(String alias) { + return $FoldersTableTable(attachedDatabase, alias); + } +} + +class FoldersTableData extends DataClass + implements Insertable { + final String id; + final String name; + final int color; + final DateTime createdAt; + final DateTime updatedAt; + final int version; + final bool isDeleted; + const FoldersTableData({ + required this.id, + required this.name, + required this.color, + required this.createdAt, + required this.updatedAt, + required this.version, + required this.isDeleted, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + map['color'] = Variable(color); + map['created_at'] = Variable(createdAt); + map['updated_at'] = Variable(updatedAt); + map['version'] = Variable(version); + map['is_deleted'] = Variable(isDeleted); + return map; + } + + FoldersTableCompanion toCompanion(bool nullToAbsent) { + return FoldersTableCompanion( + id: Value(id), + name: Value(name), + color: Value(color), + createdAt: Value(createdAt), + updatedAt: Value(updatedAt), + version: Value(version), + isDeleted: Value(isDeleted), + ); + } + + factory FoldersTableData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return FoldersTableData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + color: serializer.fromJson(json['color']), + createdAt: serializer.fromJson(json['createdAt']), + updatedAt: serializer.fromJson(json['updatedAt']), + version: serializer.fromJson(json['version']), + isDeleted: serializer.fromJson(json['isDeleted']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + 'color': serializer.toJson(color), + 'createdAt': serializer.toJson(createdAt), + 'updatedAt': serializer.toJson(updatedAt), + 'version': serializer.toJson(version), + 'isDeleted': serializer.toJson(isDeleted), + }; + } + + FoldersTableData copyWith({ + String? id, + String? name, + int? color, + DateTime? createdAt, + DateTime? updatedAt, + int? version, + bool? isDeleted, + }) => FoldersTableData( + id: id ?? this.id, + name: name ?? this.name, + color: color ?? this.color, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + ); + FoldersTableData copyWithCompanion(FoldersTableCompanion data) { + return FoldersTableData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + color: data.color.present ? data.color.value : this.color, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + updatedAt: data.updatedAt.present ? data.updatedAt.value : this.updatedAt, + version: data.version.present ? data.version.value : this.version, + isDeleted: data.isDeleted.present ? data.isDeleted.value : this.isDeleted, + ); + } + + @override + String toString() { + return (StringBuffer('FoldersTableData(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('color: $color, ') + ..write('createdAt: $createdAt, ') + ..write('updatedAt: $updatedAt, ') + ..write('version: $version, ') + ..write('isDeleted: $isDeleted') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, name, color, createdAt, updatedAt, version, isDeleted); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is FoldersTableData && + other.id == this.id && + other.name == this.name && + other.color == this.color && + other.createdAt == this.createdAt && + other.updatedAt == this.updatedAt && + other.version == this.version && + other.isDeleted == this.isDeleted); +} + +class FoldersTableCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value color; + final Value createdAt; + final Value updatedAt; + final Value version; + final Value isDeleted; + final Value rowid; + const FoldersTableCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.color = const Value.absent(), + this.createdAt = const Value.absent(), + this.updatedAt = const Value.absent(), + this.version = const Value.absent(), + this.isDeleted = const Value.absent(), + this.rowid = const Value.absent(), + }); + FoldersTableCompanion.insert({ + required String id, + required String name, + required int color, + required DateTime createdAt, + required DateTime updatedAt, + this.version = const Value.absent(), + this.isDeleted = const Value.absent(), + this.rowid = const Value.absent(), + }) : id = Value(id), + name = Value(name), + color = Value(color), + createdAt = Value(createdAt), + updatedAt = Value(updatedAt); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? color, + Expression? createdAt, + Expression? updatedAt, + Expression? version, + Expression? isDeleted, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (color != null) 'color': color, + if (createdAt != null) 'created_at': createdAt, + if (updatedAt != null) 'updated_at': updatedAt, + if (version != null) 'version': version, + if (isDeleted != null) 'is_deleted': isDeleted, + if (rowid != null) 'rowid': rowid, + }); + } + + FoldersTableCompanion copyWith({ + Value? id, + Value? name, + Value? color, + Value? createdAt, + Value? updatedAt, + Value? version, + Value? isDeleted, + Value? rowid, + }) { + return FoldersTableCompanion( + id: id ?? this.id, + name: name ?? this.name, + color: color ?? this.color, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (color.present) { + map['color'] = Variable(color.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + if (updatedAt.present) { + map['updated_at'] = Variable(updatedAt.value); + } + if (version.present) { + map['version'] = Variable(version.value); + } + if (isDeleted.present) { + map['is_deleted'] = Variable(isDeleted.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('FoldersTableCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('color: $color, ') + ..write('createdAt: $createdAt, ') + ..write('updatedAt: $updatedAt, ') + ..write('version: $version, ') + ..write('isDeleted: $isDeleted, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $NotesTableTable extends NotesTable + with TableInfo<$NotesTableTable, NotesTableData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $NotesTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _folderIdMeta = const VerificationMeta( + 'folderId', + ); + @override + late final GeneratedColumn folderId = GeneratedColumn( + 'folder_id', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _contentMeta = const VerificationMeta( + 'content', + ); + @override + late final GeneratedColumn content = GeneratedColumn( + 'content', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _createdAtMeta = const VerificationMeta( + 'createdAt', + ); + @override + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', + aliasedName, + false, + type: DriftSqlType.dateTime, + requiredDuringInsert: true, + ); + static const VerificationMeta _updatedAtMeta = const VerificationMeta( + 'updatedAt', + ); + @override + late final GeneratedColumn updatedAt = GeneratedColumn( + 'updated_at', + aliasedName, + false, + type: DriftSqlType.dateTime, + requiredDuringInsert: true, + ); + static const VerificationMeta _versionMeta = const VerificationMeta( + 'version', + ); + @override + late final GeneratedColumn version = GeneratedColumn( + 'version', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultValue: const Constant(1), + ); + static const VerificationMeta _isDeletedMeta = const VerificationMeta( + 'isDeleted', + ); + @override + late final GeneratedColumn isDeleted = GeneratedColumn( + 'is_deleted', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_deleted" IN (0, 1))', + ), + defaultValue: const Constant(false), + ); + static const VerificationMeta _isProtectedMeta = const VerificationMeta( + 'isProtected', + ); + @override + late final GeneratedColumn isProtected = GeneratedColumn( + 'is_protected', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_protected" IN (0, 1))', + ), + defaultValue: const Constant(false), + ); + static const VerificationMeta _isPinnedMeta = const VerificationMeta( + 'isPinned', + ); + @override + late final GeneratedColumn isPinned = GeneratedColumn( + 'is_pinned', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_pinned" IN (0, 1))', + ), + defaultValue: const Constant(false), + ); + @override + List get $columns => [ + id, + folderId, + title, + content, + createdAt, + updatedAt, + version, + isDeleted, + isProtected, + isPinned, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'notes_table'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + if (data.containsKey('folder_id')) { + context.handle( + _folderIdMeta, + folderId.isAcceptableOrUnknown(data['folder_id']!, _folderIdMeta), + ); + } + if (data.containsKey('title')) { + context.handle( + _titleMeta, + title.isAcceptableOrUnknown(data['title']!, _titleMeta), + ); + } else if (isInserting) { + context.missing(_titleMeta); + } + if (data.containsKey('content')) { + context.handle( + _contentMeta, + content.isAcceptableOrUnknown(data['content']!, _contentMeta), + ); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('created_at')) { + context.handle( + _createdAtMeta, + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta), + ); + } else if (isInserting) { + context.missing(_createdAtMeta); + } + if (data.containsKey('updated_at')) { + context.handle( + _updatedAtMeta, + updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta), + ); + } else if (isInserting) { + context.missing(_updatedAtMeta); + } + if (data.containsKey('version')) { + context.handle( + _versionMeta, + version.isAcceptableOrUnknown(data['version']!, _versionMeta), + ); + } + if (data.containsKey('is_deleted')) { + context.handle( + _isDeletedMeta, + isDeleted.isAcceptableOrUnknown(data['is_deleted']!, _isDeletedMeta), + ); + } + if (data.containsKey('is_protected')) { + context.handle( + _isProtectedMeta, + isProtected.isAcceptableOrUnknown( + data['is_protected']!, + _isProtectedMeta, + ), + ); + } + if (data.containsKey('is_pinned')) { + context.handle( + _isPinnedMeta, + isPinned.isAcceptableOrUnknown(data['is_pinned']!, _isPinnedMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + NotesTableData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return NotesTableData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}id'], + )!, + folderId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}folder_id'], + ), + title: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}title'], + )!, + content: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}content'], + )!, + createdAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}created_at'], + )!, + updatedAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}updated_at'], + )!, + version: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}version'], + )!, + isDeleted: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_deleted'], + )!, + isProtected: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_protected'], + )!, + isPinned: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_pinned'], + )!, + ); + } + + @override + $NotesTableTable createAlias(String alias) { + return $NotesTableTable(attachedDatabase, alias); + } +} + +class NotesTableData extends DataClass implements Insertable { + final String id; + final String? folderId; + final String title; + final String content; + final DateTime createdAt; + final DateTime updatedAt; + final int version; + final bool isDeleted; + final bool isProtected; + final bool isPinned; + const NotesTableData({ + required this.id, + this.folderId, + required this.title, + required this.content, + required this.createdAt, + required this.updatedAt, + required this.version, + required this.isDeleted, + required this.isProtected, + required this.isPinned, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + if (!nullToAbsent || folderId != null) { + map['folder_id'] = Variable(folderId); + } + map['title'] = Variable(title); + map['content'] = Variable(content); + map['created_at'] = Variable(createdAt); + map['updated_at'] = Variable(updatedAt); + map['version'] = Variable(version); + map['is_deleted'] = Variable(isDeleted); + map['is_protected'] = Variable(isProtected); + map['is_pinned'] = Variable(isPinned); + return map; + } + + NotesTableCompanion toCompanion(bool nullToAbsent) { + return NotesTableCompanion( + id: Value(id), + folderId: folderId == null && nullToAbsent + ? const Value.absent() + : Value(folderId), + title: Value(title), + content: Value(content), + createdAt: Value(createdAt), + updatedAt: Value(updatedAt), + version: Value(version), + isDeleted: Value(isDeleted), + isProtected: Value(isProtected), + isPinned: Value(isPinned), + ); + } + + factory NotesTableData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return NotesTableData( + id: serializer.fromJson(json['id']), + folderId: serializer.fromJson(json['folderId']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + createdAt: serializer.fromJson(json['createdAt']), + updatedAt: serializer.fromJson(json['updatedAt']), + version: serializer.fromJson(json['version']), + isDeleted: serializer.fromJson(json['isDeleted']), + isProtected: serializer.fromJson(json['isProtected']), + isPinned: serializer.fromJson(json['isPinned']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'folderId': serializer.toJson(folderId), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'createdAt': serializer.toJson(createdAt), + 'updatedAt': serializer.toJson(updatedAt), + 'version': serializer.toJson(version), + 'isDeleted': serializer.toJson(isDeleted), + 'isProtected': serializer.toJson(isProtected), + 'isPinned': serializer.toJson(isPinned), + }; + } + + NotesTableData copyWith({ + String? id, + Value folderId = const Value.absent(), + String? title, + String? content, + DateTime? createdAt, + DateTime? updatedAt, + int? version, + bool? isDeleted, + bool? isProtected, + bool? isPinned, + }) => NotesTableData( + id: id ?? this.id, + folderId: folderId.present ? folderId.value : this.folderId, + title: title ?? this.title, + content: content ?? this.content, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + isProtected: isProtected ?? this.isProtected, + isPinned: isPinned ?? this.isPinned, + ); + NotesTableData copyWithCompanion(NotesTableCompanion data) { + return NotesTableData( + id: data.id.present ? data.id.value : this.id, + folderId: data.folderId.present ? data.folderId.value : this.folderId, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + updatedAt: data.updatedAt.present ? data.updatedAt.value : this.updatedAt, + version: data.version.present ? data.version.value : this.version, + isDeleted: data.isDeleted.present ? data.isDeleted.value : this.isDeleted, + isProtected: data.isProtected.present + ? data.isProtected.value + : this.isProtected, + isPinned: data.isPinned.present ? data.isPinned.value : this.isPinned, + ); + } + + @override + String toString() { + return (StringBuffer('NotesTableData(') + ..write('id: $id, ') + ..write('folderId: $folderId, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('createdAt: $createdAt, ') + ..write('updatedAt: $updatedAt, ') + ..write('version: $version, ') + ..write('isDeleted: $isDeleted, ') + ..write('isProtected: $isProtected, ') + ..write('isPinned: $isPinned') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + folderId, + title, + content, + createdAt, + updatedAt, + version, + isDeleted, + isProtected, + isPinned, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is NotesTableData && + other.id == this.id && + other.folderId == this.folderId && + other.title == this.title && + other.content == this.content && + other.createdAt == this.createdAt && + other.updatedAt == this.updatedAt && + other.version == this.version && + other.isDeleted == this.isDeleted && + other.isProtected == this.isProtected && + other.isPinned == this.isPinned); +} + +class NotesTableCompanion extends UpdateCompanion { + final Value id; + final Value folderId; + final Value title; + final Value content; + final Value createdAt; + final Value updatedAt; + final Value version; + final Value isDeleted; + final Value isProtected; + final Value isPinned; + final Value rowid; + const NotesTableCompanion({ + this.id = const Value.absent(), + this.folderId = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.createdAt = const Value.absent(), + this.updatedAt = const Value.absent(), + this.version = const Value.absent(), + this.isDeleted = const Value.absent(), + this.isProtected = const Value.absent(), + this.isPinned = const Value.absent(), + this.rowid = const Value.absent(), + }); + NotesTableCompanion.insert({ + required String id, + this.folderId = const Value.absent(), + required String title, + required String content, + required DateTime createdAt, + required DateTime updatedAt, + this.version = const Value.absent(), + this.isDeleted = const Value.absent(), + this.isProtected = const Value.absent(), + this.isPinned = const Value.absent(), + this.rowid = const Value.absent(), + }) : id = Value(id), + title = Value(title), + content = Value(content), + createdAt = Value(createdAt), + updatedAt = Value(updatedAt); + static Insertable custom({ + Expression? id, + Expression? folderId, + Expression? title, + Expression? content, + Expression? createdAt, + Expression? updatedAt, + Expression? version, + Expression? isDeleted, + Expression? isProtected, + Expression? isPinned, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (folderId != null) 'folder_id': folderId, + if (title != null) 'title': title, + if (content != null) 'content': content, + if (createdAt != null) 'created_at': createdAt, + if (updatedAt != null) 'updated_at': updatedAt, + if (version != null) 'version': version, + if (isDeleted != null) 'is_deleted': isDeleted, + if (isProtected != null) 'is_protected': isProtected, + if (isPinned != null) 'is_pinned': isPinned, + if (rowid != null) 'rowid': rowid, + }); + } + + NotesTableCompanion copyWith({ + Value? id, + Value? folderId, + Value? title, + Value? content, + Value? createdAt, + Value? updatedAt, + Value? version, + Value? isDeleted, + Value? isProtected, + Value? isPinned, + Value? rowid, + }) { + return NotesTableCompanion( + id: id ?? this.id, + folderId: folderId ?? this.folderId, + title: title ?? this.title, + content: content ?? this.content, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + isProtected: isProtected ?? this.isProtected, + isPinned: isPinned ?? this.isPinned, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (folderId.present) { + map['folder_id'] = Variable(folderId.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['content'] = Variable(content.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + if (updatedAt.present) { + map['updated_at'] = Variable(updatedAt.value); + } + if (version.present) { + map['version'] = Variable(version.value); + } + if (isDeleted.present) { + map['is_deleted'] = Variable(isDeleted.value); + } + if (isProtected.present) { + map['is_protected'] = Variable(isProtected.value); + } + if (isPinned.present) { + map['is_pinned'] = Variable(isPinned.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('NotesTableCompanion(') + ..write('id: $id, ') + ..write('folderId: $folderId, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('createdAt: $createdAt, ') + ..write('updatedAt: $updatedAt, ') + ..write('version: $version, ') + ..write('isDeleted: $isDeleted, ') + ..write('isProtected: $isProtected, ') + ..write('isPinned: $isPinned, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + abstract class _$AppDatabase extends GeneratedDatabase { _$AppDatabase(QueryExecutor e) : super(e); $AppDatabaseManager get managers => $AppDatabaseManager(this); @@ -1520,54 +2586,564 @@ abstract class _$AppDatabase extends GeneratedDatabase { $TaskCategoriesTableTable(this); late final $UserProgressTableTable userProgressTable = $UserProgressTableTable(this); + late final $FoldersTableTable foldersTable = $FoldersTableTable(this); + late final $NotesTableTable notesTable = $NotesTableTable(this); late final NoteDao noteDao = NoteDao(this as AppDatabase); + late final NotesDao notesDao = NotesDao(this as AppDatabase); + late final FolderDao folderDao = FolderDao(this as AppDatabase); late final TaskCategoryDao taskCategoryDao = TaskCategoryDao( this as AppDatabase, ); - late final UserProgressDao userProgressDao = UserProgressDao( - this as AppDatabase, + late final UserProgressDao userProgressDao = UserProgressDao( + this as AppDatabase, + ); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + noteTable, + taskCategoriesTable, + userProgressTable, + foldersTable, + notesTable, + ]; +} + +typedef $$NoteTableTableCreateCompanionBuilder = + NoteTableCompanion Function({ + Value id, + required String title, + Value description, + Value isCompleted, + Value dueDate, + Value createdAt, + Value updatedAt, + Value priority, + Value taskType, + Value difficulty, + }); +typedef $$NoteTableTableUpdateCompanionBuilder = + NoteTableCompanion Function({ + Value id, + Value title, + Value description, + Value isCompleted, + Value dueDate, + Value createdAt, + Value updatedAt, + Value priority, + Value taskType, + Value difficulty, + }); + +class $$NoteTableTableFilterComposer + extends Composer<_$AppDatabase, $NoteTableTable> { + $$NoteTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isCompleted => $composableBuilder( + column: $table.isCompleted, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get dueDate => $composableBuilder( + column: $table.dueDate, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get updatedAt => $composableBuilder( + column: $table.updatedAt, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get priority => + $composableBuilder( + column: $table.priority, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get taskType => $composableBuilder( + column: $table.taskType, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters + get difficulty => $composableBuilder( + column: $table.difficulty, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); +} + +class $$NoteTableTableOrderingComposer + extends Composer<_$AppDatabase, $NoteTableTable> { + $$NoteTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isCompleted => $composableBuilder( + column: $table.isCompleted, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get dueDate => $composableBuilder( + column: $table.dueDate, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get updatedAt => $composableBuilder( + column: $table.updatedAt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get priority => $composableBuilder( + column: $table.priority, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get taskType => $composableBuilder( + column: $table.taskType, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get difficulty => $composableBuilder( + column: $table.difficulty, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$NoteTableTableAnnotationComposer + extends Composer<_$AppDatabase, $NoteTableTable> { + $$NoteTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get title => + $composableBuilder(column: $table.title, builder: (column) => column); + + GeneratedColumn get description => $composableBuilder( + column: $table.description, + builder: (column) => column, + ); + + GeneratedColumn get isCompleted => $composableBuilder( + column: $table.isCompleted, + builder: (column) => column, + ); + + GeneratedColumn get dueDate => + $composableBuilder(column: $table.dueDate, builder: (column) => column); + + GeneratedColumn get createdAt => + $composableBuilder(column: $table.createdAt, builder: (column) => column); + + GeneratedColumn get updatedAt => + $composableBuilder(column: $table.updatedAt, builder: (column) => column); + + GeneratedColumnWithTypeConverter get priority => + $composableBuilder(column: $table.priority, builder: (column) => column); + + GeneratedColumn get taskType => + $composableBuilder(column: $table.taskType, builder: (column) => column); + + GeneratedColumnWithTypeConverter get difficulty => + $composableBuilder( + column: $table.difficulty, + builder: (column) => column, + ); +} + +class $$NoteTableTableTableManager + extends + RootTableManager< + _$AppDatabase, + $NoteTableTable, + NoteTableData, + $$NoteTableTableFilterComposer, + $$NoteTableTableOrderingComposer, + $$NoteTableTableAnnotationComposer, + $$NoteTableTableCreateCompanionBuilder, + $$NoteTableTableUpdateCompanionBuilder, + ( + NoteTableData, + BaseReferences<_$AppDatabase, $NoteTableTable, NoteTableData>, + ), + NoteTableData, + PrefetchHooks Function() + > { + $$NoteTableTableTableManager(_$AppDatabase db, $NoteTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$NoteTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$NoteTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$NoteTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value title = const Value.absent(), + Value description = const Value.absent(), + Value isCompleted = const Value.absent(), + Value dueDate = const Value.absent(), + Value createdAt = const Value.absent(), + Value updatedAt = const Value.absent(), + Value priority = const Value.absent(), + Value taskType = const Value.absent(), + Value difficulty = const Value.absent(), + }) => NoteTableCompanion( + id: id, + title: title, + description: description, + isCompleted: isCompleted, + dueDate: dueDate, + createdAt: createdAt, + updatedAt: updatedAt, + priority: priority, + taskType: taskType, + difficulty: difficulty, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String title, + Value description = const Value.absent(), + Value isCompleted = const Value.absent(), + Value dueDate = const Value.absent(), + Value createdAt = const Value.absent(), + Value updatedAt = const Value.absent(), + Value priority = const Value.absent(), + Value taskType = const Value.absent(), + Value difficulty = const Value.absent(), + }) => NoteTableCompanion.insert( + id: id, + title: title, + description: description, + isCompleted: isCompleted, + dueDate: dueDate, + createdAt: createdAt, + updatedAt: updatedAt, + priority: priority, + taskType: taskType, + difficulty: difficulty, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$NoteTableTableProcessedTableManager = + ProcessedTableManager< + _$AppDatabase, + $NoteTableTable, + NoteTableData, + $$NoteTableTableFilterComposer, + $$NoteTableTableOrderingComposer, + $$NoteTableTableAnnotationComposer, + $$NoteTableTableCreateCompanionBuilder, + $$NoteTableTableUpdateCompanionBuilder, + ( + NoteTableData, + BaseReferences<_$AppDatabase, $NoteTableTable, NoteTableData>, + ), + NoteTableData, + PrefetchHooks Function() + >; +typedef $$TaskCategoriesTableTableCreateCompanionBuilder = + TaskCategoriesTableCompanion Function({ + Value id, + required String name, + required String icon, + Value createdAt, + Value updatedAt, + }); +typedef $$TaskCategoriesTableTableUpdateCompanionBuilder = + TaskCategoriesTableCompanion Function({ + Value id, + Value name, + Value icon, + Value createdAt, + Value updatedAt, + }); + +class $$TaskCategoriesTableTableFilterComposer + extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { + $$TaskCategoriesTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get icon => $composableBuilder( + column: $table.icon, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get updatedAt => $composableBuilder( + column: $table.updatedAt, + builder: (column) => ColumnFilters(column), ); - @override - Iterable> get allTables => - allSchemaEntities.whereType>(); - @override - List get allSchemaEntities => [ - noteTable, - taskCategoriesTable, - userProgressTable, - ]; } -typedef $$NoteTableTableCreateCompanionBuilder = - NoteTableCompanion Function({ +class $$TaskCategoriesTableTableOrderingComposer + extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { + $$TaskCategoriesTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get icon => $composableBuilder( + column: $table.icon, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get updatedAt => $composableBuilder( + column: $table.updatedAt, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$TaskCategoriesTableTableAnnotationComposer + extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { + $$TaskCategoriesTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + GeneratedColumn get icon => + $composableBuilder(column: $table.icon, builder: (column) => column); + + GeneratedColumn get createdAt => + $composableBuilder(column: $table.createdAt, builder: (column) => column); + + GeneratedColumn get updatedAt => + $composableBuilder(column: $table.updatedAt, builder: (column) => column); +} + +class $$TaskCategoriesTableTableTableManager + extends + RootTableManager< + _$AppDatabase, + $TaskCategoriesTableTable, + TaskCategoriesTableData, + $$TaskCategoriesTableTableFilterComposer, + $$TaskCategoriesTableTableOrderingComposer, + $$TaskCategoriesTableTableAnnotationComposer, + $$TaskCategoriesTableTableCreateCompanionBuilder, + $$TaskCategoriesTableTableUpdateCompanionBuilder, + ( + TaskCategoriesTableData, + BaseReferences< + _$AppDatabase, + $TaskCategoriesTableTable, + TaskCategoriesTableData + >, + ), + TaskCategoriesTableData, + PrefetchHooks Function() + > { + $$TaskCategoriesTableTableTableManager( + _$AppDatabase db, + $TaskCategoriesTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TaskCategoriesTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$TaskCategoriesTableTableOrderingComposer( + $db: db, + $table: table, + ), + createComputedFieldComposer: () => + $$TaskCategoriesTableTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value icon = const Value.absent(), + Value createdAt = const Value.absent(), + Value updatedAt = const Value.absent(), + }) => TaskCategoriesTableCompanion( + id: id, + name: name, + icon: icon, + createdAt: createdAt, + updatedAt: updatedAt, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String name, + required String icon, + Value createdAt = const Value.absent(), + Value updatedAt = const Value.absent(), + }) => TaskCategoriesTableCompanion.insert( + id: id, + name: name, + icon: icon, + createdAt: createdAt, + updatedAt: updatedAt, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$TaskCategoriesTableTableProcessedTableManager = + ProcessedTableManager< + _$AppDatabase, + $TaskCategoriesTableTable, + TaskCategoriesTableData, + $$TaskCategoriesTableTableFilterComposer, + $$TaskCategoriesTableTableOrderingComposer, + $$TaskCategoriesTableTableAnnotationComposer, + $$TaskCategoriesTableTableCreateCompanionBuilder, + $$TaskCategoriesTableTableUpdateCompanionBuilder, + ( + TaskCategoriesTableData, + BaseReferences< + _$AppDatabase, + $TaskCategoriesTableTable, + TaskCategoriesTableData + >, + ), + TaskCategoriesTableData, + PrefetchHooks Function() + >; +typedef $$UserProgressTableTableCreateCompanionBuilder = + UserProgressTableCompanion Function({ Value id, - required String title, - Value description, - Value isCompleted, - Value dueDate, + Value totalPoints, + Value currentLevel, + Value currentStreak, + Value lastCompletionDate, + Value weeklyStreakRewardClaimed, Value createdAt, Value updatedAt, - Value priority, - Value taskType, - Value difficulty, }); -typedef $$NoteTableTableUpdateCompanionBuilder = - NoteTableCompanion Function({ +typedef $$UserProgressTableTableUpdateCompanionBuilder = + UserProgressTableCompanion Function({ Value id, - Value title, - Value description, - Value isCompleted, - Value dueDate, + Value totalPoints, + Value currentLevel, + Value currentStreak, + Value lastCompletionDate, + Value weeklyStreakRewardClaimed, Value createdAt, Value updatedAt, - Value priority, - Value taskType, - Value difficulty, }); -class $$NoteTableTableFilterComposer - extends Composer<_$AppDatabase, $NoteTableTable> { - $$NoteTableTableFilterComposer({ +class $$UserProgressTableTableFilterComposer + extends Composer<_$AppDatabase, $UserProgressTableTable> { + $$UserProgressTableTableFilterComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -1579,23 +3155,28 @@ class $$NoteTableTableFilterComposer builder: (column) => ColumnFilters(column), ); - ColumnFilters get title => $composableBuilder( - column: $table.title, + ColumnFilters get totalPoints => $composableBuilder( + column: $table.totalPoints, builder: (column) => ColumnFilters(column), ); - ColumnFilters get description => $composableBuilder( - column: $table.description, + ColumnFilters get currentLevel => $composableBuilder( + column: $table.currentLevel, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get currentStreak => $composableBuilder( + column: $table.currentStreak, builder: (column) => ColumnFilters(column), ); - ColumnFilters get isCompleted => $composableBuilder( - column: $table.isCompleted, + ColumnFilters get lastCompletionDate => $composableBuilder( + column: $table.lastCompletionDate, builder: (column) => ColumnFilters(column), ); - ColumnFilters get dueDate => $composableBuilder( - column: $table.dueDate, + ColumnFilters get weeklyStreakRewardClaimed => $composableBuilder( + column: $table.weeklyStreakRewardClaimed, builder: (column) => ColumnFilters(column), ); @@ -1608,28 +3189,11 @@ class $$NoteTableTableFilterComposer column: $table.updatedAt, builder: (column) => ColumnFilters(column), ); - - ColumnWithTypeConverterFilters get priority => - $composableBuilder( - column: $table.priority, - builder: (column) => ColumnWithTypeConverterFilters(column), - ); - - ColumnFilters get taskType => $composableBuilder( - column: $table.taskType, - builder: (column) => ColumnFilters(column), - ); - - ColumnWithTypeConverterFilters - get difficulty => $composableBuilder( - column: $table.difficulty, - builder: (column) => ColumnWithTypeConverterFilters(column), - ); } -class $$NoteTableTableOrderingComposer - extends Composer<_$AppDatabase, $NoteTableTable> { - $$NoteTableTableOrderingComposer({ +class $$UserProgressTableTableOrderingComposer + extends Composer<_$AppDatabase, $UserProgressTableTable> { + $$UserProgressTableTableOrderingComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -1641,23 +3205,28 @@ class $$NoteTableTableOrderingComposer builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get title => $composableBuilder( - column: $table.title, + ColumnOrderings get totalPoints => $composableBuilder( + column: $table.totalPoints, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get description => $composableBuilder( - column: $table.description, + ColumnOrderings get currentLevel => $composableBuilder( + column: $table.currentLevel, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get isCompleted => $composableBuilder( - column: $table.isCompleted, + ColumnOrderings get currentStreak => $composableBuilder( + column: $table.currentStreak, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get dueDate => $composableBuilder( - column: $table.dueDate, + ColumnOrderings get lastCompletionDate => $composableBuilder( + column: $table.lastCompletionDate, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get weeklyStreakRewardClaimed => $composableBuilder( + column: $table.weeklyStreakRewardClaimed, builder: (column) => ColumnOrderings(column), ); @@ -1670,26 +3239,11 @@ class $$NoteTableTableOrderingComposer column: $table.updatedAt, builder: (column) => ColumnOrderings(column), ); - - ColumnOrderings get priority => $composableBuilder( - column: $table.priority, - builder: (column) => ColumnOrderings(column), - ); - - ColumnOrderings get taskType => $composableBuilder( - column: $table.taskType, - builder: (column) => ColumnOrderings(column), - ); - - ColumnOrderings get difficulty => $composableBuilder( - column: $table.difficulty, - builder: (column) => ColumnOrderings(column), - ); } -class $$NoteTableTableAnnotationComposer - extends Composer<_$AppDatabase, $NoteTableTable> { - $$NoteTableTableAnnotationComposer({ +class $$UserProgressTableTableAnnotationComposer + extends Composer<_$AppDatabase, $UserProgressTableTable> { + $$UserProgressTableTableAnnotationComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -1699,117 +3253,115 @@ class $$NoteTableTableAnnotationComposer GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); - GeneratedColumn get title => - $composableBuilder(column: $table.title, builder: (column) => column); + GeneratedColumn get totalPoints => $composableBuilder( + column: $table.totalPoints, + builder: (column) => column, + ); - GeneratedColumn get description => $composableBuilder( - column: $table.description, + GeneratedColumn get currentLevel => $composableBuilder( + column: $table.currentLevel, builder: (column) => column, ); - GeneratedColumn get isCompleted => $composableBuilder( - column: $table.isCompleted, + GeneratedColumn get currentStreak => $composableBuilder( + column: $table.currentStreak, builder: (column) => column, ); - GeneratedColumn get dueDate => - $composableBuilder(column: $table.dueDate, builder: (column) => column); + GeneratedColumn get lastCompletionDate => $composableBuilder( + column: $table.lastCompletionDate, + builder: (column) => column, + ); + + GeneratedColumn get weeklyStreakRewardClaimed => $composableBuilder( + column: $table.weeklyStreakRewardClaimed, + builder: (column) => column, + ); GeneratedColumn get createdAt => $composableBuilder(column: $table.createdAt, builder: (column) => column); GeneratedColumn get updatedAt => $composableBuilder(column: $table.updatedAt, builder: (column) => column); - - GeneratedColumnWithTypeConverter get priority => - $composableBuilder(column: $table.priority, builder: (column) => column); - - GeneratedColumn get taskType => - $composableBuilder(column: $table.taskType, builder: (column) => column); - - GeneratedColumnWithTypeConverter get difficulty => - $composableBuilder( - column: $table.difficulty, - builder: (column) => column, - ); } -class $$NoteTableTableTableManager +class $$UserProgressTableTableTableManager extends RootTableManager< _$AppDatabase, - $NoteTableTable, - NoteTableData, - $$NoteTableTableFilterComposer, - $$NoteTableTableOrderingComposer, - $$NoteTableTableAnnotationComposer, - $$NoteTableTableCreateCompanionBuilder, - $$NoteTableTableUpdateCompanionBuilder, + $UserProgressTableTable, + UserProgressTableData, + $$UserProgressTableTableFilterComposer, + $$UserProgressTableTableOrderingComposer, + $$UserProgressTableTableAnnotationComposer, + $$UserProgressTableTableCreateCompanionBuilder, + $$UserProgressTableTableUpdateCompanionBuilder, ( - NoteTableData, - BaseReferences<_$AppDatabase, $NoteTableTable, NoteTableData>, + UserProgressTableData, + BaseReferences< + _$AppDatabase, + $UserProgressTableTable, + UserProgressTableData + >, ), - NoteTableData, + UserProgressTableData, PrefetchHooks Function() > { - $$NoteTableTableTableManager(_$AppDatabase db, $NoteTableTable table) - : super( + $$UserProgressTableTableTableManager( + _$AppDatabase db, + $UserProgressTableTable table, + ) : super( TableManagerState( db: db, table: table, createFilteringComposer: () => - $$NoteTableTableFilterComposer($db: db, $table: table), + $$UserProgressTableTableFilterComposer($db: db, $table: table), createOrderingComposer: () => - $$NoteTableTableOrderingComposer($db: db, $table: table), + $$UserProgressTableTableOrderingComposer($db: db, $table: table), createComputedFieldComposer: () => - $$NoteTableTableAnnotationComposer($db: db, $table: table), + $$UserProgressTableTableAnnotationComposer( + $db: db, + $table: table, + ), updateCompanionCallback: ({ Value id = const Value.absent(), - Value title = const Value.absent(), - Value description = const Value.absent(), - Value isCompleted = const Value.absent(), - Value dueDate = const Value.absent(), + Value totalPoints = const Value.absent(), + Value currentLevel = const Value.absent(), + Value currentStreak = const Value.absent(), + Value lastCompletionDate = const Value.absent(), + Value weeklyStreakRewardClaimed = const Value.absent(), Value createdAt = const Value.absent(), Value updatedAt = const Value.absent(), - Value priority = const Value.absent(), - Value taskType = const Value.absent(), - Value difficulty = const Value.absent(), - }) => NoteTableCompanion( + }) => UserProgressTableCompanion( id: id, - title: title, - description: description, - isCompleted: isCompleted, - dueDate: dueDate, + totalPoints: totalPoints, + currentLevel: currentLevel, + currentStreak: currentStreak, + lastCompletionDate: lastCompletionDate, + weeklyStreakRewardClaimed: weeklyStreakRewardClaimed, createdAt: createdAt, updatedAt: updatedAt, - priority: priority, - taskType: taskType, - difficulty: difficulty, ), createCompanionCallback: ({ Value id = const Value.absent(), - required String title, - Value description = const Value.absent(), - Value isCompleted = const Value.absent(), - Value dueDate = const Value.absent(), + Value totalPoints = const Value.absent(), + Value currentLevel = const Value.absent(), + Value currentStreak = const Value.absent(), + Value lastCompletionDate = const Value.absent(), + Value weeklyStreakRewardClaimed = const Value.absent(), Value createdAt = const Value.absent(), Value updatedAt = const Value.absent(), - Value priority = const Value.absent(), - Value taskType = const Value.absent(), - Value difficulty = const Value.absent(), - }) => NoteTableCompanion.insert( + }) => UserProgressTableCompanion.insert( id: id, - title: title, - description: description, - isCompleted: isCompleted, - dueDate: dueDate, + totalPoints: totalPoints, + currentLevel: currentLevel, + currentStreak: currentStreak, + lastCompletionDate: lastCompletionDate, + weeklyStreakRewardClaimed: weeklyStreakRewardClaimed, createdAt: createdAt, updatedAt: updatedAt, - priority: priority, - taskType: taskType, - difficulty: difficulty, ), withReferenceMapper: (p0) => p0 .map((e) => (e.readTable(table), BaseReferences(db, table, e))) @@ -1819,50 +3371,60 @@ class $$NoteTableTableTableManager ); } -typedef $$NoteTableTableProcessedTableManager = +typedef $$UserProgressTableTableProcessedTableManager = ProcessedTableManager< _$AppDatabase, - $NoteTableTable, - NoteTableData, - $$NoteTableTableFilterComposer, - $$NoteTableTableOrderingComposer, - $$NoteTableTableAnnotationComposer, - $$NoteTableTableCreateCompanionBuilder, - $$NoteTableTableUpdateCompanionBuilder, + $UserProgressTableTable, + UserProgressTableData, + $$UserProgressTableTableFilterComposer, + $$UserProgressTableTableOrderingComposer, + $$UserProgressTableTableAnnotationComposer, + $$UserProgressTableTableCreateCompanionBuilder, + $$UserProgressTableTableUpdateCompanionBuilder, ( - NoteTableData, - BaseReferences<_$AppDatabase, $NoteTableTable, NoteTableData>, + UserProgressTableData, + BaseReferences< + _$AppDatabase, + $UserProgressTableTable, + UserProgressTableData + >, ), - NoteTableData, + UserProgressTableData, PrefetchHooks Function() >; -typedef $$TaskCategoriesTableTableCreateCompanionBuilder = - TaskCategoriesTableCompanion Function({ - Value id, +typedef $$FoldersTableTableCreateCompanionBuilder = + FoldersTableCompanion Function({ + required String id, required String name, - required String icon, - Value createdAt, - Value updatedAt, + required int color, + required DateTime createdAt, + required DateTime updatedAt, + Value version, + Value isDeleted, + Value rowid, }); -typedef $$TaskCategoriesTableTableUpdateCompanionBuilder = - TaskCategoriesTableCompanion Function({ - Value id, +typedef $$FoldersTableTableUpdateCompanionBuilder = + FoldersTableCompanion Function({ + Value id, Value name, - Value icon, + Value color, Value createdAt, Value updatedAt, + Value version, + Value isDeleted, + Value rowid, }); -class $$TaskCategoriesTableTableFilterComposer - extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { - $$TaskCategoriesTableTableFilterComposer({ +class $$FoldersTableTableFilterComposer + extends Composer<_$AppDatabase, $FoldersTableTable> { + $$FoldersTableTableFilterComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - ColumnFilters get id => $composableBuilder( + ColumnFilters get id => $composableBuilder( column: $table.id, builder: (column) => ColumnFilters(column), ); @@ -1872,8 +3434,8 @@ class $$TaskCategoriesTableTableFilterComposer builder: (column) => ColumnFilters(column), ); - ColumnFilters get icon => $composableBuilder( - column: $table.icon, + ColumnFilters get color => $composableBuilder( + column: $table.color, builder: (column) => ColumnFilters(column), ); @@ -1886,18 +3448,28 @@ class $$TaskCategoriesTableTableFilterComposer column: $table.updatedAt, builder: (column) => ColumnFilters(column), ); + + ColumnFilters get version => $composableBuilder( + column: $table.version, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isDeleted => $composableBuilder( + column: $table.isDeleted, + builder: (column) => ColumnFilters(column), + ); } -class $$TaskCategoriesTableTableOrderingComposer - extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { - $$TaskCategoriesTableTableOrderingComposer({ +class $$FoldersTableTableOrderingComposer + extends Composer<_$AppDatabase, $FoldersTableTable> { + $$FoldersTableTableOrderingComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - ColumnOrderings get id => $composableBuilder( + ColumnOrderings get id => $composableBuilder( column: $table.id, builder: (column) => ColumnOrderings(column), ); @@ -1907,8 +3479,8 @@ class $$TaskCategoriesTableTableOrderingComposer builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get icon => $composableBuilder( - column: $table.icon, + ColumnOrderings get color => $composableBuilder( + column: $table.color, builder: (column) => ColumnOrderings(column), ); @@ -1921,101 +3493,117 @@ class $$TaskCategoriesTableTableOrderingComposer column: $table.updatedAt, builder: (column) => ColumnOrderings(column), ); + + ColumnOrderings get version => $composableBuilder( + column: $table.version, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isDeleted => $composableBuilder( + column: $table.isDeleted, + builder: (column) => ColumnOrderings(column), + ); } -class $$TaskCategoriesTableTableAnnotationComposer - extends Composer<_$AppDatabase, $TaskCategoriesTableTable> { - $$TaskCategoriesTableTableAnnotationComposer({ +class $$FoldersTableTableAnnotationComposer + extends Composer<_$AppDatabase, $FoldersTableTable> { + $$FoldersTableTableAnnotationComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - GeneratedColumn get id => + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); GeneratedColumn get name => $composableBuilder(column: $table.name, builder: (column) => column); - GeneratedColumn get icon => - $composableBuilder(column: $table.icon, builder: (column) => column); + GeneratedColumn get color => + $composableBuilder(column: $table.color, builder: (column) => column); GeneratedColumn get createdAt => $composableBuilder(column: $table.createdAt, builder: (column) => column); GeneratedColumn get updatedAt => $composableBuilder(column: $table.updatedAt, builder: (column) => column); + + GeneratedColumn get version => + $composableBuilder(column: $table.version, builder: (column) => column); + + GeneratedColumn get isDeleted => + $composableBuilder(column: $table.isDeleted, builder: (column) => column); } -class $$TaskCategoriesTableTableTableManager +class $$FoldersTableTableTableManager extends RootTableManager< _$AppDatabase, - $TaskCategoriesTableTable, - TaskCategoriesTableData, - $$TaskCategoriesTableTableFilterComposer, - $$TaskCategoriesTableTableOrderingComposer, - $$TaskCategoriesTableTableAnnotationComposer, - $$TaskCategoriesTableTableCreateCompanionBuilder, - $$TaskCategoriesTableTableUpdateCompanionBuilder, + $FoldersTableTable, + FoldersTableData, + $$FoldersTableTableFilterComposer, + $$FoldersTableTableOrderingComposer, + $$FoldersTableTableAnnotationComposer, + $$FoldersTableTableCreateCompanionBuilder, + $$FoldersTableTableUpdateCompanionBuilder, ( - TaskCategoriesTableData, - BaseReferences< - _$AppDatabase, - $TaskCategoriesTableTable, - TaskCategoriesTableData - >, + FoldersTableData, + BaseReferences<_$AppDatabase, $FoldersTableTable, FoldersTableData>, ), - TaskCategoriesTableData, + FoldersTableData, PrefetchHooks Function() > { - $$TaskCategoriesTableTableTableManager( - _$AppDatabase db, - $TaskCategoriesTableTable table, - ) : super( + $$FoldersTableTableTableManager(_$AppDatabase db, $FoldersTableTable table) + : super( TableManagerState( db: db, table: table, createFilteringComposer: () => - $$TaskCategoriesTableTableFilterComposer($db: db, $table: table), + $$FoldersTableTableFilterComposer($db: db, $table: table), createOrderingComposer: () => - $$TaskCategoriesTableTableOrderingComposer( - $db: db, - $table: table, - ), + $$FoldersTableTableOrderingComposer($db: db, $table: table), createComputedFieldComposer: () => - $$TaskCategoriesTableTableAnnotationComposer( - $db: db, - $table: table, - ), + $$FoldersTableTableAnnotationComposer($db: db, $table: table), updateCompanionCallback: ({ - Value id = const Value.absent(), + Value id = const Value.absent(), Value name = const Value.absent(), - Value icon = const Value.absent(), + Value color = const Value.absent(), Value createdAt = const Value.absent(), Value updatedAt = const Value.absent(), - }) => TaskCategoriesTableCompanion( + Value version = const Value.absent(), + Value isDeleted = const Value.absent(), + Value rowid = const Value.absent(), + }) => FoldersTableCompanion( id: id, name: name, - icon: icon, + color: color, createdAt: createdAt, updatedAt: updatedAt, + version: version, + isDeleted: isDeleted, + rowid: rowid, ), createCompanionCallback: ({ - Value id = const Value.absent(), + required String id, required String name, - required String icon, - Value createdAt = const Value.absent(), - Value updatedAt = const Value.absent(), - }) => TaskCategoriesTableCompanion.insert( + required int color, + required DateTime createdAt, + required DateTime updatedAt, + Value version = const Value.absent(), + Value isDeleted = const Value.absent(), + Value rowid = const Value.absent(), + }) => FoldersTableCompanion.insert( id: id, name: name, - icon: icon, + color: color, createdAt: createdAt, updatedAt: updatedAt, + version: version, + isDeleted: isDeleted, + rowid: rowid, ), withReferenceMapper: (p0) => p0 .map((e) => (e.readTable(table), BaseReferences(db, table, e))) @@ -2025,271 +3613,294 @@ class $$TaskCategoriesTableTableTableManager ); } -typedef $$TaskCategoriesTableTableProcessedTableManager = +typedef $$FoldersTableTableProcessedTableManager = ProcessedTableManager< _$AppDatabase, - $TaskCategoriesTableTable, - TaskCategoriesTableData, - $$TaskCategoriesTableTableFilterComposer, - $$TaskCategoriesTableTableOrderingComposer, - $$TaskCategoriesTableTableAnnotationComposer, - $$TaskCategoriesTableTableCreateCompanionBuilder, - $$TaskCategoriesTableTableUpdateCompanionBuilder, + $FoldersTableTable, + FoldersTableData, + $$FoldersTableTableFilterComposer, + $$FoldersTableTableOrderingComposer, + $$FoldersTableTableAnnotationComposer, + $$FoldersTableTableCreateCompanionBuilder, + $$FoldersTableTableUpdateCompanionBuilder, ( - TaskCategoriesTableData, - BaseReferences< - _$AppDatabase, - $TaskCategoriesTableTable, - TaskCategoriesTableData - >, + FoldersTableData, + BaseReferences<_$AppDatabase, $FoldersTableTable, FoldersTableData>, ), - TaskCategoriesTableData, + FoldersTableData, PrefetchHooks Function() >; -typedef $$UserProgressTableTableCreateCompanionBuilder = - UserProgressTableCompanion Function({ - Value id, - Value totalPoints, - Value currentLevel, - Value currentStreak, - Value lastCompletionDate, - Value weeklyStreakRewardClaimed, - Value createdAt, - Value updatedAt, +typedef $$NotesTableTableCreateCompanionBuilder = + NotesTableCompanion Function({ + required String id, + Value folderId, + required String title, + required String content, + required DateTime createdAt, + required DateTime updatedAt, + Value version, + Value isDeleted, + Value isProtected, + Value isPinned, + Value rowid, }); -typedef $$UserProgressTableTableUpdateCompanionBuilder = - UserProgressTableCompanion Function({ - Value id, - Value totalPoints, - Value currentLevel, - Value currentStreak, - Value lastCompletionDate, - Value weeklyStreakRewardClaimed, +typedef $$NotesTableTableUpdateCompanionBuilder = + NotesTableCompanion Function({ + Value id, + Value folderId, + Value title, + Value content, Value createdAt, Value updatedAt, + Value version, + Value isDeleted, + Value isProtected, + Value isPinned, + Value rowid, }); -class $$UserProgressTableTableFilterComposer - extends Composer<_$AppDatabase, $UserProgressTableTable> { - $$UserProgressTableTableFilterComposer({ +class $$NotesTableTableFilterComposer + extends Composer<_$AppDatabase, $NotesTableTable> { + $$NotesTableTableFilterComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - ColumnFilters get id => $composableBuilder( + ColumnFilters get id => $composableBuilder( column: $table.id, builder: (column) => ColumnFilters(column), ); - ColumnFilters get totalPoints => $composableBuilder( - column: $table.totalPoints, + ColumnFilters get folderId => $composableBuilder( + column: $table.folderId, builder: (column) => ColumnFilters(column), ); - ColumnFilters get currentLevel => $composableBuilder( - column: $table.currentLevel, + ColumnFilters get title => $composableBuilder( + column: $table.title, builder: (column) => ColumnFilters(column), ); - ColumnFilters get currentStreak => $composableBuilder( - column: $table.currentStreak, + ColumnFilters get content => $composableBuilder( + column: $table.content, builder: (column) => ColumnFilters(column), ); - ColumnFilters get lastCompletionDate => $composableBuilder( - column: $table.lastCompletionDate, + ColumnFilters get createdAt => $composableBuilder( + column: $table.createdAt, builder: (column) => ColumnFilters(column), ); - ColumnFilters get weeklyStreakRewardClaimed => $composableBuilder( - column: $table.weeklyStreakRewardClaimed, + ColumnFilters get updatedAt => $composableBuilder( + column: $table.updatedAt, builder: (column) => ColumnFilters(column), ); - ColumnFilters get createdAt => $composableBuilder( - column: $table.createdAt, + ColumnFilters get version => $composableBuilder( + column: $table.version, builder: (column) => ColumnFilters(column), ); - ColumnFilters get updatedAt => $composableBuilder( - column: $table.updatedAt, + ColumnFilters get isDeleted => $composableBuilder( + column: $table.isDeleted, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isProtected => $composableBuilder( + column: $table.isProtected, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isPinned => $composableBuilder( + column: $table.isPinned, builder: (column) => ColumnFilters(column), ); } -class $$UserProgressTableTableOrderingComposer - extends Composer<_$AppDatabase, $UserProgressTableTable> { - $$UserProgressTableTableOrderingComposer({ +class $$NotesTableTableOrderingComposer + extends Composer<_$AppDatabase, $NotesTableTable> { + $$NotesTableTableOrderingComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - ColumnOrderings get id => $composableBuilder( + ColumnOrderings get id => $composableBuilder( column: $table.id, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get totalPoints => $composableBuilder( - column: $table.totalPoints, + ColumnOrderings get folderId => $composableBuilder( + column: $table.folderId, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get currentLevel => $composableBuilder( - column: $table.currentLevel, + ColumnOrderings get title => $composableBuilder( + column: $table.title, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get currentStreak => $composableBuilder( - column: $table.currentStreak, + ColumnOrderings get content => $composableBuilder( + column: $table.content, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get lastCompletionDate => $composableBuilder( - column: $table.lastCompletionDate, + ColumnOrderings get createdAt => $composableBuilder( + column: $table.createdAt, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get weeklyStreakRewardClaimed => $composableBuilder( - column: $table.weeklyStreakRewardClaimed, + ColumnOrderings get updatedAt => $composableBuilder( + column: $table.updatedAt, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get createdAt => $composableBuilder( - column: $table.createdAt, + ColumnOrderings get version => $composableBuilder( + column: $table.version, builder: (column) => ColumnOrderings(column), ); - ColumnOrderings get updatedAt => $composableBuilder( - column: $table.updatedAt, + ColumnOrderings get isDeleted => $composableBuilder( + column: $table.isDeleted, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isProtected => $composableBuilder( + column: $table.isProtected, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isPinned => $composableBuilder( + column: $table.isPinned, builder: (column) => ColumnOrderings(column), ); } -class $$UserProgressTableTableAnnotationComposer - extends Composer<_$AppDatabase, $UserProgressTableTable> { - $$UserProgressTableTableAnnotationComposer({ +class $$NotesTableTableAnnotationComposer + extends Composer<_$AppDatabase, $NotesTableTable> { + $$NotesTableTableAnnotationComposer({ required super.$db, required super.$table, super.joinBuilder, super.$addJoinBuilderToRootComposer, super.$removeJoinBuilderFromRootComposer, }); - GeneratedColumn get id => + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); - GeneratedColumn get totalPoints => $composableBuilder( - column: $table.totalPoints, - builder: (column) => column, - ); - - GeneratedColumn get currentLevel => $composableBuilder( - column: $table.currentLevel, - builder: (column) => column, - ); - - GeneratedColumn get currentStreak => $composableBuilder( - column: $table.currentStreak, - builder: (column) => column, - ); + GeneratedColumn get folderId => + $composableBuilder(column: $table.folderId, builder: (column) => column); - GeneratedColumn get lastCompletionDate => $composableBuilder( - column: $table.lastCompletionDate, - builder: (column) => column, - ); + GeneratedColumn get title => + $composableBuilder(column: $table.title, builder: (column) => column); - GeneratedColumn get weeklyStreakRewardClaimed => $composableBuilder( - column: $table.weeklyStreakRewardClaimed, - builder: (column) => column, - ); + GeneratedColumn get content => + $composableBuilder(column: $table.content, builder: (column) => column); GeneratedColumn get createdAt => $composableBuilder(column: $table.createdAt, builder: (column) => column); GeneratedColumn get updatedAt => $composableBuilder(column: $table.updatedAt, builder: (column) => column); + + GeneratedColumn get version => + $composableBuilder(column: $table.version, builder: (column) => column); + + GeneratedColumn get isDeleted => + $composableBuilder(column: $table.isDeleted, builder: (column) => column); + + GeneratedColumn get isProtected => $composableBuilder( + column: $table.isProtected, + builder: (column) => column, + ); + + GeneratedColumn get isPinned => + $composableBuilder(column: $table.isPinned, builder: (column) => column); } -class $$UserProgressTableTableTableManager +class $$NotesTableTableTableManager extends RootTableManager< _$AppDatabase, - $UserProgressTableTable, - UserProgressTableData, - $$UserProgressTableTableFilterComposer, - $$UserProgressTableTableOrderingComposer, - $$UserProgressTableTableAnnotationComposer, - $$UserProgressTableTableCreateCompanionBuilder, - $$UserProgressTableTableUpdateCompanionBuilder, + $NotesTableTable, + NotesTableData, + $$NotesTableTableFilterComposer, + $$NotesTableTableOrderingComposer, + $$NotesTableTableAnnotationComposer, + $$NotesTableTableCreateCompanionBuilder, + $$NotesTableTableUpdateCompanionBuilder, ( - UserProgressTableData, - BaseReferences< - _$AppDatabase, - $UserProgressTableTable, - UserProgressTableData - >, + NotesTableData, + BaseReferences<_$AppDatabase, $NotesTableTable, NotesTableData>, ), - UserProgressTableData, + NotesTableData, PrefetchHooks Function() > { - $$UserProgressTableTableTableManager( - _$AppDatabase db, - $UserProgressTableTable table, - ) : super( + $$NotesTableTableTableManager(_$AppDatabase db, $NotesTableTable table) + : super( TableManagerState( db: db, table: table, createFilteringComposer: () => - $$UserProgressTableTableFilterComposer($db: db, $table: table), + $$NotesTableTableFilterComposer($db: db, $table: table), createOrderingComposer: () => - $$UserProgressTableTableOrderingComposer($db: db, $table: table), + $$NotesTableTableOrderingComposer($db: db, $table: table), createComputedFieldComposer: () => - $$UserProgressTableTableAnnotationComposer( - $db: db, - $table: table, - ), + $$NotesTableTableAnnotationComposer($db: db, $table: table), updateCompanionCallback: ({ - Value id = const Value.absent(), - Value totalPoints = const Value.absent(), - Value currentLevel = const Value.absent(), - Value currentStreak = const Value.absent(), - Value lastCompletionDate = const Value.absent(), - Value weeklyStreakRewardClaimed = const Value.absent(), + Value id = const Value.absent(), + Value folderId = const Value.absent(), + Value title = const Value.absent(), + Value content = const Value.absent(), Value createdAt = const Value.absent(), Value updatedAt = const Value.absent(), - }) => UserProgressTableCompanion( + Value version = const Value.absent(), + Value isDeleted = const Value.absent(), + Value isProtected = const Value.absent(), + Value isPinned = const Value.absent(), + Value rowid = const Value.absent(), + }) => NotesTableCompanion( id: id, - totalPoints: totalPoints, - currentLevel: currentLevel, - currentStreak: currentStreak, - lastCompletionDate: lastCompletionDate, - weeklyStreakRewardClaimed: weeklyStreakRewardClaimed, + folderId: folderId, + title: title, + content: content, createdAt: createdAt, updatedAt: updatedAt, + version: version, + isDeleted: isDeleted, + isProtected: isProtected, + isPinned: isPinned, + rowid: rowid, ), createCompanionCallback: ({ - Value id = const Value.absent(), - Value totalPoints = const Value.absent(), - Value currentLevel = const Value.absent(), - Value currentStreak = const Value.absent(), - Value lastCompletionDate = const Value.absent(), - Value weeklyStreakRewardClaimed = const Value.absent(), - Value createdAt = const Value.absent(), - Value updatedAt = const Value.absent(), - }) => UserProgressTableCompanion.insert( + required String id, + Value folderId = const Value.absent(), + required String title, + required String content, + required DateTime createdAt, + required DateTime updatedAt, + Value version = const Value.absent(), + Value isDeleted = const Value.absent(), + Value isProtected = const Value.absent(), + Value isPinned = const Value.absent(), + Value rowid = const Value.absent(), + }) => NotesTableCompanion.insert( id: id, - totalPoints: totalPoints, - currentLevel: currentLevel, - currentStreak: currentStreak, - lastCompletionDate: lastCompletionDate, - weeklyStreakRewardClaimed: weeklyStreakRewardClaimed, + folderId: folderId, + title: title, + content: content, createdAt: createdAt, updatedAt: updatedAt, + version: version, + isDeleted: isDeleted, + isProtected: isProtected, + isPinned: isPinned, + rowid: rowid, ), withReferenceMapper: (p0) => p0 .map((e) => (e.readTable(table), BaseReferences(db, table, e))) @@ -2299,25 +3910,21 @@ class $$UserProgressTableTableTableManager ); } -typedef $$UserProgressTableTableProcessedTableManager = +typedef $$NotesTableTableProcessedTableManager = ProcessedTableManager< _$AppDatabase, - $UserProgressTableTable, - UserProgressTableData, - $$UserProgressTableTableFilterComposer, - $$UserProgressTableTableOrderingComposer, - $$UserProgressTableTableAnnotationComposer, - $$UserProgressTableTableCreateCompanionBuilder, - $$UserProgressTableTableUpdateCompanionBuilder, + $NotesTableTable, + NotesTableData, + $$NotesTableTableFilterComposer, + $$NotesTableTableOrderingComposer, + $$NotesTableTableAnnotationComposer, + $$NotesTableTableCreateCompanionBuilder, + $$NotesTableTableUpdateCompanionBuilder, ( - UserProgressTableData, - BaseReferences< - _$AppDatabase, - $UserProgressTableTable, - UserProgressTableData - >, + NotesTableData, + BaseReferences<_$AppDatabase, $NotesTableTable, NotesTableData>, ), - UserProgressTableData, + NotesTableData, PrefetchHooks Function() >; @@ -2330,6 +3937,10 @@ class $AppDatabaseManager { $$TaskCategoriesTableTableTableManager(_db, _db.taskCategoriesTable); $$UserProgressTableTableTableManager get userProgressTable => $$UserProgressTableTableTableManager(_db, _db.userProgressTable); + $$FoldersTableTableTableManager get foldersTable => + $$FoldersTableTableTableManager(_db, _db.foldersTable); + $$NotesTableTableTableManager get notesTable => + $$NotesTableTableTableManager(_db, _db.notesTable); } // ************************************************************************** diff --git a/lib/database/db/dao/folder/folder_dao.dart b/lib/database/db/dao/folder/folder_dao.dart new file mode 100644 index 0000000..259742a --- /dev/null +++ b/lib/database/db/dao/folder/folder_dao.dart @@ -0,0 +1,52 @@ +import 'package:drift/drift.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/TABLES/folders_table.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'folder_dao.g.dart'; + +@riverpod +FolderDao folderDaoProvider(Ref ref) { + return FolderDao(ref.watch(appDatabaseProviderProvider)); +} + +@DriftAccessor(tables: [FoldersTable]) +class FolderDao extends DatabaseAccessor with _$FolderDaoMixin { + FolderDao(super.db); + + Stream> watchAllFolders({ + bool includeDeleted = false, + }) { + final query = select(foldersTable) + ..orderBy([(folder) => OrderingTerm(expression: folder.createdAt)]); + if (!includeDeleted) { + query.where((folder) => folder.isDeleted.equals(false)); + } + return query.watch(); + } + + Future> getAllFolders({bool includeDeleted = false}) { + final query = select(foldersTable) + ..orderBy([(folder) => OrderingTerm(expression: folder.createdAt)]); + if (!includeDeleted) { + query.where((folder) => folder.isDeleted.equals(false)); + } + return query.get(); + } + + Future getFolderById(String id) { + return (select( + foldersTable, + )..where((table) => table.id.equals(id))).getSingleOrNull(); + } + + Future insertFolder(FoldersTableCompanion folder) => + into(foldersTable).insertOnConflictUpdate(folder); + + Future updateFolder(FoldersTableCompanion folder) => (update( + foldersTable, + )..where((table) => table.id.equals(folder.id.value))).write(folder); + + Future deleteFolder(String id) => + (delete(foldersTable)..where((table) => table.id.equals(id))).go(); +} diff --git a/lib/database/db/dao/folder/folder_dao.g.dart b/lib/database/db/dao/folder/folder_dao.g.dart new file mode 100644 index 0000000..c318082 --- /dev/null +++ b/lib/database/db/dao/folder/folder_dao.g.dart @@ -0,0 +1,64 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'folder_dao.dart'; + +// ignore_for_file: type=lint +mixin _$FolderDaoMixin on DatabaseAccessor { + $FoldersTableTable get foldersTable => attachedDatabase.foldersTable; + FolderDaoManager get managers => FolderDaoManager(this); +} + +class FolderDaoManager { + final _$FolderDaoMixin _db; + FolderDaoManager(this._db); + $$FoldersTableTableTableManager get foldersTable => + $$FoldersTableTableTableManager(_db.attachedDatabase, _db.foldersTable); +} + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(folderDaoProvider) +final folderDaoProviderProvider = FolderDaoProviderProvider._(); + +final class FolderDaoProviderProvider + extends $FunctionalProvider + with $Provider { + FolderDaoProviderProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'folderDaoProviderProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$folderDaoProviderHash(); + + @$internal + @override + $ProviderElement $createElement($ProviderPointer pointer) => + $ProviderElement(pointer); + + @override + FolderDao create(Ref ref) { + return folderDaoProvider(ref); + } + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(FolderDao value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$folderDaoProviderHash() => r'4acf888a90ecfcb59ddad77dbadae0f69bec8b23'; diff --git a/lib/database/db/dao/note/note_dao.dart b/lib/database/db/dao/note/note_dao.dart new file mode 100644 index 0000000..ee67e46 --- /dev/null +++ b/lib/database/db/dao/note/note_dao.dart @@ -0,0 +1,58 @@ +import 'package:drift/drift.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/TABLES/notes_table.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'note_dao.g.dart'; + +@riverpod +NotesDao notesDaoProvider(Ref ref) { + return NotesDao(ref.watch(appDatabaseProviderProvider)); +} + +@DriftAccessor(tables: [NotesTable]) +class NotesDao extends DatabaseAccessor with _$NotesDaoMixin { + NotesDao(super.db); + + Stream> watchAllNotes({bool includeDeleted = false}) { + final query = select(notesTable) + ..orderBy([ + (note) => + OrderingTerm(expression: note.updatedAt, mode: OrderingMode.desc), + ]); + if (!includeDeleted) query.where((note) => note.isDeleted.equals(false)); + return query.watch(); + } + + Future> getAllNotes({bool includeDeleted = false}) { + final query = select(notesTable) + ..orderBy([ + (note) => + OrderingTerm(expression: note.updatedAt, mode: OrderingMode.desc), + ]); + if (!includeDeleted) query.where((note) => note.isDeleted.equals(false)); + return query.get(); + } + + Future getNoteById(String id) { + return (select( + notesTable, + )..where((table) => table.id.equals(id))).getSingleOrNull(); + } + + Future> getNotesByFolder(String folderId) { + return (select( + notesTable, + )..where((table) => table.folderId.equals(folderId))).get(); + } + + Future insertNote(NotesTableCompanion note) => + into(notesTable).insertOnConflictUpdate(note); + + Future updateNote(NotesTableCompanion note) => (update( + notesTable, + )..where((table) => table.id.equals(note.id.value))).write(note); + + Future deleteNote(String id) => + (delete(notesTable)..where((table) => table.id.equals(id))).go(); +} diff --git a/lib/database/db/dao/note/note_dao.g.dart b/lib/database/db/dao/note/note_dao.g.dart new file mode 100644 index 0000000..86146d6 --- /dev/null +++ b/lib/database/db/dao/note/note_dao.g.dart @@ -0,0 +1,64 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'note_dao.dart'; + +// ignore_for_file: type=lint +mixin _$NotesDaoMixin on DatabaseAccessor { + $NotesTableTable get notesTable => attachedDatabase.notesTable; + NotesDaoManager get managers => NotesDaoManager(this); +} + +class NotesDaoManager { + final _$NotesDaoMixin _db; + NotesDaoManager(this._db); + $$NotesTableTableTableManager get notesTable => + $$NotesTableTableTableManager(_db.attachedDatabase, _db.notesTable); +} + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(notesDaoProvider) +final notesDaoProviderProvider = NotesDaoProviderProvider._(); + +final class NotesDaoProviderProvider + extends $FunctionalProvider + with $Provider { + NotesDaoProviderProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'notesDaoProviderProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$notesDaoProviderHash(); + + @$internal + @override + $ProviderElement $createElement($ProviderPointer pointer) => + $ProviderElement(pointer); + + @override + NotesDao create(Ref ref) { + return notesDaoProvider(ref); + } + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(NotesDao value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$notesDaoProviderHash() => r'c51730d9ca4caa4046bd7f45af0afa4a97b67541'; diff --git a/lib/db/db/dao/task_category_dao.dart b/lib/database/db/dao/task_category_dao.dart similarity index 87% rename from lib/db/db/dao/task_category_dao.dart rename to lib/database/db/dao/task_category_dao.dart index d72898b..63faf32 100644 --- a/lib/db/db/dao/task_category_dao.dart +++ b/lib/database/db/dao/task_category_dao.dart @@ -1,6 +1,6 @@ import 'package:drift/drift.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/task_categories_table.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/task_categories_table.dart'; part 'task_category_dao.g.dart'; diff --git a/lib/db/db/dao/task_category_dao.g.dart b/lib/database/db/dao/task_category_dao.g.dart similarity index 100% rename from lib/db/db/dao/task_category_dao.g.dart rename to lib/database/db/dao/task_category_dao.g.dart diff --git a/lib/db/db/dao/note_dao.dart b/lib/database/db/dao/task_dao.dart similarity index 93% rename from lib/db/db/dao/note_dao.dart rename to lib/database/db/dao/task_dao.dart index bf7cd2d..d1e3e53 100644 --- a/lib/db/db/dao/note_dao.dart +++ b/lib/database/db/dao/task_dao.dart @@ -1,9 +1,9 @@ import 'package:drift/drift.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -part 'note_dao.g.dart'; +part 'task_dao.g.dart'; @riverpod NoteDao noteDaoProvider(Ref ref) { diff --git a/lib/db/db/dao/note_dao.g.dart b/lib/database/db/dao/task_dao.g.dart similarity index 98% rename from lib/db/db/dao/note_dao.g.dart rename to lib/database/db/dao/task_dao.g.dart index d21466c..0c0d846 100644 --- a/lib/db/db/dao/note_dao.g.dart +++ b/lib/database/db/dao/task_dao.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'note_dao.dart'; +part of 'task_dao.dart'; // ignore_for_file: type=lint mixin _$NoteDaoMixin on DatabaseAccessor { diff --git a/lib/db/db/dao/user_progress_dao.dart b/lib/database/db/dao/user_progress_dao.dart similarity index 84% rename from lib/db/db/dao/user_progress_dao.dart rename to lib/database/db/dao/user_progress_dao.dart index 7c0ba19..fc67f0b 100644 --- a/lib/db/db/dao/user_progress_dao.dart +++ b/lib/database/db/dao/user_progress_dao.dart @@ -1,6 +1,6 @@ import 'package:drift/drift.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/user_progress_table.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/user_progress_table.dart'; part 'user_progress_dao.g.dart'; diff --git a/lib/db/db/dao/user_progress_dao.g.dart b/lib/database/db/dao/user_progress_dao.g.dart similarity index 100% rename from lib/db/db/dao/user_progress_dao.g.dart rename to lib/database/db/dao/user_progress_dao.g.dart diff --git a/lib/database/db/tables/TABLES/folders_table.dart b/lib/database/db/tables/TABLES/folders_table.dart new file mode 100644 index 0000000..baa4d87 --- /dev/null +++ b/lib/database/db/tables/TABLES/folders_table.dart @@ -0,0 +1,20 @@ +import 'package:drift/drift.dart'; + +class FoldersTable extends Table { + TextColumn get id => text()(); + + TextColumn get name => text()(); + + IntColumn get color => integer()(); + + DateTimeColumn get createdAt => dateTime()(); + + DateTimeColumn get updatedAt => dateTime()(); + + IntColumn get version => integer().withDefault(const Constant(1))(); + + BoolColumn get isDeleted => boolean().withDefault(const Constant(false))(); + + @override + Set get primaryKey => {id}; +} diff --git a/lib/database/db/tables/TABLES/notes_table.dart b/lib/database/db/tables/TABLES/notes_table.dart new file mode 100644 index 0000000..7186bed --- /dev/null +++ b/lib/database/db/tables/TABLES/notes_table.dart @@ -0,0 +1,26 @@ +import 'package:drift/drift.dart'; + +class NotesTable extends Table { + TextColumn get id => text()(); + + TextColumn get folderId => text().nullable()(); + + TextColumn get title => text()(); + + TextColumn get content => text()(); + + DateTimeColumn get createdAt => dateTime()(); + + DateTimeColumn get updatedAt => dateTime()(); + + IntColumn get version => integer().withDefault(const Constant(1))(); + + BoolColumn get isDeleted => boolean().withDefault(const Constant(false))(); + + BoolColumn get isProtected => boolean().withDefault(const Constant(false))(); + + BoolColumn get isPinned => boolean().withDefault(const Constant(false))(); + + @override + Set get primaryKey => {id}; +} diff --git a/lib/db/db/tables/error_report.dart b/lib/database/db/tables/error_report.dart similarity index 100% rename from lib/db/db/tables/error_report.dart rename to lib/database/db/tables/error_report.dart diff --git a/lib/db/db/tables/task_categories_table.dart b/lib/database/db/tables/task_categories_table.dart similarity index 100% rename from lib/db/db/tables/task_categories_table.dart rename to lib/database/db/tables/task_categories_table.dart diff --git a/lib/db/db/tables/note_table.dart b/lib/database/db/tables/task_table.dart similarity index 99% rename from lib/db/db/tables/note_table.dart rename to lib/database/db/tables/task_table.dart index d52a73e..510262b 100644 --- a/lib/db/db/tables/note_table.dart +++ b/lib/database/db/tables/task_table.dart @@ -26,4 +26,4 @@ class NoteTable extends Table { IntColumn get difficulty => intEnum().withDefault(const Constant(0))(); -} +} \ No newline at end of file diff --git a/lib/db/db/tables/user_progress_table.dart b/lib/database/db/tables/user_progress_table.dart similarity index 100% rename from lib/db/db/tables/user_progress_table.dart rename to lib/database/db/tables/user_progress_table.dart diff --git a/lib/db/repository/note_repository.dart b/lib/database/repository/note_repository.dart similarity index 96% rename from lib/db/repository/note_repository.dart rename to lib/database/repository/note_repository.dart index 87d5af4..82fe0af 100644 --- a/lib/db/repository/note_repository.dart +++ b/lib/database/repository/note_repository.dart @@ -1,8 +1,8 @@ import 'package:drift/drift.dart'; import 'package:ascend/core/utils/input_formatter.dart'; -import 'package:ascend/db/db/dao/note_dao.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/dao/task_dao.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:ascend/feature/tasks/models/note_model.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/lib/db/repository/note_repository.g.dart b/lib/database/repository/note_repository.g.dart similarity index 100% rename from lib/db/repository/note_repository.g.dart rename to lib/database/repository/note_repository.g.dart diff --git a/lib/feature/folder/data/folder_model.dart b/lib/feature/folder/data/folder_model.dart new file mode 100644 index 0000000..3924ae1 --- /dev/null +++ b/lib/feature/folder/data/folder_model.dart @@ -0,0 +1,39 @@ +class FolderModel { + final String id; + final String name; + final int color; + final DateTime createdAt; + final DateTime updatedAt; + final int version; + final bool isDeleted; + + const FolderModel({ + required this.id, + required this.name, + required this.color, + required this.createdAt, + required this.updatedAt, + required this.version, + required this.isDeleted, + }); + + FolderModel copyWith({ + String? id, + String? name, + int? color, + DateTime? createdAt, + DateTime? updatedAt, + int? version, + bool? isDeleted, + }) { + return FolderModel( + id: id ?? this.id, + name: name ?? this.name, + color: color ?? this.color, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + ); + } +} diff --git a/lib/feature/folder/data/folder_repository.dart b/lib/feature/folder/data/folder_repository.dart new file mode 100644 index 0000000..6bb54af --- /dev/null +++ b/lib/feature/folder/data/folder_repository.dart @@ -0,0 +1,96 @@ +import 'package:ascend/database/db/dao/folder/folder_dao.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:drift/drift.dart'; +import 'package:ascend/feature/folder/data/folder_model.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:uuid/uuid.dart'; + +part 'folder_repository.g.dart'; + +@riverpod +FolderRepository folderRepository(Ref ref) { + return FolderRepository(ref.watch(folderDaoProviderProvider)); +} + +class FolderRepository { + final FolderDao _dao; + + FolderRepository(this._dao); + + Stream> watchFolders() { + return _dao.watchAllFolders().map( + (folders) => folders.map(_fromEntity).toList(growable: false), + ); + } + + Future> getFolders() async { + final folders = await _dao.getAllFolders(); + return folders.map(_fromEntity).toList(growable: false); + } + + Future getFolder(String id) async { + final folder = await _dao.getFolderById(id); + return folder == null ? null : _fromEntity(folder); + } + + Future createFolder({ + required String name, + required int color, + DateTime? now, + }) async { + final timestamp = now ?? DateTime.now(); + final folder = FolderModel( + id: const Uuid().v4(), + name: name, + color: color, + createdAt: timestamp, + updatedAt: timestamp, + version: 1, + isDeleted: false, + ); + await _dao.insertFolder(_toCompanion(folder)); + return folder; + } + + Future updateFolder(FolderModel folder) async { + await _dao.updateFolder( + _toCompanion(folder.copyWith(updatedAt: DateTime.now())), + ); + } + + Future deleteFolder(String id) async { + final folder = await _dao.getFolderById(id); + if (folder == null) return; + await _dao.updateFolder( + _toCompanion( + _fromEntity( + folder, + ).copyWith(isDeleted: true, updatedAt: DateTime.now()), + ), + ); + } + + FolderModel _fromEntity(FoldersTableData folder) { + return FolderModel( + id: folder.id, + name: folder.name, + color: folder.color, + createdAt: folder.createdAt, + updatedAt: folder.updatedAt, + version: folder.version, + isDeleted: folder.isDeleted, + ); + } + + FoldersTableCompanion _toCompanion(FolderModel folder) { + return FoldersTableCompanion( + id: Value(folder.id), + name: Value(folder.name), + color: Value(folder.color), + createdAt: Value(folder.createdAt), + updatedAt: Value(folder.updatedAt), + version: Value(folder.version), + isDeleted: Value(folder.isDeleted), + ); + } +} diff --git a/lib/feature/folder/data/folder_repository.g.dart b/lib/feature/folder/data/folder_repository.g.dart new file mode 100644 index 0000000..79bef9b --- /dev/null +++ b/lib/feature/folder/data/folder_repository.g.dart @@ -0,0 +1,56 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'folder_repository.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(folderRepository) +final folderRepositoryProvider = FolderRepositoryProvider._(); + +final class FolderRepositoryProvider + extends + $FunctionalProvider< + FolderRepository, + FolderRepository, + FolderRepository + > + with $Provider { + FolderRepositoryProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'folderRepositoryProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$folderRepositoryHash(); + + @$internal + @override + $ProviderElement $createElement($ProviderPointer pointer) => + $ProviderElement(pointer); + + @override + FolderRepository create(Ref ref) { + return folderRepository(ref); + } + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(FolderRepository value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$folderRepositoryHash() => r'a4454895c74cd484cfb04959adca23b690bf82af'; diff --git a/lib/feature/folder/provider/folders_provider.dart b/lib/feature/folder/provider/folders_provider.dart new file mode 100644 index 0000000..3ccd052 --- /dev/null +++ b/lib/feature/folder/provider/folders_provider.dart @@ -0,0 +1,51 @@ +import 'package:ascend/feature/folder/data/folder_model.dart'; +import 'package:ascend/feature/folder/data/folder_repository.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +final foldersProvider = StreamNotifierProvider>( + Folders.new, +); + +/// UI controller for folders. +/// +/// The state is backed by the repository stream, while all mutations stay +/// behind this provider/repository boundary. +class Folders extends StreamNotifier> { + FolderRepository get _repository => ref.read(folderRepositoryProvider); + + @override + Stream> build() => _repository.watchFolders(); + + Future> getFolders() => _run(_repository.getFolders); + + Future getFolder(String id) => + _run(() => _repository.getFolder(id)); + + Future getFolderById(String id) => getFolder(id); + + Future createFolder({required String name, required int color}) { + return _run(() => _repository.createFolder(name: name, color: color)); + } + + Future updateFolder(FolderModel folder) => + _run(() => _repository.updateFolder(folder)); + + Future deleteFolder(String id) => + _run(() => _repository.deleteFolder(id)); + + Future refresh() async { + ref.invalidateSelf(); + await future; + } + + Future retry() => refresh(); + + Future _run(Future Function() action) async { + try { + return await action(); + } catch (error, stackTrace) { + state = AsyncError(error, stackTrace); + rethrow; + } + } +} diff --git a/lib/feature/gamification/models/user_progress_model.dart b/lib/feature/gamification/models/user_progress_model.dart index c0559ce..c02d1d8 100644 --- a/lib/feature/gamification/models/user_progress_model.dart +++ b/lib/feature/gamification/models/user_progress_model.dart @@ -1,5 +1,5 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; part 'user_progress_model.freezed.dart'; diff --git a/lib/feature/gamification/provider/user_progress_view_model.dart b/lib/feature/gamification/provider/user_progress_view_model.dart index 4ee5b7a..6d9cc6f 100644 --- a/lib/feature/gamification/provider/user_progress_view_model.dart +++ b/lib/feature/gamification/provider/user_progress_view_model.dart @@ -1,7 +1,7 @@ import 'dart:math' as math; import 'package:drift/drift.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:ascend/feature/gamification/models/user_progress_model.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/lib/feature/gamification/provider/user_progress_view_model.g.dart b/lib/feature/gamification/provider/user_progress_view_model.g.dart index 39eb4c4..1f09619 100644 --- a/lib/feature/gamification/provider/user_progress_view_model.g.dart +++ b/lib/feature/gamification/provider/user_progress_view_model.g.dart @@ -34,7 +34,7 @@ final class UserProgressViewModelProvider } String _$userProgressViewModelHash() => - r'3d8ffc740edee0930510cfc64b4fca8ece43b1e3'; + r'268301121465c3a7271e0d19e5563378fa6a7774'; abstract class _$UserProgressViewModel extends $AsyncNotifier { diff --git a/lib/feature/notes/data/note_model.dart b/lib/feature/notes/data/note_model.dart new file mode 100644 index 0000000..033d73a --- /dev/null +++ b/lib/feature/notes/data/note_model.dart @@ -0,0 +1,51 @@ +class NoteModel { + final String id; + final String? folderId; + final String title; + final String content; + final DateTime createdAt; + final DateTime updatedAt; + final int version; + final bool isDeleted; + final bool isProtected; + final bool isPinned; + + const NoteModel({ + required this.id, + this.folderId, + required this.title, + required this.content, + required this.createdAt, + required this.updatedAt, + required this.version, + required this.isDeleted, + required this.isProtected, + required this.isPinned, + }); + + NoteModel copyWith({ + String? id, + String? folderId, + String? title, + String? content, + DateTime? createdAt, + DateTime? updatedAt, + int? version, + bool? isDeleted, + bool? isProtected, + bool? isPinned, + }) { + return NoteModel( + id: id ?? this.id, + folderId: folderId ?? this.folderId, + title: title ?? this.title, + content: content ?? this.content, + createdAt: createdAt ?? this.createdAt, + updatedAt: updatedAt ?? this.updatedAt, + version: version ?? this.version, + isDeleted: isDeleted ?? this.isDeleted, + isProtected: isProtected ?? this.isProtected, + isPinned: isPinned ?? this.isPinned, + ); + } +} diff --git a/lib/feature/notes/data/note_repository.dart b/lib/feature/notes/data/note_repository.dart new file mode 100644 index 0000000..68fccaf --- /dev/null +++ b/lib/feature/notes/data/note_repository.dart @@ -0,0 +1,111 @@ +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/dao/note/note_dao.dart'; +import 'package:ascend/feature/notes/data/note_model.dart'; +import 'package:drift/drift.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:uuid/uuid.dart'; + +part 'note_repository.g.dart'; + +@riverpod +NoteRepository notesRepository(Ref ref) { + return NoteRepository(ref.watch(notesDaoProviderProvider)); +} + +class NoteRepository { + final NotesDao _dao; + + NoteRepository(this._dao); + + Stream> watchNotes() { + return _dao.watchAllNotes().map( + (notes) => notes.map(_fromEntity).toList(growable: false), + ); + } + + Future> getNotes() async { + final notes = await _dao.getAllNotes(); + return notes.map(_fromEntity).toList(growable: false); + } + + Future getNote(String id) async { + final note = await _dao.getNoteById(id); + return note == null ? null : _fromEntity(note); + } + + Future> getNotesInFolder(String folderId) async { + final notes = await _dao.getNotesByFolder(folderId); + return notes.map(_fromEntity).toList(growable: false); + } + + Future createNote({ + String? folderId, + required String title, + required String content, + bool isProtected = false, + bool isPinned = false, + DateTime? now, + }) async { + final timestamp = now ?? DateTime.now(); + final note = NoteModel( + id: const Uuid().v4(), + folderId: folderId, + title: title, + content: content, + createdAt: timestamp, + updatedAt: timestamp, + version: 1, + isDeleted: false, + isProtected: isProtected, + isPinned: isPinned, + ); + await _dao.insertNote(_toCompanion(note)); + return note; + } + + Future updateNote(NoteModel note) async { + await _dao.updateNote( + _toCompanion(note.copyWith(updatedAt: DateTime.now())), + ); + } + + Future deleteNote(String id) async { + final note = await _dao.getNoteById(id); + if (note == null) return; + await _dao.updateNote( + _toCompanion( + _fromEntity(note).copyWith(isDeleted: true, updatedAt: DateTime.now()), + ), + ); + } + + NoteModel _fromEntity(NotesTableData note) { + return NoteModel( + id: note.id, + folderId: note.folderId, + title: note.title, + content: note.content, + createdAt: note.createdAt, + updatedAt: note.updatedAt, + version: note.version, + isDeleted: note.isDeleted, + isProtected: note.isProtected, + isPinned: note.isPinned, + ); + } + + NotesTableCompanion _toCompanion(NoteModel note) { + return NotesTableCompanion( + id: Value(note.id), + folderId: Value(note.folderId), + title: Value(note.title), + content: Value(note.content), + createdAt: Value(note.createdAt), + updatedAt: Value(note.updatedAt), + version: Value(note.version), + isDeleted: Value(note.isDeleted), + isProtected: Value(note.isProtected), + isPinned: Value(note.isPinned), + ); + } +} diff --git a/lib/feature/notes/data/note_repository.g.dart b/lib/feature/notes/data/note_repository.g.dart new file mode 100644 index 0000000..cfd5a8d --- /dev/null +++ b/lib/feature/notes/data/note_repository.g.dart @@ -0,0 +1,51 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'note_repository.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(notesRepository) +final notesRepositoryProvider = NotesRepositoryProvider._(); + +final class NotesRepositoryProvider + extends $FunctionalProvider + with $Provider { + NotesRepositoryProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'notesRepositoryProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$notesRepositoryHash(); + + @$internal + @override + $ProviderElement $createElement($ProviderPointer pointer) => + $ProviderElement(pointer); + + @override + NoteRepository create(Ref ref) { + return notesRepository(ref); + } + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(NoteRepository value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$notesRepositoryHash() => r'2ae59b3981d7149fc17063e36444b4f6225ccdc1'; diff --git a/lib/feature/notes/provider/notes_provider.dart b/lib/feature/notes/provider/notes_provider.dart new file mode 100644 index 0000000..e2a21ef --- /dev/null +++ b/lib/feature/notes/provider/notes_provider.dart @@ -0,0 +1,64 @@ +import 'package:ascend/feature/notes/data/note_model.dart'; +import 'package:ascend/feature/notes/data/note_repository.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +final notesProvider = StreamNotifierProvider>(Notes.new); + +/// UI controller for document notes. +/// +/// The state is backed by the repository stream, while all mutations stay +/// behind this provider/repository boundary. +class Notes extends StreamNotifier> { + NoteRepository get _repository => ref.read(notesRepositoryProvider); + + @override + Stream> build() => _repository.watchNotes(); + + Future> getNotes() => _run(_repository.getNotes); + + Future getNote(String id) => _run(() => _repository.getNote(id)); + + Future getNoteById(String id) => getNote(id); + + Future> getNotesInFolder(String folderId) => + _run(() => _repository.getNotesInFolder(folderId)); + + Future createNote({ + String? folderId, + required String title, + required String content, + bool isProtected = false, + bool isPinned = false, + }) { + return _run( + () => _repository.createNote( + folderId: folderId, + title: title, + content: content, + isProtected: isProtected, + isPinned: isPinned, + ), + ); + } + + Future updateNote(NoteModel note) => + _run(() => _repository.updateNote(note)); + + Future deleteNote(String id) => _run(() => _repository.deleteNote(id)); + + Future refresh() async { + ref.invalidateSelf(); + await future; + } + + Future retry() => refresh(); + + Future _run(Future Function() action) async { + try { + return await action(); + } catch (error, stackTrace) { + state = AsyncError(error, stackTrace); + rethrow; + } + } +} diff --git a/lib/feature/settings/Screens/categories_screen/categories_screen.dart b/lib/feature/settings/Screens/categories_screen/categories_screen.dart index edb222f..48ee008 100644 --- a/lib/feature/settings/Screens/categories_screen/categories_screen.dart +++ b/lib/feature/settings/Screens/categories_screen/categories_screen.dart @@ -4,7 +4,7 @@ import 'package:ascend/feature/tasks/view_models/task_category_view_model.dart'; import 'package:ascend/core/utils/icon_utils.dart'; import 'package:ascend/core/constants/constants.dart'; import 'package:ascend/feature/settings/Screens/categories_screen/widgets/custom_emoji_picker.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; class CategoriesScreen extends ConsumerWidget { const CategoriesScreen({super.key}); diff --git a/lib/feature/settings/Screens/data_and_privacy_screen/data_and_privacy_screen.dart b/lib/feature/settings/Screens/data_and_privacy_screen/data_and_privacy_screen.dart index 6f5c672..7742231 100644 --- a/lib/feature/settings/Screens/data_and_privacy_screen/data_and_privacy_screen.dart +++ b/lib/feature/settings/Screens/data_and_privacy_screen/data_and_privacy_screen.dart @@ -1,8 +1,8 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/repository/note_repository.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/repository/note_repository.dart'; import 'package:ascend/feature/settings/Screens/data_and_privacy_screen/services/backup_and_restore.dart'; import 'package:ascend/feature/settings/widgets/common_setting_tile.dart'; import 'periodic_backups_screen.dart'; diff --git a/lib/feature/settings/Screens/data_and_privacy_screen/services/backup_and_restore.dart b/lib/feature/settings/Screens/data_and_privacy_screen/services/backup_and_restore.dart index e953e8b..83bb29c 100644 --- a/lib/feature/settings/Screens/data_and_privacy_screen/services/backup_and_restore.dart +++ b/lib/feature/settings/Screens/data_and_privacy_screen/services/backup_and_restore.dart @@ -127,11 +127,14 @@ class BackupAndRestoreService { throw Exception('User canceled'); } + // Convert the Uri to a displayable local path safe for notifications + final displayPath = selectedPath; + // send notification on backup save NotificationService().showInstantBackupAndRestoreNotification( id: 1, title: 'Backup saved', - body: 'Backup saved as ${p.basename(selectedPath)}', + body: 'Backup saved as $displayPath', ); } catch (e) { // send notification on backup save failure @@ -148,15 +151,23 @@ class BackupAndRestoreService { /// returns void Future restoreBackup() async { try { - FilePickerResult? result = await FilePicker.platform.pickFiles( - type: FileType.custom, - allowedExtensions: ['zip'], - ); - - // handles backup selection - if (result != null && result.files.single.path != null) { - final filePath = result.files.single.path!; - final bytes = File(filePath).readAsBytesSync(); + final FilePickerResult? pickerResult = await FilePicker.platform + .pickFiles( + type: FileType.custom, + allowedExtensions: ['zip'], + withData: true, + ); + + if (pickerResult != null && pickerResult.files.isNotEmpty) { + final fileResult = pickerResult.files.single; + final Uint8List bytes = + fileResult.bytes ?? + (fileResult.path == null + ? Uint8List(0) + : await File(fileResult.path!).readAsBytes()); + if (bytes.isEmpty) { + throw Exception('Could not read selected backup file.'); + } final archive = ZipDecoder().decodeBytes(bytes); final appDir = await getApplicationSupportDirectory(); diff --git a/lib/feature/tasks/models/note_model.dart b/lib/feature/tasks/models/note_model.dart index eb6c060..105902b 100644 --- a/lib/feature/tasks/models/note_model.dart +++ b/lib/feature/tasks/models/note_model.dart @@ -1,6 +1,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:ascend/db/db/app_database.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/app_database.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; part 'note_model.freezed.dart'; diff --git a/lib/feature/tasks/view_models/note_view_model.dart b/lib/feature/tasks/view_models/note_view_model.dart index 6a3b61a..3631284 100644 --- a/lib/feature/tasks/view_models/note_view_model.dart +++ b/lib/feature/tasks/view_models/note_view_model.dart @@ -1,6 +1,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; -import 'package:ascend/db/repository/note_repository.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; +import 'package:ascend/database/repository/note_repository.dart'; import 'package:ascend/feature/tasks/state/note_state.dart'; import 'package:ascend/feature/gamification/provider/gamification_provider.dart'; import 'package:ascend/feature/gamification/provider/user_progress_view_model.dart'; diff --git a/lib/feature/tasks/view_models/task_category_view_model.dart b/lib/feature/tasks/view_models/task_category_view_model.dart index f3a4c8b..81ae7b5 100644 --- a/lib/feature/tasks/view_models/task_category_view_model.dart +++ b/lib/feature/tasks/view_models/task_category_view_model.dart @@ -1,5 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; import 'package:ascend/core/constants/default_categories.dart'; final taskCategoryViewModelProvider = diff --git a/lib/feature/tasks/widget/create_note/add_category_dialog.dart b/lib/feature/tasks/widget/create_note/add_category_dialog.dart index cb92d39..d1244c4 100644 --- a/lib/feature/tasks/widget/create_note/add_category_dialog.dart +++ b/lib/feature/tasks/widget/create_note/add_category_dialog.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; import 'package:ascend/feature/tasks/view_models/task_category_view_model.dart'; import 'package:ascend/core/utils/icon_utils.dart'; import 'package:ascend/feature/settings/Screens/categories_screen/widgets/custom_emoji_picker.dart'; diff --git a/lib/feature/tasks/widget/create_note/category_picker_sheet.dart b/lib/feature/tasks/widget/create_note/category_picker_sheet.dart index 146e93b..4e49d02 100644 --- a/lib/feature/tasks/widget/create_note/category_picker_sheet.dart +++ b/lib/feature/tasks/widget/create_note/category_picker_sheet.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; import 'package:ascend/feature/tasks/view_models/task_category_view_model.dart'; import 'package:ascend/core/utils/icon_utils.dart'; import 'add_category_dialog.dart'; diff --git a/lib/feature/tasks/widget/create_note/create_note_view.dart b/lib/feature/tasks/widget/create_note/create_note_view.dart index 293ff81..fcce41a 100644 --- a/lib/feature/tasks/widget/create_note/create_note_view.dart +++ b/lib/feature/tasks/widget/create_note/create_note_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:ascend/feature/tasks/models/note_model.dart'; import 'package:ascend/feature/tasks/view_models/note_view_model.dart'; import 'package:intl/intl.dart'; diff --git a/lib/feature/tasks/widget/create_note/task_setting_tiles.dart b/lib/feature/tasks/widget/create_note/task_setting_tiles.dart index d4a6891..ed8bfc2 100644 --- a/lib/feature/tasks/widget/create_note/task_setting_tiles.dart +++ b/lib/feature/tasks/widget/create_note/task_setting_tiles.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:ascend/feature/tasks/view_models/task_category_view_model.dart'; import 'package:ascend/core/utils/icon_utils.dart'; diff --git a/lib/feature/tasks/widget/task_priority_widget.dart b/lib/feature/tasks/widget/task_priority_widget.dart index e04fb1a..91c3bc0 100644 --- a/lib/feature/tasks/widget/task_priority_widget.dart +++ b/lib/feature/tasks/widget/task_priority_widget.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; class PriorityWidget extends StatelessWidget { const PriorityWidget({super.key, required this.priority}); diff --git a/lib/feature/tasks/widget/tasks_cards.dart b/lib/feature/tasks/widget/tasks_cards.dart index 96d04d3..00193a4 100644 --- a/lib/feature/tasks/widget/tasks_cards.dart +++ b/lib/feature/tasks/widget/tasks_cards.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:ascend/feature/gamification/provider/gamification_provider.dart'; -import 'package:ascend/db/db/tables/note_table.dart'; +import 'package:ascend/database/db/tables/task_table.dart'; import 'package:ascend/feature/tasks/view_models/task_category_view_model.dart'; import 'package:ascend/feature/tasks/widget/task_edit_options.dart'; import 'package:ascend/core/utils/icon_utils.dart'; diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index 68bac66..c2b14e2 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -4,9 +4,7 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; class AuthService { static const String _baseUrl = 'https://ascend-in.vercel.app/api/v1/auth'; - static const _storage = FlutterSecureStorage( - aOptions: AndroidOptions(encryptedSharedPreferences: true), - ); + static const _storage = FlutterSecureStorage(aOptions: AndroidOptions()); static const String _keyToken = 'auth_token'; static Future getToken() async { diff --git a/lib/services/background_service.dart b/lib/services/background_service.dart index 70661f8..1b419ef 100644 --- a/lib/services/background_service.dart +++ b/lib/services/background_service.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:workmanager/workmanager.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:ascend/services/app_preferences.dart'; -import 'package:ascend/db/db/app_database.dart'; +import 'package:ascend/database/db/app_database.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index ba8c1ba..0ec3b51 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -9,6 +9,7 @@ #include #include #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { @@ -21,6 +22,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); + g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin"); + sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index fafd0c9..70bb6ca 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -6,11 +6,11 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color emoji_picker_flutter flutter_secure_storage_linux + sqlite3_flutter_libs url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST - jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 5ea0e03..ef91fd7 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,13 +8,13 @@ import Foundation import app_settings import dynamic_color import emoji_picker_flutter -import file_picker_darwin +import file_picker import flutter_local_notifications import flutter_secure_storage_darwin import local_auth_darwin import shared_preferences_foundation +import sqlite3_flutter_libs import url_launcher_macos -import workmanager_apple func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppSettingsPlugin.register(with: registry.registrar(forPlugin: "AppSettingsPlugin")) @@ -25,6 +25,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin")) LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) - WorkmanagerPlugin.register(with: registry.registrar(forPlugin: "WorkmanagerPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index a20b5cc..e3ca45c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,50 +5,42 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "1b0e6a07425a3e460666e88bf1c949ccc7bb0116ad562ce94a1eca60fe820725" + sha256: "5b7468c326d2f8a4f630056404ca0d291ade42918f4a3c6233618e724f39da8e" url: "https://pub.dev" source: hosted - version: "103.0.0" + version: "92.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "61c04d0c1bfed555c681ea079519933f071a5a026578ff73c4ff0df2d3462e5e" + sha256: "70e4b1ef8003c64793a9e268a551a82869a8a96f39deb73dea28084b0e8bf75e" url: "https://pub.dev" source: hosted - version: "13.3.0" + version: "9.0.0" analyzer_buffer: dependency: transitive description: name: analyzer_buffer - sha256: "445b77e2054fa3e8c8a8ef1b5e9e6b23bb8028fffd34b5e60eaef315b7750674" - url: "https://pub.dev" - source: hosted - version: "0.3.3" - android_file_picker: - dependency: transitive - description: - name: android_file_picker - sha256: "665a5a57dfca27f91a715d300e4852a784f9f98e503dcff281bec9afb55767be" + sha256: ff4bd291778c7417fe53fe24ee0d0a1f1ffe281a2d4ea887e7094f16e36eace7 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "0.3.0" app_settings: dependency: "direct main" description: name: app_settings - sha256: "880b7086bd6789ff9cf1b027d68349ba4c2c933ea25c0ff120d340bfe496629d" + sha256: "64d50e666fd96ae90301bf71205f05019286f940ad6f5fed3d1be19c6af7546a" url: "https://pub.dev" source: hosted - version: "9.0.0" + version: "7.0.0" archive: dependency: "direct main" description: name: archive - sha256: ace891da0862b0e4cabbb064ee3fd87b2728b898949fdb366d83fe98342c9f19 + sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.0.9" args: dependency: transitive description: @@ -61,10 +53,10 @@ packages: dependency: transitive description: name: async - sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.13.1" + version: "2.13.0" boolean_selector: dependency: transitive description: @@ -77,34 +69,34 @@ packages: dependency: transitive description: name: build - sha256: b94f5da9ed3d081fd4ecc426c260998b5f4f4eb2f6d89b7e5472edef0b2b2a1b + sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3" url: "https://pub.dev" source: hosted - version: "4.0.10" + version: "4.0.4" build_config: dependency: transitive description: name: build_config - sha256: "94eaf6708fe64408c632ef2689ca3777b112f9421306ccf4f8c84d7c5c9f83f8" + sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.2.0" build_daemon: dependency: transitive description: name: build_daemon - sha256: "79e05eaf15a48d7230b053a4363b8eaac0cc234bbd0134c3229455481f55cbc6" + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 url: "https://pub.dev" source: hosted - version: "4.1.5" + version: "4.1.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "90363d438bd9f84a4d5bbb83352251f57d2d9d771bc95a44e6a33fe25fa52774" + sha256: "39ad4ca8a2876779737c60e4228b4bcd35d4352ef7e14e47514093edc012c734" url: "https://pub.dev" source: hosted - version: "2.16.0" + version: "2.11.1" built_collection: dependency: transitive description: @@ -117,10 +109,10 @@ packages: dependency: transitive description: name: built_value - sha256: "31b24be6615ec7fcf70b3aa5a7469fe35826485e639a16dd7eb83ba30e4cc6a8" + sha256: "6ae8a6435a8c6520c7077b107e77f1fb4ba7009633259a4d49a8afd8e7efc5e9" url: "https://pub.dev" source: hosted - version: "8.12.7" + version: "8.12.4" characters: dependency: transitive description: @@ -173,10 +165,10 @@ packages: dependency: transitive description: name: code_assets - sha256: cfd4f5f575a49c5f10ca856e9846073f1e6c3ee94912377eea5f6cefc5272941 + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "1.0.0" code_builder: dependency: transitive description: @@ -205,18 +197,18 @@ packages: dependency: transitive description: name: coverage - sha256: "956a3de0725ca232ad353565a8290d3357592bf4250f6f298a185e2d949c5d3d" + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" url: "https://pub.dev" source: hosted - version: "1.15.1" + version: "1.15.0" cross_file: dependency: transitive description: name: cross_file - sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.5+4" + version: "0.3.5+2" crypto: dependency: transitive description: @@ -229,82 +221,74 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" - url: "https://pub.dev" - source: hosted - version: "1.0.9" - cupertino_ui: - dependency: transitive - description: - name: cupertino_ui - sha256: "7ed8ce4159d342eec4c65f4ea6eec57adaf9365404378541f38efc1da20a5b3d" + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.8" dart_style: dependency: transitive description: name: dart_style - sha256: "3f88fc9c96c568d631356507355a2d1e983ee000c9ac008bdcb39b5bf53ce777" + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.12" + version: "3.1.3" dbus: dependency: transitive description: name: dbus - sha256: a48d5da28e89bd02196e80d81ed8d7954923d00a0f4a68cc20b575038f023383 + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 url: "https://pub.dev" source: hosted - version: "0.7.15" + version: "0.7.12" drift: dependency: "direct main" description: name: drift - sha256: "3a3f1f6f905037d7426e4c445854139fd6a3d592135f7c96d7931682b73d16f4" + sha256: "970cd188fddb111b26ea6a9b07a62bf5c2432d74147b8122c67044ae3b97e99e" url: "https://pub.dev" source: hosted - version: "2.34.3" + version: "2.31.0" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: "735aad3c34215805c66bd518c8812fa4f83b5534b2c13c4092c970c04a7e9983" + sha256: "917184b2fb867b70a548a83bf0d36268423b38d39968c06cce4905683da49587" url: "https://pub.dev" source: hosted - version: "2.34.5" + version: "2.31.0" drift_flutter: dependency: "direct main" description: name: drift_flutter - sha256: "91acf4bee7c3c84467cba46455aa70e5292a3b889f4582645d74f2e5a8c106f2" + sha256: c07120854742a0cae2f7501a0da02493addde550db6641d284983c08762e60a7 url: "https://pub.dev" source: hosted - version: "0.3.1" + version: "0.2.8" dynamic_color: dependency: "direct main" description: name: dynamic_color - sha256: "869b3bce0100eb519768ecd71c0111f0b5ea679f5f62e1f59c49d80067e730c5" + sha256: "43a5a6679649a7731ab860334a5812f2067c2d9ce6452cf069c5e0c25336c17c" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "1.8.1" emoji_picker_flutter: dependency: "direct main" description: name: emoji_picker_flutter - sha256: "47794613fc533225bb506885e378e5b2c7097af06acbfd409a0bab444613a51e" + sha256: "984d3e9b9cf3175df9a868ce4a2d9611491e80e5d3b8e2b1e8991a4998972885" url: "https://pub.dev" source: hosted - version: "4.5.3" + version: "4.4.0" equatable: dependency: transitive description: name: equatable - sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2" + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.0.8" fake_async: dependency: transitive description: @@ -321,14 +305,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" - ffi_leak_tracker: - dependency: transitive - description: - name: ffi_leak_tracker - sha256: "4093d4ef9ca06ffe2786e73bfb25e22aa92112b9bb4ec941f11e3e6b61489a97" - url: "https://pub.dev" - source: hosted - version: "0.1.2" file: dependency: transitive description: @@ -341,42 +317,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: afbaa8015d9efabd224f41084ed9fdeddfa65389ebd7cd3a9eb1476aca66b46d + sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343" url: "https://pub.dev" source: hosted - version: "12.0.0" - file_picker_darwin: - dependency: transitive - description: - name: file_picker_darwin - sha256: "5d87d156c1d63920447a662b7117d3498c67e3444a44d2cb01ed955d6efa62ef" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - file_picker_linux: - dependency: transitive - description: - name: file_picker_linux - sha256: "93d3f62f97c657053e7b184fe0f5e22347d85067c053640a30b1ac8ad7844e3b" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - file_picker_platform_interface: - dependency: transitive - description: - name: file_picker_platform_interface - sha256: "9e7a7e01e179929241f0afeb2c8c69ac95e29e17c0abea36ed193881c6bef90c" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - file_picker_web: - dependency: transitive - description: - name: file_picker_web - sha256: f1af38b3c91fafe0ca97f659b5c6818a057473ef09bb8b722f9f3f5364aa7eed - url: "https://pub.dev" - source: hosted - version: "3.0.1" + version: "10.3.10" fixnum: dependency: transitive description: @@ -389,10 +333,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: b938f77d042cbcd822936a7a359a7235bad8bd72070de1f827efc2cc297ac888 + sha256: "7ca9a40f4eb85949190e54087be8b4d6ac09dc4c54238d782a34cf1f7c011de9" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -426,47 +370,34 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "1447ba911c60f2ba3f25dae1af151ec187162566b0f57e37771bf0b400f013ad" + sha256: "2b50e938a275e1ad77352d6a25e25770f4130baa61eaf02de7a9a884680954ad" url: "https://pub.dev" source: hosted - version: "22.3.0" + version: "20.1.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: "9ca97e63776f29ab1b955725c09999fc2c150523269db150c39274f2a43c5a8b" + sha256: dce0116868cedd2cdf768af0365fc37ff1cbef7c02c4f51d0587482e625868d0 url: "https://pub.dev" source: hosted - version: "8.0.1" + version: "7.0.0" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "43c3761d916c9bd3d5c7ebbc44d82f4990329840c0c5d62ad5260cc1b5d399bd" + sha256: "23de31678a48c084169d7ae95866df9de5c9d2a44be3e5915a2ff067aeeba899" url: "https://pub.dev" source: hosted - version: "12.2.0" - flutter_local_notifications_web: - dependency: transitive - description: - name: flutter_local_notifications_web - sha256: "516afaf97a2d1e67a036c6617321b00d205d72f7a67b6eccf936cd565f985878" - url: "https://pub.dev" - source: hosted - version: "1.0.0" + version: "10.0.0" flutter_local_notifications_windows: dependency: transitive description: name: flutter_local_notifications_windows - sha256: "6f43bdd03b171b7a90f22647506fea33e2bb12294b7c7c7a3d690e960a382945" + sha256: e97a1a3016512437d9c0b12fae7d1491c3c7b9aa7f03a69b974308840656b02a url: "https://pub.dev" source: hosted - version: "3.1.1" - flutter_localizations: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" + version: "2.0.1" flutter_phoenix: dependency: "direct main" description: @@ -479,66 +410,66 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785" + sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1 url: "https://pub.dev" source: hosted - version: "2.0.35" + version: "2.0.33" flutter_riverpod: dependency: "direct main" description: name: flutter_riverpod - sha256: "56e81e662e6e54e59b231da57e90ac0d06ac67d8e3f2273c129a37ae6282b40c" + sha256: e2026c72738a925a60db30258ff1f29974e40716749f3c9850aabf34ffc1a14c url: "https://pub.dev" source: hosted - version: "3.4.2" + version: "3.2.1" flutter_secure_storage: dependency: "direct main" description: name: flutter_secure_storage - sha256: "15e8c8fe269fdf7d469b23008ab3df521c8b826ed345820532364c31bdebace6" + sha256: da922f2aab2d733db7e011a6bcc4a825b844892d4edd6df83ff156b09a9b2e40 url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "10.0.0" flutter_secure_storage_darwin: dependency: transitive description: name: flutter_secure_storage_darwin - sha256: ac6d76a752de0cd738334eb4b21743fc4943f449f5b6e308f18838b048c02ac0 + sha256: "8878c25136a79def1668c75985e8e193d9d7d095453ec28730da0315dc69aee3" url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.2.0" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux - sha256: "76fa9c841b3b1619fc5b5bc36efc7d158fa2356f223b6caeb1d0c80a54168546" + sha256: "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.0" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: "788060052712555182aba55ecb5f8b6e5cb9cfe8f776c83249a61fe3ce877db4" + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.1" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: "073a62b3aeb866ab4ce795f960413948e51e5a42a9b0c8333b6daf5bb3208a1c" + sha256: "6a1137df62b84b54261dca582c1c09ea72f4f9a4b2fcee21b025964132d5d0c3" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.0" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: "471951813a97006d899db4948acc654a4f28c440083ea08178935ce20b173ec1" + sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613" url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.1.0" flutter_shaders: dependency: transitive description: @@ -561,10 +492,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "27585a6c2b9ac28ffb7b45d87fd1502332af1eb90e1c9f5eb1acb24c71d26e17" + sha256: f23ea33b3863f119b58ed1b586e881a46bd28715ddcc4dbc33104524e3434131 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "3.2.5" freezed_annotation: dependency: "direct main" description: @@ -601,10 +532,10 @@ packages: dependency: transitive description: name: hooks - sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f + sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "1.0.1" http: dependency: "direct main" description: @@ -633,18 +564,18 @@ packages: dependency: transitive description: name: image - sha256: "1976370a4df3091bb0f72409c187ad1f9132a818bc6b95ca59c0bae1c75c688e" + sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce url: "https://pub.dev" source: hosted - version: "4.9.2" + version: "4.8.0" intl: dependency: "direct main" description: name: intl - sha256: "1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867" + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.20.3" + version: "0.20.2" io: dependency: transitive description: @@ -653,38 +584,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - jni: - dependency: transitive - description: - name: jni - sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - jni_flutter: - dependency: transitive - description: - name: jni_flutter - sha256: "7b717011ea40d04fd47c2731d3d1d36eb99eba3435c2753d62489e8c3c9991d5" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - jni_util: - dependency: transitive - description: - name: jni_util - sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" - url: "https://pub.dev" - source: hosted - version: "1.0.0" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" + sha256: cb09e7dac6210041fad964ed7fbee004f14258b4eca4040f72d1234062ace4c8 url: "https://pub.dev" source: hosted - version: "4.12.0" + version: "4.11.0" leak_tracker: dependency: transitive description: @@ -717,30 +624,22 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.0" - listen: - dependency: transitive - description: - name: listen - sha256: "47501a08016a43fcad79252439d723f50f14f88fa7bfd8a177e0a417e5c9e1f2" - url: "https://pub.dev" - source: hosted - version: "1.0.1" local_auth: dependency: "direct main" description: name: local_auth - sha256: ecf24edf2283c509ecd217e3595f6f71034b68888d28ad1dae6bfa0857b816ac + sha256: ae6f382f638108c6becd134318d7c3f0a93875383a54010f61d7c97ac05d5137 url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" local_auth_android: dependency: transitive description: name: local_auth_android - sha256: fdb936d59ab945c7af297defd67bd1ed87b11b6db1bc16d01e94677a8f1c38ec + sha256: dc9663a7bc8ac33d7d988e63901974f63d527ebef260eabd19c479447cc9c911 url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.5" local_auth_darwin: dependency: transitive description: @@ -789,14 +688,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.13.0" - material_ui: - dependency: transitive - description: - name: material_ui - sha256: "4f3f38b9953df0a87d6bf5f21880029f77c47048487d5339410c39936be4683b" - url: "https://pub.dev" - source: hosted - version: "1.0.1" meta: dependency: transitive description: @@ -817,18 +708,18 @@ packages: dependency: transitive description: name: mockito - sha256: "6c1970612452260366064d4df80fdb3eece1ec5e52610ae34a0e51f2f3d8e64f" + sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566 url: "https://pub.dev" source: hosted - version: "5.8.1" + version: "5.6.3" native_toolchain_c: dependency: transitive description: name: native_toolchain_c - sha256: "9d233b6f2d9c52e1a2b5fbe70451d2c10ac674d3bb419d0ec8de14989d437c26" + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" url: "https://pub.dev" source: hosted - version: "0.19.4" + version: "0.17.4" node_preamble: dependency: transitive description: @@ -841,10 +732,10 @@ packages: dependency: transitive description: name: objective_c - sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3 + sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" url: "https://pub.dev" source: hosted - version: "9.6.0" + version: "9.3.0" package_config: dependency: transitive description: @@ -865,18 +756,18 @@ packages: dependency: "direct main" description: name: path_provider - sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.5" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.2.22" path_provider_foundation: dependency: transitive description: @@ -889,18 +780,18 @@ packages: dependency: transitive description: name: path_provider_linux - sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.2" path_provider_windows: dependency: transitive description: @@ -913,50 +804,50 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: e7317eb2eb611d1bf0386b6b974be9c50449f975f19a90a7b8ea013550302b30 + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 url: "https://pub.dev" source: hosted - version: "13.0.1" + version: "12.0.1" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: d7676c6fcf2f0b92537ec41476a6ead45a00b0d8bbb852395a6f9f33f49d6242 + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" url: "https://pub.dev" source: hosted - version: "14.0.0" + version: "13.0.1" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 url: "https://pub.dev" source: hosted - version: "9.6.1" + version: "9.4.7" permission_handler_html: dependency: transitive description: name: permission_handler_html - sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" url: "https://pub.dev" source: hosted - version: "0.1.4+1" + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: a5c8a97ecf5616112a5b16d4b8e9ec0e5ae90ef63ac69c0d7b8ae240be760b23 + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.3.0" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.1" petitparser: dependency: transitive description: @@ -993,18 +884,10 @@ packages: dependency: transitive description: name: posix - sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e + sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" url: "https://pub.dev" source: hosted - version: "6.5.2" - process: - dependency: transitive - description: - name: process - sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 - url: "https://pub.dev" - source: hosted - version: "5.0.5" + version: "6.5.0" pub_semver: dependency: transitive description: @@ -1029,62 +912,54 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" - record_use: - dependency: transitive - description: - name: record_use - sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2" - url: "https://pub.dev" - source: hosted - version: "1.1.1" riverpod: dependency: transitive description: name: riverpod - sha256: "84351b3472a447f7b89f961f95c73287009d58c59d8cc1267425d995f78e50f1" + sha256: "8c22216be8ad3ef2b44af3a329693558c98eca7b8bd4ef495c92db0bba279f83" url: "https://pub.dev" source: hosted - version: "3.4.2" + version: "3.2.1" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "46a8dd0461080fde8f886f65f87580758dae8495e352f9ea6a09953abc3df7bd" + sha256: e55bc08c084a424e1bbdc303fe8ea75daafe4269b68fd0e0f6f1678413715b66 url: "https://pub.dev" source: hosted - version: "1.0.0-dev.11" + version: "1.0.0-dev.9" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: dd043c75eb3cea2654f5dca51234413ac04bd092ccc73e747fd73cae37ac5360 + sha256: "16471a1260b94e939394d78f1c63a9350936ac4a68c9fbdab40be47268c0b04f" url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "4.0.2" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "2e66b5691cf5d50d6a409904b0477e869e0ecbdd5ada1535d263a95d44439e75" + sha256: "6f9220534d7a353b53c875ea191a84d28cb4e52ac420a66a1bd7318329d977b0" url: "https://pub.dev" source: hosted - version: "4.0.8" + version: "4.0.3" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" url: "https://pub.dev" source: hosted - version: "2.5.5" + version: "2.5.4" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "0634e64bd719f89c012f392938e173521f535d3ecaf66558fa94a056d22b5cc7" + sha256: "8374d6200ab33ac99031a852eba4c8eb2170c4bf20778b3e2c9eccb45384fb41" url: "https://pub.dev" source: hosted - version: "2.4.27" + version: "2.4.21" shared_preferences_foundation: dependency: transitive description: @@ -1105,10 +980,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.1" shared_preferences_web: dependency: transitive description: @@ -1166,10 +1041,10 @@ packages: dependency: transitive description: name: source_gen - sha256: a603f1fb984a7391ae5978d1b92bfaaa08b350dca5c825256f925818f7943bf5 + sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.2.0" source_map_stack_trace: dependency: transitive description: @@ -1182,10 +1057,10 @@ packages: dependency: transitive description: name: source_maps - sha256: "14c2945847669b44089bb1222f66873d7ff7103c58911917f2a63c5a62327898" + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" url: "https://pub.dev" source: hosted - version: "0.10.14" + version: "0.10.13" source_span: dependency: transitive description: @@ -1194,38 +1069,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.2" - sqlcipher_flutter_libs: - dependency: transitive - description: - name: sqlcipher_flutter_libs - sha256: "38d62d659d2fb8739bf25a42c9a350d1fdd6c29a5a61f13a946778ec75d27929" - url: "https://pub.dev" - source: hosted - version: "0.7.0+eol" sqlite3: dependency: transitive description: name: sqlite3 - sha256: "4c7fe79840389aaeaf05fd093f795b631b5a98e2bd28d54e555c100f4a9c7a1c" + sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" url: "https://pub.dev" source: hosted - version: "3.5.2" + version: "2.9.4" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "3ed7553eee7bb368f8950f58ba29f634e06e813c029aff6a0d60862b96de8454" + sha256: "1e800ebe7f85a80a66adacaa6febe4d5f4d8b75f244e9838a27cb2ffc7aec08d" url: "https://pub.dev" source: hosted - version: "0.6.0+eol" + version: "0.5.41" sqlparser: dependency: transitive description: name: sqlparser - sha256: "772bb2f6f5bce0631a60f26b57d6e8882e1105c22345b05c163ee6ee5d7ba32d" + sha256: "337e9997f7141ffdd054259128553c348635fa318f7ca492f07a4ab76f850d19" url: "https://pub.dev" source: hosted - version: "0.45.0" + version: "0.43.1" stack_trace: dependency: transitive description: @@ -1302,10 +1169,10 @@ packages: dependency: "direct main" description: name: timezone - sha256: "981d1020d6ef8fe1e7b3de5054e5b25579ae7c403d7734adc508ffc47668e9cb" + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.10.1" typed_data: dependency: transitive description: @@ -1326,10 +1193,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: b413d49b73867ac08dd2f9890efd3cc11f2a0e577618d50843440a1fb3776c32 + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" url: "https://pub.dev" source: hosted - version: "6.3.32" + version: "6.3.28" url_launcher_ios: dependency: transitive description: @@ -1366,10 +1233,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" + sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.2" url_launcher_windows: dependency: transitive description: @@ -1382,10 +1249,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd" + sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489" url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.5.3" vector_math: dependency: transitive description: @@ -1398,10 +1265,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "15.3.0" + version: "15.0.2" watcher: dependency: transitive description: @@ -1446,66 +1313,42 @@ packages: dependency: transitive description: name: win32 - sha256: a0b93865d5644f11cf6a8c3f6db909f1ec168958b5805f6cc684adea957cd63d - url: "https://pub.dev" - source: hosted - version: "6.4.0" - windows_file_picker: - dependency: transitive - description: - name: windows_file_picker - sha256: "72cf23466e146f2c0f19e1d78be97ff6409dc15b0c090f8eb284f94f4a33de26" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "5.15.0" workmanager: dependency: "direct main" description: name: workmanager - sha256: c2c7a3eb984cfcf5623308042fc8270e7e02f5021b34f491ffc0a1ec8e281d5c + sha256: "065673b2a465865183093806925419d311a9a5e0995aa74ccf8920fd695e2d10" url: "https://pub.dev" source: hosted - version: "0.10.9" + version: "0.9.0+3" workmanager_android: dependency: transitive description: name: workmanager_android - sha256: "187d1d34864f57f9e388b33b88c001c494093c53679831a3dec2e8176e8829d1" + sha256: "9ae744db4ef891f5fcd2fb8671fccc712f4f96489a487a1411e0c8675e5e8cb7" url: "https://pub.dev" source: hosted - version: "0.10.8" + version: "0.9.0+2" workmanager_apple: dependency: transitive description: name: workmanager_apple - sha256: "15558fb54415a010910c3529eaf8f61f94d23903dac620331895c472602d6f6e" - url: "https://pub.dev" - source: hosted - version: "0.9.10" - workmanager_linux: - dependency: transitive - description: - name: workmanager_linux - sha256: "7d8520e1103b910a43d8bafe37ec2415f4c7c148afcb1eee0ec73ae67b4cdd22" + sha256: "1cc12ae3cbf5535e72f7ba4fde0c12dd11b757caf493a28e22d684052701f2ca" url: "https://pub.dev" source: hosted - version: "0.1.1+1" + version: "0.9.1+2" workmanager_platform_interface: dependency: transitive description: name: workmanager_platform_interface - sha256: "378b392db15ee88cd878ab983d3a0b4b1e460cfbb0f096ff74fda2614b1ba172" - url: "https://pub.dev" - source: hosted - version: "0.10.4" - workmanager_web: - dependency: transitive - description: - name: workmanager_web - sha256: "2ac481ade599bdd957ee2891be09a0c34be87923a2c3ca4dfe36add6fc735ffd" + sha256: f40422f10b970c67abb84230b44da22b075147637532ac501729256fcea10a47 url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.9.1+1" xdg_directories: dependency: transitive description: @@ -1518,10 +1361,10 @@ packages: dependency: transitive description: name: xml - sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4" + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "6.6.1" yaml: dependency: transitive description: @@ -1531,5 +1374,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.13.0 <4.0.0" - flutter: ">=3.44.0" + dart: ">=3.11.0-0 <4.0.0" + flutter: ">=3.38.4" diff --git a/pubspec.yaml b/pubspec.yaml index afa1cf0..4f4cff2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,27 +17,27 @@ dependencies: freezed_annotation: ^3.1.0 json_annotation: ^4.10.0 drift: ^2.31.0 - drift_flutter: ^0.3.1 - sqlite3_flutter_libs: ^0.6.0+eol + drift_flutter: ^0.2.8 + sqlite3_flutter_libs: ^0.5.41 path: ^1.9.1 path_provider: ^2.1.5 intl: ^0.20.2 shared_preferences: ^2.5.4 - dynamic_color: ^2.1.0 - app_settings: ^9.0.0 + dynamic_color: ^1.8.1 + app_settings: ^7.0.0 url_launcher: ^6.3.2 fl_chart: ^1.1.1 emoji_picker_flutter: ^4.4.0 - file_picker: ^12.0.0 + file_picker: ^10.3.10 local_auth: ^3.0.0 - flutter_secure_storage: ^11.0.0 - flutter_local_notifications: ^22.3.0 + flutter_secure_storage: ^10.0.0 + flutter_local_notifications: ^20.1.0 archive: ^4.0.9 flutter_phoenix: ^1.1.1 flutter_animate: ^4.5.2 - workmanager: ^0.10.9 - permission_handler: ^13.0.1 - timezone: ^0.11.1 + workmanager: ^0.9.0+3 + permission_handler: ^12.0.1 + timezone: ^0.10.1 http: ^1.6.0 uuid: ^4.5.3 @@ -46,7 +46,7 @@ dev_dependencies: sdk: flutter flutter_lints: ^6.0.0 - freezed: ^4.0.0 + freezed: ^3.2.3 drift_dev: ^2.31.0 build_runner: ^2.11.1 riverpod_generator: ^4.0.3 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index fa86a62..2abcc07 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { @@ -24,6 +25,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("LocalAuthPlugin")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + Sqlite3FlutterLibsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 1ff15a0..b16ebc2 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -8,12 +8,12 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_windows local_auth_windows permission_handler_windows + sqlite3_flutter_libs url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST flutter_local_notifications_windows - jni ) set(PLUGIN_BUNDLED_LIBRARIES)