exportJson static method
Exports all tables as a JSON-serialisable map.
Implementation
static Map<String, dynamic> exportJson(Map<String, Table> tables) {
final result = <String, dynamic>{};
result['_meta'] = {
'version': 1,
'exportedAt': DateTime.now().toIso8601String(),
'tables': tables.length,
};
final tableMap = <String, dynamic>{};
for (final entry in tables.entries) {
final table = entry.value;
final colDefs = table.schema.columns.map((c) {
final def = <String, dynamic>{
'name': c.name,
'type': c.type.name,
'notNull': c.constraints.notNull,
'primaryKey': c.constraints.primaryKey,
'unique': c.constraints.unique,
'autoIncrement': c.constraints.autoIncrement,
};
if (c.constraints.hasDefault) {
def['default'] = c.constraints.defaultValue;
}
if (c.constraints.foreignKeyTable != null) {
def['fkTable'] = c.constraints.foreignKeyTable;
def['fkColumn'] = c.constraints.foreignKeyColumn;
}
return def;
}).toList();
final rows = table
.scan()
.map((r) => Map<String, dynamic>.from(r.values))
.toList();
tableMap[entry.key] = {
'schema': {'tableName': table.schema.tableName, 'columns': colDefs},
'rows': rows,
};
}
result['tables'] = tableMap;
return result;
}