-
Notifications
You must be signed in to change notification settings - Fork 1
/
moor2csv_example.dart
66 lines (59 loc) · 1.99 KB
/
moor2csv_example.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:drift/native.dart';
import 'package:drift/drift.dart';
import 'package:moor2csv/moor2csv.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:sqflite/sqflite.dart' as sql;
import 'package:path/path.dart' as p;
import 'example_database.dart' as database;
Future<bool> exportDatabase(
database.Database db, {
bool getEmployees = true,
}) async {
final DriftSQLToCSV _csvGenerator = DriftSQLToCSV();
bool didSucceed = false;
if (getEmployees) {
final List<database.Employee> _employees =
await db.getAllEmployees(orderBy: 'id');
if (_employees.isNotEmpty) {
await _csvGenerator.writeToCSV(_employees, csvFileName: 'employees');
didSucceed = true;
}
}
return didSucceed;
}
void setUpDatabaseForDesktop() {
WidgetsFlutterBinding.ensureInitialized();
if (Platform.isWindows || Platform.isLinux) {
sqfliteFfiInit();
// Change the default factory
sql.databaseFactory = databaseFactoryFfi;
}
}
database.Database createDb({bool logStatements = false}) {
if (Platform.isIOS || Platform.isAndroid) {
final executor = LazyDatabase(() async {
final dataDir = await getApplicationDocumentsDirectory();
final dbFile = File(p.join(dataDir.path, 'db.sqlite'));
return NativeDatabase(dbFile, logStatements: logStatements);
});
return database.Database(executor);
}
if (Platform.isMacOS || Platform.isLinux || Platform.isWindows) {
final executor = LazyDatabase(() async {
final dbFolder = await getDatabasesPath();
final file = File(p.join(dbFolder, 'db.sqlite'));
return NativeDatabase(file);
});
return database.Database(executor);
}
return database.Database(NativeDatabase.memory(logStatements: logStatements));
}
main() async {
setUpDatabaseForDesktop();
database.Database db = createDb();
// Insert something into the Database here.
exportDatabase(db);
}