d4t_formulas/lib/database/formulas_database.dart

58 lines
1.8 KiB
Dart
Raw Permalink Normal View History

2026-02-07 16:01:37 +00:00
import 'package:drift/drift.dart';
import 'formulas_database_unsupported.dart'
if (dart.library.html) 'formulas_database_web.dart'
if (dart.library.ffi) 'formulas_database_native.dart';
2026-02-07 16:01:37 +00:00
part 'formulas_database.g.dart';
2026-04-05 15:45:01 +00:00
2026-02-09 18:11:00 +00:00
class FormulaElements extends Table {
2026-04-05 15:45:01 +00:00
TextColumn get uuid => text()();
2026-02-09 18:11:00 +00:00
TextColumn get elementText => text()();
2026-04-05 15:45:01 +00:00
@override
Set<Column> get primaryKey => {uuid};
2026-02-07 16:01:37 +00:00
}
2026-02-09 18:11:00 +00:00
@DriftDatabase(tables: [FormulaElements])
2026-02-07 16:01:37 +00:00
class FormulasDatabase extends _$FormulasDatabase {
FormulasDatabase() : super(openConnection());
2026-02-07 16:01:37 +00:00
@override
int get schemaVersion => 1;
2026-02-09 18:11:00 +00:00
// Method to insert a new formula element (either formula or unit)
2026-04-05 15:45:01 +00:00
Future<void> insertFormulaElement(String uuid, String elementText) {
return into(formulaElements).insert(
FormulaElementsCompanion.insert(uuid: uuid, elementText: elementText),
);
2026-02-07 16:01:37 +00:00
}
2026-02-09 18:11:00 +00:00
// Method to get all formula elements
Future<List<FormulaElement>> getAllFormulaElements() {
return select(formulaElements).get();
2026-02-07 16:01:37 +00:00
}
2026-04-05 15:45:01 +00:00
// Method to get a formula element by UUID
Future<FormulaElement?> getFormulaElementByUuid(String uuid) {
return (select(formulaElements)..where((tbl) => tbl.uuid.equals(uuid))).getSingleOrNull();
2026-02-07 16:01:37 +00:00
}
2026-02-09 18:11:00 +00:00
// Method to update a formula element
2026-04-05 15:45:01 +00:00
Future<void> updateFormulaElement(String uuid, String newElementText) {
return (update(formulaElements)..where((tbl) => tbl.uuid.equals(uuid)))
.write(FormulaElementsCompanion(elementText: Value(newElementText)));
2026-02-07 16:01:37 +00:00
}
2026-02-09 18:11:00 +00:00
// Method to delete a formula element
2026-04-05 15:45:01 +00:00
Future<void> deleteFormulaElement(String uuid) {
return (delete(formulaElements)..where((tbl) => tbl.uuid.equals(uuid))).go();
2026-02-07 16:01:37 +00:00
}
// Additional helper methods for direct access to the table
SimpleSelectStatement get allFormulaElements => select(formulaElements);
2026-02-07 16:01:37 +00:00
}