Only one table for formula elements

This commit is contained in:
Your Name 2026-02-09 19:11:00 +01:00
parent 8df50f5e79
commit 2493c5b4be
5 changed files with 340 additions and 260 deletions

View file

@ -9,7 +9,8 @@
- [X] Create function `List<Object> parseCorpusElements(String arrayStringLiteral)`. It uses parseD4rtLiteral and determines if each element of the array is a formula or a unit. Then converts the objects with Formula.fromSet or UnitSpec.fromSet.
- [X] Create method loadFormulaElements( List<Object> elements). Tipically receives the list from parseCorpusElements(). It loads the units first, then the formulas, to avoid missing dependencies.
- [X] Change createDefaultCorpus to use loadFormulaElements instead of loadUnits and loadFormula. Make loadUnits and loadFormula private.
- [ ] Use a single table in database `FORMULAELEMENT` to store formulas and units. The table contains only two columns: autonumeric id and text.
- [X] Use a single table in database `FORMULAELEMENT` to store formulas and units. The table contains only two columns: autonumeric id and text.
- Drift files have a lot of duplicate code. "web" version is the same as native version, only _openConnection is diferrent. Refactor to not duplicate code.
- [ ] Create Formula.toStringLiteral. It is the reverse of Formula.fromSet( Formula.fromArrayStringLiteral(string)[0] )
- [ ] Create UnitSpec.toStringLiteral, like Formula.toStringLiteral
- Database file location:

View file

