t_db2 1.1.0 copy "t_db2: ^1.1.0" to clipboard
t_db2: ^1.1.0 copied to clipboard

TDB2<T> is a base abstract class for a generic binary database.It is designed to provide type-safe, object-oriented (OOP) database operations for any user-defined type `T`.

example/t_db2_example.dart

// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:t_db2/t_db2.dart';

void main() async {
  final db = TDB2.getInstance();
  db.registerAdapterNotExists<Post>(PostAdapter());
  db.registerAdapterNotExists<PostContent>(PostContentAdapter());

  await db.open('test.db');

  final box = db.getBox<Post>();
  // final content = db.getBox<PostContent>();

  // await box.deleteAllByIds([1, 2, 3, 4]);

  // await box.add(Post(title: 'one'));
  // await box.add(Post(title: 'two'));
  // await box.add(Post(title: 'three'));
  // await box.add(Post(title: 'four'));

  // await box.updateById(1, Post(title: 'one two'));
  // await box.updateById(1, Post(title: 'one three'));

  await for (var post in box.getAllStream()) {
    print(post);
  }

  print('empty data: ${db.emptyData}');
  print('lastIndex: ${db.lastIndex}');
  print('magic: ${db.magic}');
  print('version: ${db.version}');
  print('deletedCount: ${db.deletedCount}');
  print('deletedSize: ${db.deletedSize}');

  await db.close();

  // print(
  //   await TDB2.getHeaderFromPath(
  //     '/home/thancoder/projects/plugins/t_db/test.db',
  //   ),
  // );
}

class PostAdapter extends TDB2Adapter<Post> {
  @override
  int get adapterTypeId => 1;

  @override
  Post fromMap(Map<String, dynamic> map) {
    return Post.fromJson(map);
  }

  @override
  int getId(Post value) {
    return value.id;
  }

  @override
  Map<String, dynamic> toMap(Post value) {
    return value.toJson();
  }
}

class PostContentAdapter extends TDB2Adapter<PostContent> {
  @override
  int get adapterTypeId => 2;

  @override
  int parentId(PostContent value) {
    return value.postId;
  }

  @override
  PostContent fromMap(Map<String, dynamic> map) {
    return PostContent.fromJson(map);
  }

  @override
  int getId(PostContent value) {
    return value.id;
  }

  @override
  Map<String, dynamic> toMap(PostContent value) {
    return value.toJson();
  }
}

class Post {
  final int id; //auto generated id
  final String title;

  const Post({this.id = 0, required this.title});

  Map<String, dynamic> toJson() {
    return {'id': id, 'title': title};
  }

  factory Post.fromJson(Map<String, dynamic> json) {
    return Post(id: json['id'], title: json['title']);
  }

  Post copyWith({int? id, String? title}) {
    return Post(id: id ?? this.id, title: title ?? this.title);
  }

  @override
  String toString() => 'Post(id: $id, title: $title)';
}

class PostContent {
  final int id; //auto generated id
  final int postId;
  final String content;

  const PostContent({this.id = 0, required this.postId, required this.content});

  Map<String, dynamic> toJson() {
    return {'id': id, 'postId': postId, 'content': content};
  }

  factory PostContent.fromJson(Map<String, dynamic> json) {
    return PostContent(
      id: json['id'],
      postId: json['postId'],
      content: json['content'],
    );
  }
}
0
likes
160
points
6
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

TDB2<T> is a base abstract class for a generic binary database.It is designed to provide type-safe, object-oriented (OOP) database operations for any user-defined type `T`.

Repository (GitHub)
View/report issues

License

MIT (license)

More

Packages that depend on t_db2