drift/docs/lib/snippets/_shared/todo_tables.dart

36 lines
1.1 KiB
Dart

import 'package:drift/drift.dart';
import 'package:drift/internal/modular.dart';
import 'todo_tables.drift.dart';
// #docregion tables
class TodoItems extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 6, max: 32)();
TextColumn get content => text().named('body')();
IntColumn get category => integer().nullable().references(Categories, #id)();
// #enddocregion tables
DateTimeColumn get dueDate => dateTime().nullable()();
// #docregion tables
}
@DataClassName('Category')
class Categories extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get name => text()();
}
// #enddocregion tables
class Users extends Table {
IntColumn get id => integer().autoIncrement()();
DateTimeColumn get birthDate => dateTime()();
}
class CanUseCommonTables extends ModularAccessor {
CanUseCommonTables(super.attachedDatabase);
$TodoItemsTable get todoItems => resultSet('todo_items');
$CategoriesTable get categories => resultSet('categories');
$UsersTable get users => resultSet('users');
}