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 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] 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. - [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 Formula.toStringLiteral. It is the reverse of Formula.fromSet( Formula.fromArrayStringLiteral(string)[0] )
- [ ] Create UnitSpec.toStringLiteral, like Formula.toStringLiteral - [ ] Create UnitSpec.toStringLiteral, like Formula.toStringLiteral
- Database file location: - Database file location:

View file

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

View file

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

View file

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

View file

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