-
Notifications
You must be signed in to change notification settings - Fork 3
Data Objects
Dustin Catap edited this page Jun 19, 2024
·
2 revisions
A DataObject
is a class that represents a table in the database.
Since we are using drift
as the database, DataObject
classes are generated by using DataTable
classes.
// coverage:ignore-file
import 'package:drift/drift.dart';
import 'package:starterkit_app/core/domain/models/data_table.dart';
@DataClassName('PostDataObject')
class PostDataTable extends DataTable {
IntColumn get postId => integer()();
IntColumn get userId => integer()();
TextColumn get title => text()();
TextColumn get body => text()();
}
After running build_runner
, it generates this PostDataObject
class:
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
class PostDataObject extends DataClass implements Insertable<PostDataObject> {
final int id;
final int postId;
final int userId;
final String title;
final String body;
const PostDataObject(
{required this.id,
required this.postId,
required this.userId,
required this.title,
required this.body});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['post_id'] = Variable<int>(postId);
map['user_id'] = Variable<int>(userId);
map['title'] = Variable<String>(title);
map['body'] = Variable<String>(body);
return map;
}
factory PostDataObject.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return PostDataObject(
id: serializer.fromJson<int>(json['id']),
postId: serializer.fromJson<int>(json['postId']),
userId: serializer.fromJson<int>(json['userId']),
title: serializer.fromJson<String>(json['title']),
body: serializer.fromJson<String>(json['body']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'postId': serializer.toJson<int>(postId),
'userId': serializer.toJson<int>(userId),
'title': serializer.toJson<String>(title),
'body': serializer.toJson<String>(body),
};
}
Read more about on how to create a DataObject
in the Drift documentation.