Skip to content

Commit

Permalink
db part
Browse files Browse the repository at this point in the history
  • Loading branch information
notfoundme committed Feb 29, 2024
1 parent 163c207 commit bc6f364
Show file tree
Hide file tree
Showing 10 changed files with 573 additions and 8 deletions.
8 changes: 8 additions & 0 deletions lib/db/note_db.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:note_app/models/note_data_model.dart';

abstract class NotesDb {
Future<List<NotesModel>> getAllNotes();
Future<bool> createNote(NotesModel notesModel);
Future<bool> updateNote(NotesModel notesModel);
Future<bool> deleteNote(NotesModel notesModel);
}
42 changes: 42 additions & 0 deletions lib/db/note_db_impl.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import 'package:hive/hive.dart';
import 'package:note_app/db/note_db.dart';
import 'package:note_app/models/note_data_model.dart';

class NotesDbImpl implements NotesDb {
Box<NotesModel> db;

NotesDbImpl(this.db);

@override
Future<bool> createNote(NotesModel notesModel) async {
int result = await db.add(notesModel);
return true;
}

@override
Future<bool> deleteNote(NotesModel notesModel) async {
int currentIndex = -1;
for (int i = 0; i < db.length; i++) {
if (db.values.elementAt(i).id == notesModel.id) {
currentIndex = i;
}
}
await db.deleteAt(currentIndex);
return true;
}

@override
Future<List<NotesModel>> getAllNotes() async {
return db.values.toList();
}

@override
Future<bool> updateNote(NotesModel notesModel) async {
for (int i = 0; i < db.length; i++) {
if (db.values.elementAt(i).id == notesModel.id) {
await db.putAt(i, notesModel);
}
}
return true;
}
}
26 changes: 18 additions & 8 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import 'package:flutter/material.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:note_app/models/note_data_model.dart';

Future<void> main() async {
await Hive.initFlutter();
// Hive.registerAdapter(NotesModelAdapter());

await Hive.openBox<NotesModel>("noteBox");

void main() {
runApp(const MainApp());
}

Expand All @@ -9,12 +16,15 @@ class MainApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text('Hello World!'),
),
),
);
return HomeScreen();
}
}

class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});

@override
Widget build(BuildContext context) {
return const Placeholder();
}
}
24 changes: 24 additions & 0 deletions lib/models/note_data_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'package:hive/hive.dart';
// part 'note_data_model.g.dart';

@HiveType(typeId: 0)
class NotesModel {
@HiveField(0)
String? id;

@HiveField(1)
String? title;

@HiveField(2)
String? content;

@HiveField(3)
DateTime? date;

NotesModel({
required this.title,
required this.id,
required this.content,
required this.date,
});
}
Empty file added lib/repo/note_repo.dart
Empty file.
Empty file added lib/repo/note_repo_impl.dart
Empty file.
Empty file added lib/vm/note_vm.dart
Empty file.
2 changes: 2 additions & 0 deletions macos/Flutter/GeneratedPluginRegistrant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import FlutterMacOS
import Foundation

import path_provider_foundation

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
}
Loading

0 comments on commit bc6f364

Please sign in to comment.