2019-12-03 12:42:43 +01:00
|
|
|
import 'dart:math';
|
|
|
|
|
|
2019-12-03 12:03:39 +01:00
|
|
|
import 'package:moor_flutter/moor_flutter.dart';
|
|
|
|
|
|
|
|
|
|
part 'database.g.dart';
|
|
|
|
|
|
2019-12-03 12:42:43 +01:00
|
|
|
final _random = Random(DateTime.now().millisecondsSinceEpoch);
|
|
|
|
|
int generateId() => _random.nextInt(0xFFFFFFFF);
|
|
|
|
|
|
2019-12-03 12:03:39 +01:00
|
|
|
@UseMoor(
|
|
|
|
|
include: {
|
|
|
|
|
'database.moor',
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
class Database extends _$Database {
|
|
|
|
|
Database(String fileName)
|
|
|
|
|
: super(FlutterQueryExecutor.inDatabaseFolder(path: fileName));
|
|
|
|
|
|
|
|
|
|
@override
|
2019-12-04 20:48:03 +01:00
|
|
|
int get schemaVersion => 1;
|
2019-12-03 12:03:39 +01:00
|
|
|
|
|
|
|
|
Future<void> updatePerson(Person person) async {
|
|
|
|
|
await into(persons).insert(person);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> updateInstrument(Instrument instrument) async {
|
|
|
|
|
await into(instruments).insert(instrument);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> updateWork(Work work, List<int> instrumentIds) async {
|
|
|
|
|
await transaction(() async {
|
|
|
|
|
await into(works).insert(work);
|
|
|
|
|
|
|
|
|
|
await (delete(instrumentations)..where((i) => i.work.equals(work.id)))
|
|
|
|
|
.go();
|
|
|
|
|
|
|
|
|
|
await into(instrumentations).insertAll(instrumentIds
|
|
|
|
|
.map((id) => Instrumentation(
|
|
|
|
|
work: work.id,
|
|
|
|
|
instrument: id,
|
|
|
|
|
))
|
|
|
|
|
.toList());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|