@ -6,43 +6,43 @@ import 'dart:io';
part 'formulas_database.g.dart';
// Define the formulas table with a single text column for formula descriptions
class Formulas extends Table {
// Define the FORMULAELEMENT table to store both formulas and units as text
class FormulaElements extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get formula => text()();
TextColumn get elementText => text()();
}
@DriftDatabase(tables: [Formulas])
@DriftDatabase(tables: [FormulaElements])
class FormulasDatabase extends _$FormulasDatabase {
FormulasDatabase() : super(_openConnection());
@override
int get schemaVersion => 1;
// Method to insert a new formula
Future<int> insertFormula(String formulaText) {
return into(formulas).insert(FormulasCompanion.insert(formula: formulaText));
// Method to insert a new formula element (either formula or unit)
Future<int> insertFormulaElement(String elementText) {
return into(formulaElements).insert(FormulaElementsCompanion.insert(elementText: elementText));
}
// Method to get all formulas
Future<List<Formula>> getAllFormulas() {
return select(formulas).get();
// Method to get all formula elements
Future<List<FormulaElement>> getAllFormulaElements() {
return select(formulaElements).get();
}
// Method to get a formula by ID
Future<Formula?> getFormulaById(int id) {
return (select(formulas)..where((tbl) => tbl.id.equals(id))).getSingleOrNull();
// Method to get a formula element by ID
Future<FormulaElement?> getFormulaElementById(int id) {
return (select(formulaElements)..where((tbl) => tbl.id.equals(id))).getSingleOrNull();
}
// Method to update a formula
Future<void> updateFormula(int id, String newFormula) {
return (update(formulas)..where((tbl) => tbl.id.equals(id)))
.write(FormulasCompanion.insert(formula: newFormula));
// Method to update a formula element
Future<void> updateFormulaElement(int id, String newElementText) {
return (update(formulaElements)..where((tbl) => tbl.id.equals(id)))
.write(FormulaElementsCompanion.insert(elementText: newElementText));
}
// Method to delete a formula
Future<void> deleteFormula(int id) {
return (delete(formulas)..where((tbl) => tbl.id.equals(id))).go();
// Method to delete a formula element
Future<void> deleteFormulaElement(int id) {
return (delete(formulaElements)..where((tbl) => tbl.id.equals(id))).go();
}
}

View file

@ -3,11 +3,12 @@
part of 'formulas_database.dart';
// ignore_for_file: type=lint
class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
class $FormulaElementsTable extends FormulaElements
with TableInfo<$FormulaElementsTable, FormulaElement> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
$FormulasTable(this.attachedDatabase, [this._alias]);
$FormulaElementsTable(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
@override
late final GeneratedColumn<int> id = GeneratedColumn<int>(
@ -21,27 +22,27 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
'PRIMARY KEY AUTOINCREMENT',
),
);
static const VerificationMeta _formulaMeta = const VerificationMeta(
'formula',
static const VerificationMeta _elementTextMeta = const VerificationMeta(
'elementText',
);
@override
late final GeneratedColumn<String> formula = GeneratedColumn<String>(
'formula',
late final GeneratedColumn<String> elementText = GeneratedColumn<String>(
'element_text',
aliasedName,
false,
type: DriftSqlType.string,
requiredDuringInsert: true,
);
@override
List<GeneratedColumn> get $columns => [id, formula];
List<GeneratedColumn> get $columns => [id, elementText];
@override
String get aliasedName => _alias ?? actualTableName;
@override
String get actualTableName => $name;
static const String $name = 'formulas';
static const String $name = 'formula_elements';
@override
VerificationContext validateIntegrity(
Insertable<Formula> instance, {
Insertable<FormulaElement> instance, {
bool isInserting = false,
}) {
final context = VerificationContext();
@ -49,13 +50,16 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('formula')) {
if (data.containsKey('element_text')) {
context.handle(
_formulaMeta,
formula.isAcceptableOrUnknown(data['formula']!, _formulaMeta),
_elementTextMeta,
elementText.isAcceptableOrUnknown(
data['element_text']!,
_elementTextMeta,
),
);
} else if (isInserting) {
context.missing(_formulaMeta);
context.missing(_elementTextMeta);
}
return context;
}
@ -63,50 +67,53 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
Formula map(Map<String, dynamic> data, {String? tablePrefix}) {
FormulaElement map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Formula(
return FormulaElement(
id: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}id'],
)!,
formula: attachedDatabase.typeMapping.read(
elementText: attachedDatabase.typeMapping.read(
DriftSqlType.string,
data['${effectivePrefix}formula'],
data['${effectivePrefix}element_text'],
)!,
);
}
@override
$FormulasTable createAlias(String alias) {
return $FormulasTable(attachedDatabase, alias);
$FormulaElementsTable createAlias(String alias) {
return $FormulaElementsTable(attachedDatabase, alias);
}
}
class Formula extends DataClass implements Insertable<Formula> {
class FormulaElement extends DataClass implements Insertable<FormulaElement> {
final int id;
final String formula;
const Formula({required this.id, required this.formula});
final String elementText;
const FormulaElement({required this.id, required this.elementText});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['formula'] = Variable<String>(formula);
map['element_text'] = Variable<String>(elementText);
return map;
}
FormulasCompanion toCompanion(bool nullToAbsent) {
return FormulasCompanion(id: Value(id), formula: Value(formula));
FormulaElementsCompanion toCompanion(bool nullToAbsent) {
return FormulaElementsCompanion(
id: Value(id),
elementText: Value(elementText),
);
}
factory Formula.fromJson(
factory FormulaElement.fromJson(
Map<String, dynamic> json, {
ValueSerializer? serializer,
}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return Formula(
return FormulaElement(
id: serializer.fromJson<int>(json['id']),
formula: serializer.fromJson<String>(json['formula']),
elementText: serializer.fromJson<String>(json['elementText']),
);
}
@override
@ -114,63 +121,70 @@ class Formula extends DataClass implements Insertable<Formula> {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'formula': serializer.toJson<String>(formula),
'elementText': serializer.toJson<String>(elementText),
};
}
Formula copyWith({int? id, String? formula}) =>
Formula(id: id ?? this.id, formula: formula ?? this.formula);
Formula copyWithCompanion(FormulasCompanion data) {
return Formula(
FormulaElement copyWith({int? id, String? elementText}) => FormulaElement(
id: id ?? this.id,
elementText: elementText ?? this.elementText,
);
FormulaElement copyWithCompanion(FormulaElementsCompanion data) {
return FormulaElement(
id: data.id.present ? data.id.value : this.id,
formula: data.formula.present ? data.formula.value : this.formula,
elementText: data.elementText.present
? data.elementText.value
: this.elementText,
);
}
@override
String toString() {
return (StringBuffer('Formula(')
return (StringBuffer('FormulaElement(')
..write('id: $id, ')
..write('formula: $formula')
..write('elementText: $elementText')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, formula);
int get hashCode => Object.hash(id, elementText);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is Formula &&
(other is FormulaElement &&
other.id == this.id &&
other.formula == this.formula);
other.elementText == this.elementText);
}
class FormulasCompanion extends UpdateCompanion<Formula> {
class FormulaElementsCompanion extends UpdateCompanion<FormulaElement> {
final Value<int> id;
final Value<String> formula;
const FormulasCompanion({
final Value<String> elementText;
const FormulaElementsCompanion({
this.id = const Value.absent(),
this.formula = const Value.absent(),
this.elementText = const Value.absent(),
});
FormulasCompanion.insert({
FormulaElementsCompanion.insert({
this.id = const Value.absent(),
required String formula,
}) : formula = Value(formula);
static Insertable<Formula> custom({
required String elementText,
}) : elementText = Value(elementText);
static Insertable<FormulaElement> custom({
Expression<int>? id,
Expression<String>? formula,
Expression<String>? elementText,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (formula != null) 'formula': formula,
if (elementText != null) 'element_text': elementText,
});
}
FormulasCompanion copyWith({Value<int>? id, Value<String>? formula}) {
return FormulasCompanion(
FormulaElementsCompanion copyWith({
Value<int>? id,
Value<String>? elementText,
}) {
return FormulaElementsCompanion(
id: id ?? this.id,
formula: formula ?? this.formula,
elementText: elementText ?? this.elementText,
);
}
@ -180,17 +194,17 @@ class FormulasCompanion extends UpdateCompanion<Formula> {
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (formula.present) {
map['formula'] = Variable<String>(formula.value);
if (elementText.present) {
map['element_text'] = Variable<String>(elementText.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('FormulasCompanion(')
return (StringBuffer('FormulaElementsCompanion(')
..write('id: $id, ')
..write('formula: $formula')
..write('elementText: $elementText')
..write(')'))
.toString();
}
@ -199,22 +213,30 @@ class FormulasCompanion extends UpdateCompanion<Formula> {
abstract class _$FormulasDatabase extends GeneratedDatabase {
_$FormulasDatabase(QueryExecutor e) : super(e);
$FormulasDatabaseManager get managers => $FormulasDatabaseManager(this);
late final $FormulasTable formulas = $FormulasTable(this);
late final $FormulaElementsTable formulaElements = $FormulaElementsTable(
this,
);
@override
Iterable<TableInfo<Table, Object?>> get allTables =>
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
@override
List<DatabaseSchemaEntity> get allSchemaEntities => [formulas];
List<DatabaseSchemaEntity> get allSchemaEntities => [formulaElements];
}
typedef $$FormulasTableCreateCompanionBuilder =
FormulasCompanion Function({Value<int> id, required String formula});
typedef $$FormulasTableUpdateCompanionBuilder =
FormulasCompanion Function({Value<int> id, Value<String> formula});
typedef $$FormulaElementsTableCreateCompanionBuilder =
FormulaElementsCompanion Function({
Value<int> id,
required String elementText,
});
typedef $$FormulaElementsTableUpdateCompanionBuilder =
FormulaElementsCompanion Function({
Value<int> id,
Value<String> elementText,
});
class $$FormulasTableFilterComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableFilterComposer({
class $$FormulaElementsTableFilterComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableFilterComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -226,15 +248,15 @@ class $$FormulasTableFilterComposer
builder: (column) => ColumnFilters(column),
);
ColumnFilters<String> get formula => $composableBuilder(
column: $table.formula,
ColumnFilters<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => ColumnFilters(column),
);
}
class $$FormulasTableOrderingComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableOrderingComposer({
class $$FormulaElementsTableOrderingComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableOrderingComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -246,15 +268,15 @@ class $$FormulasTableOrderingComposer
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<String> get formula => $composableBuilder(
column: $table.formula,
ColumnOrderings<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => ColumnOrderings(column),
);
}
class $$FormulasTableAnnotationComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableAnnotationComposer({
class $$FormulaElementsTableAnnotationComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableAnnotationComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -264,49 +286,60 @@ class $$FormulasTableAnnotationComposer
GeneratedColumn<int> get id =>
$composableBuilder(column: $table.id, builder: (column) => column);
GeneratedColumn<String> get formula =>
$composableBuilder(column: $table.formula, builder: (column) => column);
GeneratedColumn<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => column,
);
}
class $$FormulasTableTableManager
class $$FormulaElementsTableTableManager
extends
RootTableManager<
_$FormulasDatabase,
$FormulasTable,
Formula,
$$FormulasTableFilterComposer,
$$FormulasTableOrderingComposer,
$$FormulasTableAnnotationComposer,
$$FormulasTableCreateCompanionBuilder,
$$FormulasTableUpdateCompanionBuilder,
$FormulaElementsTable,
FormulaElement,
$$FormulaElementsTableFilterComposer,
$$FormulaElementsTableOrderingComposer,
$$FormulaElementsTableAnnotationComposer,
$$FormulaElementsTableCreateCompanionBuilder,
$$FormulaElementsTableUpdateCompanionBuilder,
(
Formula,
BaseReferences<_$FormulasDatabase, $FormulasTable, Formula>,
FormulaElement,
BaseReferences<
_$FormulasDatabase,
$FormulaElementsTable,
FormulaElement
>,
),
Formula,
FormulaElement,
PrefetchHooks Function()
> {
$$FormulasTableTableManager(_$FormulasDatabase db, $FormulasTable table)
: super(
$$FormulaElementsTableTableManager(
_$FormulasDatabase db,
$FormulaElementsTable table,
) : super(
TableManagerState(
db: db,
table: table,
createFilteringComposer: () =>
$$FormulasTableFilterComposer($db: db, $table: table),
$$FormulaElementsTableFilterComposer($db: db, $table: table),
createOrderingComposer: () =>
$$FormulasTableOrderingComposer($db: db, $table: table),
$$FormulaElementsTableOrderingComposer($db: db, $table: table),
createComputedFieldComposer: () =>
$$FormulasTableAnnotationComposer($db: db, $table: table),
$$FormulaElementsTableAnnotationComposer($db: db, $table: table),
updateCompanionCallback:
({
Value<int> id = const Value.absent(),
Value<String> formula = const Value.absent(),
}) => FormulasCompanion(id: id, formula: formula),
Value<String> elementText = const Value.absent(),
}) => FormulaElementsCompanion(id: id, elementText: elementText),
createCompanionCallback:
({
Value<int> id = const Value.absent(),
required String formula,
}) => FormulasCompanion.insert(id: id, formula: formula),
required String elementText,
}) => FormulaElementsCompanion.insert(
id: id,
elementText: elementText,
),
withReferenceMapper: (p0) => p0
.map((e) => (e.readTable(table), BaseReferences(db, table, e)))
.toList(),
@ -315,24 +348,31 @@ class $$FormulasTableTableManager
);
}
typedef $$FormulasTableProcessedTableManager =
typedef $$FormulaElementsTableProcessedTableManager =
ProcessedTableManager<
_$FormulasDatabase,
$FormulasTable,
Formula,
$$FormulasTableFilterComposer,
$$FormulasTableOrderingComposer,
$$FormulasTableAnnotationComposer,
$$FormulasTableCreateCompanionBuilder,
$$FormulasTableUpdateCompanionBuilder,
(Formula, BaseReferences<_$FormulasDatabase, $FormulasTable, Formula>),
Formula,
$FormulaElementsTable,
FormulaElement,
$$FormulaElementsTableFilterComposer,
$$FormulaElementsTableOrderingComposer,
$$FormulaElementsTableAnnotationComposer,
$$FormulaElementsTableCreateCompanionBuilder,
$$FormulaElementsTableUpdateCompanionBuilder,
(
FormulaElement,
BaseReferences<
_$FormulasDatabase,
$FormulaElementsTable,
FormulaElement
>,
),
FormulaElement,
PrefetchHooks Function()
>;
class $FormulasDatabaseManager {
final _$FormulasDatabase _db;
$FormulasDatabaseManager(this._db);
$$FormulasTableTableManager get formulas =>
$$FormulasTableTableManager(_db, _db.formulas);
$$FormulaElementsTableTableManager get formulaElements =>
$$FormulaElementsTableTableManager(_db, _db.formulaElements);
}

View file

@ -1,46 +1,45 @@
import 'package:drift/drift.dart';
import 'package:drift/web.dart';
import 'package:path_provider/path_provider.dart';
part 'formulas_database_web.g.dart';
// Define the formulas table with a single text column for formula descriptions
class Formulas extends Table {
// Define the FORMULAELEMENT table to store both formulas and units as text
class FormulaElements extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get formula => text()();
TextColumn get elementText => text()();
}
@DriftDatabase(tables: [Formulas])
@DriftDatabase(tables: [FormulaElements])
class FormulasDatabase extends _$FormulasDatabase {
FormulasDatabase() : super(_openConnection());
@override
int get schemaVersion => 1;
// Method to insert a new formula
Future<int> insertFormula(String formulaText) {
return into(formulas).insert(FormulasCompanion.insert(formula: formulaText));
// Method to insert a new formula element (either formula or unit)
Future<int> insertFormulaElement(String elementText) {
return into(formulaElements).insert(FormulaElementsCompanion.insert(elementText: elementText));
}
// Method to get all formulas
Future<List<Formula>> getAllFormulas() {
return select(formulas).get();
// Method to get all formula elements
Future<List<FormulaElement>> getAllFormulaElements() {
return select(formulaElements).get();
}
// Method to get a formula by ID
Future<Formula?> getFormulaById(int id) {
return (select(formulas)..where((tbl) => tbl.id.equals(id))).getSingleOrNull();
// Method to get a formula element by ID
Future<FormulaElement?> getFormulaElementById(int id) {
return (select(formulaElements)..where((tbl) => tbl.id.equals(id))).getSingleOrNull();
}
// Method to update a formula
Future<void> updateFormula(int id, String newFormula) {
return (update(formulas)..where((tbl) => tbl.id.equals(id)))
.write(FormulasCompanion.insert(formula: newFormula));
// Method to update a formula element
Future<void> updateFormulaElement(int id, String newElementText) {
return (update(formulaElements)..where((tbl) => tbl.id.equals(id)))
.write(FormulaElementsCompanion.insert(elementText: newElementText));
}
// Method to delete a formula
Future<void> deleteFormula(int id) {
return (delete(formulas)..where((tbl) => tbl.id.equals(id))).go();
// Method to delete a formula element
Future<void> deleteFormulaElement(int id) {
return (delete(formulaElements)..where((tbl) => tbl.id.equals(id))).go();
}
}

View file

@ -3,11 +3,12 @@
part of 'formulas_database_web.dart';
// ignore_for_file: type=lint
class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
class $FormulaElementsTable extends FormulaElements
with TableInfo<$FormulaElementsTable, FormulaElement> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
$FormulasTable(this.attachedDatabase, [this._alias]);
$FormulaElementsTable(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
@override
late final GeneratedColumn<int> id = GeneratedColumn<int>(
@ -21,27 +22,27 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
'PRIMARY KEY AUTOINCREMENT',
),
);
static const VerificationMeta _formulaMeta = const VerificationMeta(
'formula',
static const VerificationMeta _elementTextMeta = const VerificationMeta(
'elementText',
);
@override
late final GeneratedColumn<String> formula = GeneratedColumn<String>(
'formula',
late final GeneratedColumn<String> elementText = GeneratedColumn<String>(
'element_text',
aliasedName,
false,
type: DriftSqlType.string,
requiredDuringInsert: true,
);
@override
List<GeneratedColumn> get $columns => [id, formula];
List<GeneratedColumn> get $columns => [id, elementText];
@override
String get aliasedName => _alias ?? actualTableName;
@override
String get actualTableName => $name;
static const String $name = 'formulas';
static const String $name = 'formula_elements';
@override
VerificationContext validateIntegrity(
Insertable<Formula> instance, {
Insertable<FormulaElement> instance, {
bool isInserting = false,
}) {
final context = VerificationContext();
@ -49,13 +50,16 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('formula')) {
if (data.containsKey('element_text')) {
context.handle(
_formulaMeta,
formula.isAcceptableOrUnknown(data['formula']!, _formulaMeta),
_elementTextMeta,
elementText.isAcceptableOrUnknown(
data['element_text']!,
_elementTextMeta,
),
);
} else if (isInserting) {
context.missing(_formulaMeta);
context.missing(_elementTextMeta);
}
return context;
}
@ -63,50 +67,53 @@ class $FormulasTable extends Formulas with TableInfo<$FormulasTable, Formula> {
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
Formula map(Map<String, dynamic> data, {String? tablePrefix}) {
FormulaElement map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Formula(
return FormulaElement(
id: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}id'],
)!,
formula: attachedDatabase.typeMapping.read(
elementText: attachedDatabase.typeMapping.read(
DriftSqlType.string,
data['${effectivePrefix}formula'],
data['${effectivePrefix}element_text'],
)!,
);
}
@override
$FormulasTable createAlias(String alias) {
return $FormulasTable(attachedDatabase, alias);
$FormulaElementsTable createAlias(String alias) {
return $FormulaElementsTable(attachedDatabase, alias);
}
}
class Formula extends DataClass implements Insertable<Formula> {
class FormulaElement extends DataClass implements Insertable<FormulaElement> {
final int id;
final String formula;
const Formula({required this.id, required this.formula});
final String elementText;
const FormulaElement({required this.id, required this.elementText});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['formula'] = Variable<String>(formula);
map['element_text'] = Variable<String>(elementText);
return map;
}
FormulasCompanion toCompanion(bool nullToAbsent) {
return FormulasCompanion(id: Value(id), formula: Value(formula));
FormulaElementsCompanion toCompanion(bool nullToAbsent) {
return FormulaElementsCompanion(
id: Value(id),
elementText: Value(elementText),
);
}
factory Formula.fromJson(
factory FormulaElement.fromJson(
Map<String, dynamic> json, {
ValueSerializer? serializer,
}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return Formula(
return FormulaElement(
id: serializer.fromJson<int>(json['id']),
formula: serializer.fromJson<String>(json['formula']),
elementText: serializer.fromJson<String>(json['elementText']),
);
}
@override
@ -114,63 +121,70 @@ class Formula extends DataClass implements Insertable<Formula> {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'formula': serializer.toJson<String>(formula),
'elementText': serializer.toJson<String>(elementText),
};
}
Formula copyWith({int? id, String? formula}) =>
Formula(id: id ?? this.id, formula: formula ?? this.formula);
Formula copyWithCompanion(FormulasCompanion data) {
return Formula(
FormulaElement copyWith({int? id, String? elementText}) => FormulaElement(
id: id ?? this.id,
elementText: elementText ?? this.elementText,
);
FormulaElement copyWithCompanion(FormulaElementsCompanion data) {
return FormulaElement(
id: data.id.present ? data.id.value : this.id,
formula: data.formula.present ? data.formula.value : this.formula,
elementText: data.elementText.present
? data.elementText.value
: this.elementText,
);
}
@override
String toString() {
return (StringBuffer('Formula(')
return (StringBuffer('FormulaElement(')
..write('id: $id, ')
..write('formula: $formula')
..write('elementText: $elementText')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, formula);
int get hashCode => Object.hash(id, elementText);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is Formula &&
(other is FormulaElement &&
other.id == this.id &&
other.formula == this.formula);
other.elementText == this.elementText);
}
class FormulasCompanion extends UpdateCompanion<Formula> {
class FormulaElementsCompanion extends UpdateCompanion<FormulaElement> {
final Value<int> id;
final Value<String> formula;
const FormulasCompanion({
final Value<String> elementText;
const FormulaElementsCompanion({
this.id = const Value.absent(),
this.formula = const Value.absent(),
this.elementText = const Value.absent(),
});
FormulasCompanion.insert({
FormulaElementsCompanion.insert({
this.id = const Value.absent(),
required String formula,
}) : formula = Value(formula);
static Insertable<Formula> custom({
required String elementText,
}) : elementText = Value(elementText);
static Insertable<FormulaElement> custom({
Expression<int>? id,
Expression<String>? formula,
Expression<String>? elementText,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (formula != null) 'formula': formula,
if (elementText != null) 'element_text': elementText,
});
}
FormulasCompanion copyWith({Value<int>? id, Value<String>? formula}) {
return FormulasCompanion(
FormulaElementsCompanion copyWith({
Value<int>? id,
Value<String>? elementText,
}) {
return FormulaElementsCompanion(
id: id ?? this.id,
formula: formula ?? this.formula,
elementText: elementText ?? this.elementText,
);
}
@ -180,17 +194,17 @@ class FormulasCompanion extends UpdateCompanion<Formula> {
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (formula.present) {
map['formula'] = Variable<String>(formula.value);
if (elementText.present) {
map['element_text'] = Variable<String>(elementText.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('FormulasCompanion(')
return (StringBuffer('FormulaElementsCompanion(')
..write('id: $id, ')
..write('formula: $formula')
..write('elementText: $elementText')
..write(')'))
.toString();
}
@ -199,22 +213,30 @@ class FormulasCompanion extends UpdateCompanion<Formula> {
abstract class _$FormulasDatabase extends GeneratedDatabase {
_$FormulasDatabase(QueryExecutor e) : super(e);
$FormulasDatabaseManager get managers => $FormulasDatabaseManager(this);
late final $FormulasTable formulas = $FormulasTable(this);
late final $FormulaElementsTable formulaElements = $FormulaElementsTable(
this,
);
@override
Iterable<TableInfo<Table, Object?>> get allTables =>
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
@override
List<DatabaseSchemaEntity> get allSchemaEntities => [formulas];
List<DatabaseSchemaEntity> get allSchemaEntities => [formulaElements];
}
typedef $$FormulasTableCreateCompanionBuilder =
FormulasCompanion Function({Value<int> id, required String formula});
typedef $$FormulasTableUpdateCompanionBuilder =
FormulasCompanion Function({Value<int> id, Value<String> formula});
typedef $$FormulaElementsTableCreateCompanionBuilder =
FormulaElementsCompanion Function({
Value<int> id,
required String elementText,
});
typedef $$FormulaElementsTableUpdateCompanionBuilder =
FormulaElementsCompanion Function({
Value<int> id,
Value<String> elementText,
});
class $$FormulasTableFilterComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableFilterComposer({
class $$FormulaElementsTableFilterComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableFilterComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -226,15 +248,15 @@ class $$FormulasTableFilterComposer
builder: (column) => ColumnFilters(column),
);
ColumnFilters<String> get formula => $composableBuilder(
column: $table.formula,
ColumnFilters<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => ColumnFilters(column),
);
}
class $$FormulasTableOrderingComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableOrderingComposer({
class $$FormulaElementsTableOrderingComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableOrderingComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -246,15 +268,15 @@ class $$FormulasTableOrderingComposer
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<String> get formula => $composableBuilder(
column: $table.formula,
ColumnOrderings<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => ColumnOrderings(column),
);
}
class $$FormulasTableAnnotationComposer
extends Composer<_$FormulasDatabase, $FormulasTable> {
$$FormulasTableAnnotationComposer({
class $$FormulaElementsTableAnnotationComposer
extends Composer<_$FormulasDatabase, $FormulaElementsTable> {
$$FormulaElementsTableAnnotationComposer({
required super.$db,
required super.$table,
super.joinBuilder,
@ -264,49 +286,60 @@ class $$FormulasTableAnnotationComposer
GeneratedColumn<int> get id =>
$composableBuilder(column: $table.id, builder: (column) => column);
GeneratedColumn<String> get formula =>
$composableBuilder(column: $table.formula, builder: (column) => column);
GeneratedColumn<String> get elementText => $composableBuilder(
column: $table.elementText,
builder: (column) => column,
);
}
class $$FormulasTableTableManager
class $$FormulaElementsTableTableManager
extends
RootTableManager<
_$FormulasDatabase,
$FormulasTable,
Formula,
$$FormulasTableFilterComposer,
$$FormulasTableOrderingComposer,
$$FormulasTableAnnotationComposer,
$$FormulasTableCreateCompanionBuilder,
$$FormulasTableUpdateCompanionBuilder,
$FormulaElementsTable,
FormulaElement,
$$FormulaElementsTableFilterComposer,
$$FormulaElementsTableOrderingComposer,
$$FormulaElementsTableAnnotationComposer,
$$FormulaElementsTableCreateCompanionBuilder,
$$FormulaElementsTableUpdateCompanionBuilder,
(
Formula,
BaseReferences<_$FormulasDatabase, $FormulasTable, Formula>,
FormulaElement,
BaseReferences<
_$FormulasDatabase,
$FormulaElementsTable,
FormulaElement
>,
),
Formula,
FormulaElement,
PrefetchHooks Function()
> {
$$FormulasTableTableManager(_$FormulasDatabase db, $FormulasTable table)
: super(
$$FormulaElementsTableTableManager(
_$FormulasDatabase db,
$FormulaElementsTable table,
) : super(
TableManagerState(
db: db,
table: table,
createFilteringComposer: () =>
$$FormulasTableFilterComposer($db: db, $table: table),
$$FormulaElementsTableFilterComposer($db: db, $table: table),
createOrderingComposer: () =>
$$FormulasTableOrderingComposer($db: db, $table: table),
$$FormulaElementsTableOrderingComposer($db: db, $table: table),
createComputedFieldComposer: () =>
$$FormulasTableAnnotationComposer($db: db, $table: table),
$$FormulaElementsTableAnnotationComposer($db: db, $table: table),
updateCompanionCallback:
({
Value<int> id = const Value.absent(),
Value<String> formula = const Value.absent(),
}) => FormulasCompanion(id: id, formula: formula),
Value<String> elementText = const Value.absent(),
}) => FormulaElementsCompanion(id: id, elementText: elementText),
createCompanionCallback:
({
Value<int> id = const Value.absent(),
required String formula,
}) => FormulasCompanion.insert(id: id, formula: formula),
required String elementText,
}) => FormulaElementsCompanion.insert(
id: id,
elementText: elementText,
),
withReferenceMapper: (p0) => p0
.map((e) => (e.readTable(table), BaseReferences(db, table, e)))
.toList(),
@ -315,24 +348,31 @@ class $$FormulasTableTableManager
);
}
typedef $$FormulasTableProcessedTableManager =
typedef $$FormulaElementsTableProcessedTableManager =
ProcessedTableManager<
_$FormulasDatabase,
$FormulasTable,
Formula,
$$FormulasTableFilterComposer,
$$FormulasTableOrderingComposer,
$$FormulasTableAnnotationComposer,
$$FormulasTableCreateCompanionBuilder,
$$FormulasTableUpdateCompanionBuilder,
(Formula, BaseReferences<_$FormulasDatabase, $FormulasTable, Formula>),
Formula,
$FormulaElementsTable,
FormulaElement,
$$FormulaElementsTableFilterComposer,
$$FormulaElementsTableOrderingComposer,
$$FormulaElementsTableAnnotationComposer,
$$FormulaElementsTableCreateCompanionBuilder,
$$FormulaElementsTableUpdateCompanionBuilder,
(
FormulaElement,
BaseReferences<
_$FormulasDatabase,
$FormulaElementsTable,
FormulaElement
>,
),
FormulaElement,
PrefetchHooks Function()
>;
class $FormulasDatabaseManager {
final _$FormulasDatabase _db;
$FormulasDatabaseManager(this._db);
$$FormulasTableTableManager get formulas =>
$$FormulasTableTableManager(_db, _db.formulas);
$$FormulaElementsTableTableManager get formulaElements =>
$$FormulaElementsTableTableManager(_db, _db.formulaElements);
}