drift/examples/app/lib/database/database.g.dart

771 lines
25 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'database.dart';
// **************************************************************************
// DriftDatabaseGenerator
// **************************************************************************
// ignore_for_file: type=lint
class Category extends DataClass implements Insertable<Category> {
final int id;
final String name;
final Color color;
const Category({required this.id, required this.name, required this.color});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['name'] = Variable<String>(name);
{
final converter = $CategoriesTable.$converter0;
map['color'] = Variable<int>(converter.toSql(color));
}
return map;
}
CategoriesCompanion toCompanion(bool nullToAbsent) {
return CategoriesCompanion(
id: Value(id),
name: Value(name),
color: Value(color),
);
}
factory Category.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return Category(
id: serializer.fromJson<int>(json['id']),
name: serializer.fromJson<String>(json['name']),
color: serializer.fromJson<Color>(json['color']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'name': serializer.toJson<String>(name),
'color': serializer.toJson<Color>(color),
};
}
Category copyWith({int? id, String? name, Color? color}) => Category(
id: id ?? this.id,
name: name ?? this.name,
color: color ?? this.color,
);
@override
String toString() {
return (StringBuffer('Category(')
..write('id: $id, ')
..write('name: $name, ')
..write('color: $color')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, name, color);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is Category &&
other.id == this.id &&
other.name == this.name &&
other.color == this.color);
}
class CategoriesCompanion extends UpdateCompanion<Category> {
final Value<int> id;
final Value<String> name;
final Value<Color> color;
const CategoriesCompanion({
this.id = const Value.absent(),
this.name = const Value.absent(),
this.color = const Value.absent(),
});
CategoriesCompanion.insert({
this.id = const Value.absent(),
required String name,
required Color color,
}) : name = Value(name),
color = Value(color);
static Insertable<Category> custom({
Expression<int>? id,
Expression<String>? name,
Expression<int>? color,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (name != null) 'name': name,
if (color != null) 'color': color,
});
}
CategoriesCompanion copyWith(
{Value<int>? id, Value<String>? name, Value<Color>? color}) {
return CategoriesCompanion(
id: id ?? this.id,
name: name ?? this.name,
color: color ?? this.color,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (color.present) {
final converter = $CategoriesTable.$converter0;
map['color'] = Variable<int>(converter.toSql(color.value));
}
return map;
}
@override
String toString() {
return (StringBuffer('CategoriesCompanion(')
..write('id: $id, ')
..write('name: $name, ')
..write('color: $color')
..write(')'))
.toString();
}
}
class $CategoriesTable extends Categories
with TableInfo<$CategoriesTable, Category> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
$CategoriesTable(this.attachedDatabase, [this._alias]);
final VerificationMeta _idMeta = const VerificationMeta('id');
@override
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false, defaultConstraints: (context) {
const dialectConstraints = {
SqlDialect.sqlite: 'PRIMARY KEY AUTOINCREMENT',
SqlDialect.mysql: 'PRIMARY KEY AUTOINCREMENT',
SqlDialect.postgres: 'PRIMARY KEY AUTOINCREMENT',
};
final constraints = dialectConstraints[context.dialect]!;
if (constraints.isEmpty) {
return;
}
context.buffer
..write(' ')
..write(constraints);
}, hasAutoIncrement: true);
final VerificationMeta _nameMeta = const VerificationMeta('name');
@override
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true);
final VerificationMeta _colorMeta = const VerificationMeta('color');
@override
late final GeneratedColumnWithTypeConverter<Color, int> color =
GeneratedColumn<int>('color', aliasedName, false,
type: DriftSqlType.int, requiredDuringInsert: true)
.withConverter<Color>($CategoriesTable.$converter0);
@override
List<GeneratedColumn> get $columns => [id, name, color];
@override
String get aliasedName => _alias ?? 'categories';
@override
String get actualTableName => 'categories';
@override
VerificationContext validateIntegrity(Insertable<Category> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
context.handle(_colorMeta, const VerificationResult.success());
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
Category map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Category(
id: attachedDatabase.options.types
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
name: attachedDatabase.options.types
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
color: $CategoriesTable.$converter0.fromSql(attachedDatabase.options.types
.read(DriftSqlType.int, data['${effectivePrefix}color'])!),
);
}
@override
$CategoriesTable createAlias(String alias) {
return $CategoriesTable(attachedDatabase, alias);
}
static TypeConverter<Color, int> $converter0 = const ColorConverter();
}
class TodoEntry extends DataClass implements Insertable<TodoEntry> {
final int id;
final String description;
final int? category;
final DateTime? dueDate;
const TodoEntry(
{required this.id,
required this.description,
this.category,
this.dueDate});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['description'] = Variable<String>(description);
if (!nullToAbsent || category != null) {
map['category'] = Variable<int>(category);
}
if (!nullToAbsent || dueDate != null) {
map['due_date'] = Variable<DateTime>(dueDate);
}
return map;
}
TodoEntriesCompanion toCompanion(bool nullToAbsent) {
return TodoEntriesCompanion(
id: Value(id),
description: Value(description),
category: category == null && nullToAbsent
? const Value.absent()
: Value(category),
dueDate: dueDate == null && nullToAbsent
? const Value.absent()
: Value(dueDate),
);
}
factory TodoEntry.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return TodoEntry(
id: serializer.fromJson<int>(json['id']),
description: serializer.fromJson<String>(json['description']),
category: serializer.fromJson<int?>(json['category']),
dueDate: serializer.fromJson<DateTime?>(json['dueDate']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'description': serializer.toJson<String>(description),
'category': serializer.toJson<int?>(category),
'dueDate': serializer.toJson<DateTime?>(dueDate),
};
}
TodoEntry copyWith(
{int? id,
String? description,
Value<int?> category = const Value.absent(),
Value<DateTime?> dueDate = const Value.absent()}) =>
TodoEntry(
id: id ?? this.id,
description: description ?? this.description,
category: category.present ? category.value : this.category,
dueDate: dueDate.present ? dueDate.value : this.dueDate,
);
@override
String toString() {
return (StringBuffer('TodoEntry(')
..write('id: $id, ')
..write('description: $description, ')
..write('category: $category, ')
..write('dueDate: $dueDate')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, description, category, dueDate);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is TodoEntry &&
other.id == this.id &&
other.description == this.description &&
other.category == this.category &&
other.dueDate == this.dueDate);
}
class TodoEntriesCompanion extends UpdateCompanion<TodoEntry> {
final Value<int> id;
final Value<String> description;
final Value<int?> category;
final Value<DateTime?> dueDate;
const TodoEntriesCompanion({
this.id = const Value.absent(),
this.description = const Value.absent(),
this.category = const Value.absent(),
this.dueDate = const Value.absent(),
});
TodoEntriesCompanion.insert({
this.id = const Value.absent(),
required String description,
this.category = const Value.absent(),
this.dueDate = const Value.absent(),
}) : description = Value(description);
static Insertable<TodoEntry> custom({
Expression<int>? id,
Expression<String>? description,
Expression<int>? category,
Expression<DateTime>? dueDate,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (description != null) 'description': description,
if (category != null) 'category': category,
if (dueDate != null) 'due_date': dueDate,
});
}
TodoEntriesCompanion copyWith(
{Value<int>? id,
Value<String>? description,
Value<int?>? category,
Value<DateTime?>? dueDate}) {
return TodoEntriesCompanion(
id: id ?? this.id,
description: description ?? this.description,
category: category ?? this.category,
dueDate: dueDate ?? this.dueDate,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (description.present) {
map['description'] = Variable<String>(description.value);
}
if (category.present) {
map['category'] = Variable<int>(category.value);
}
if (dueDate.present) {
map['due_date'] = Variable<DateTime>(dueDate.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('TodoEntriesCompanion(')
..write('id: $id, ')
..write('description: $description, ')
..write('category: $category, ')
..write('dueDate: $dueDate')
..write(')'))
.toString();
}
}
class $TodoEntriesTable extends TodoEntries
with TableInfo<$TodoEntriesTable, TodoEntry> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
$TodoEntriesTable(this.attachedDatabase, [this._alias]);
final VerificationMeta _idMeta = const VerificationMeta('id');
@override
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false, defaultConstraints: (context) {
const dialectConstraints = {
SqlDialect.sqlite: 'PRIMARY KEY AUTOINCREMENT',
SqlDialect.mysql: 'PRIMARY KEY AUTOINCREMENT',
SqlDialect.postgres: 'PRIMARY KEY AUTOINCREMENT',
};
final constraints = dialectConstraints[context.dialect]!;
if (constraints.isEmpty) {
return;
}
context.buffer
..write(' ')
..write(constraints);
}, hasAutoIncrement: true);
final VerificationMeta _descriptionMeta =
const VerificationMeta('description');
@override
late final GeneratedColumn<String> description = GeneratedColumn<String>(
'description', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true);
final VerificationMeta _categoryMeta = const VerificationMeta('category');
@override
late final GeneratedColumn<int> category = GeneratedColumn<int>(
'category', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false, defaultConstraints: (context) {
const dialectConstraints = {
SqlDialect.sqlite: 'REFERENCES "categories" ("id")',
SqlDialect.mysql: 'REFERENCES "categories" ("id")',
SqlDialect.postgres: 'REFERENCES "categories" ("id")',
};
final constraints = dialectConstraints[context.dialect]!;
if (constraints.isEmpty) {
return;
}
context.buffer
..write(' ')
..write(constraints);
});
final VerificationMeta _dueDateMeta = const VerificationMeta('dueDate');
@override
late final GeneratedColumn<DateTime> dueDate = GeneratedColumn<DateTime>(
'due_date', aliasedName, true,
type: DriftSqlType.dateTime, requiredDuringInsert: false);
@override
List<GeneratedColumn> get $columns => [id, description, category, dueDate];
@override
String get aliasedName => _alias ?? 'todo_entries';
@override
String get actualTableName => 'todo_entries';
@override
VerificationContext validateIntegrity(Insertable<TodoEntry> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('description')) {
context.handle(
_descriptionMeta,
description.isAcceptableOrUnknown(
data['description']!, _descriptionMeta));
} else if (isInserting) {
context.missing(_descriptionMeta);
}
if (data.containsKey('category')) {
context.handle(_categoryMeta,
category.isAcceptableOrUnknown(data['category']!, _categoryMeta));
}
if (data.containsKey('due_date')) {
context.handle(_dueDateMeta,
dueDate.isAcceptableOrUnknown(data['due_date']!, _dueDateMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
TodoEntry map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return TodoEntry(
id: attachedDatabase.options.types
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
description: attachedDatabase.options.types
.read(DriftSqlType.string, data['${effectivePrefix}description'])!,
category: attachedDatabase.options.types
.read(DriftSqlType.int, data['${effectivePrefix}category']),
dueDate: attachedDatabase.options.types
.read(DriftSqlType.dateTime, data['${effectivePrefix}due_date']),
);
}
@override
$TodoEntriesTable createAlias(String alias) {
return $TodoEntriesTable(attachedDatabase, alias);
}
}
class TextEntrie extends DataClass implements Insertable<TextEntrie> {
final String description;
const TextEntrie({required this.description});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['description'] = Variable<String>(description);
return map;
}
TextEntriesCompanion toCompanion(bool nullToAbsent) {
return TextEntriesCompanion(
description: Value(description),
);
}
factory TextEntrie.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return TextEntrie(
description: serializer.fromJson<String>(json['description']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'description': serializer.toJson<String>(description),
};
}
TextEntrie copyWith({String? description}) => TextEntrie(
description: description ?? this.description,
);
@override
String toString() {
return (StringBuffer('TextEntrie(')
..write('description: $description')
..write(')'))
.toString();
}
@override
int get hashCode => description.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is TextEntrie && other.description == this.description);
}
class TextEntriesCompanion extends UpdateCompanion<TextEntrie> {
final Value<String> description;
const TextEntriesCompanion({
this.description = const Value.absent(),
});
TextEntriesCompanion.insert({
required String description,
}) : description = Value(description);
static Insertable<TextEntrie> custom({
Expression<String>? description,
}) {
return RawValuesInsertable({
if (description != null) 'description': description,
});
}
TextEntriesCompanion copyWith({Value<String>? description}) {
return TextEntriesCompanion(
description: description ?? this.description,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (description.present) {
map['description'] = Variable<String>(description.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('TextEntriesCompanion(')
..write('description: $description')
..write(')'))
.toString();
}
}
class TextEntries extends Table
with
TableInfo<TextEntries, TextEntrie>,
VirtualTableInfo<TextEntries, TextEntrie> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
TextEntries(this.attachedDatabase, [this._alias]);
final VerificationMeta _descriptionMeta =
const VerificationMeta('description');
late final GeneratedColumn<String> description = GeneratedColumn<String>(
'description', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns => [description];
@override
String get aliasedName => _alias ?? 'text_entries';
@override
String get actualTableName => 'text_entries';
@override
VerificationContext validateIntegrity(Insertable<TextEntrie> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('description')) {
context.handle(
_descriptionMeta,
description.isAcceptableOrUnknown(
data['description']!, _descriptionMeta));
} else if (isInserting) {
context.missing(_descriptionMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => <GeneratedColumn>{};
@override
TextEntrie map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return TextEntrie(
description: attachedDatabase.options.types
.read(DriftSqlType.string, data['${effectivePrefix}description'])!,
);
}
@override
TextEntries createAlias(String alias) {
return TextEntries(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
@override
String get moduleAndArgs =>
'fts5(description, content=todo_entries, content_rowid=id)';
}
abstract class _$AppDatabase extends GeneratedDatabase {
_$AppDatabase(QueryExecutor e) : super(e);
_$AppDatabase.connect(DatabaseConnection c) : super.connect(c);
late final $CategoriesTable categories = $CategoriesTable(this);
late final $TodoEntriesTable todoEntries = $TodoEntriesTable(this);
late final TextEntries textEntries = TextEntries(this);
late final Trigger todosInsert = Trigger(
'CREATE TRIGGER todos_insert AFTER INSERT ON todo_entries BEGIN INSERT INTO text_entries ("rowid", description) VALUES (new.id, new.description);END',
'todos_insert');
late final Trigger todosDelete = Trigger(
'CREATE TRIGGER todos_delete AFTER DELETE ON todo_entries BEGIN INSERT INTO text_entries (text_entries, "rowid", description) VALUES (\'delete\', old.id, old.description);END',
'todos_delete');
late final Trigger todosUpdate = Trigger(
'CREATE TRIGGER todos_update AFTER UPDATE ON todo_entries BEGIN INSERT INTO text_entries (text_entries, "rowid", description) VALUES (\'delete\', new.id, new.description);INSERT INTO text_entries ("rowid", description) VALUES (new.id, new.description);END',
'todos_update');
Selectable<CategoriesWithCountResult> _categoriesWithCount() {
return customSelect(
'SELECT c.*, (SELECT COUNT(*) FROM todo_entries WHERE category = c.id) AS amount FROM categories AS c UNION ALL SELECT NULL, NULL, NULL, (SELECT COUNT(*) FROM todo_entries WHERE category IS NULL)',
variables: [],
readsFrom: {
todoEntries,
categories,
}).map((QueryRow row) {
return CategoriesWithCountResult(
id: row.readNullable<int>('id'),
name: row.readNullable<String>('name'),
color: NullAwareTypeConverter.wrapFromSql(
$CategoriesTable.$converter0, row.readNullable<int>('color')),
amount: row.read<int>('amount'),
);
});
}
Selectable<SearchResult> _search(String query) {
return customSelect(
'SELECT"todos"."id" AS "nested_0.id", "todos"."description" AS "nested_0.description", "todos"."category" AS "nested_0.category", "todos"."due_date" AS "nested_0.due_date","cat"."id" AS "nested_1.id", "cat"."name" AS "nested_1.name", "cat"."color" AS "nested_1.color" FROM text_entries INNER JOIN todo_entries AS todos ON todos.id = text_entries."rowid" LEFT OUTER JOIN categories AS cat ON cat.id = todos.category WHERE text_entries MATCH ?1 ORDER BY rank',
variables: [
Variable<String>(query)
],
readsFrom: {
textEntries,
todoEntries,
categories,
}).asyncMap((QueryRow row) async {
return SearchResult(
todos: await todoEntries.mapFromRow(row, tablePrefix: 'nested_0'),
cat: await categories.mapFromRowOrNull(row, tablePrefix: 'nested_1'),
);
});
}
@override
Iterable<TableInfo<Table, dynamic>> get allTables =>
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
@override
List<DatabaseSchemaEntity> get allSchemaEntities => [
categories,
todoEntries,
textEntries,
todosInsert,
todosDelete,
todosUpdate
];
@override
StreamQueryUpdateRules get streamUpdateRules => const StreamQueryUpdateRules(
[
WritePropagation(
on: TableUpdateQuery.onTableName('todo_entries',
limitUpdateKind: UpdateKind.insert),
result: [
TableUpdate('text_entries', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('todo_entries',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('text_entries', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('todo_entries',
limitUpdateKind: UpdateKind.update),
result: [
TableUpdate('text_entries', kind: UpdateKind.insert),
],
),
],
);
}
class CategoriesWithCountResult {
final int? id;
final String? name;
final Color? color;
final int amount;
CategoriesWithCountResult({
this.id,
this.name,
this.color,
required this.amount,
});
}
class SearchResult {
final TodoEntry todos;
final Category? cat;
SearchResult({
required this.todos,
this.cat,
});
}