generateFiles method
void
generateFiles()
Implementation
void generateFiles() {
final tableDeclaration = jsonEncode(holder.declarations.asMap());
final lines = <String>[];
lines.add('import \'package:xdatabase/xdatabase.dart\';\n');
lines.add('import \'models.dart\';\n\n');
holder.declarations.tables.forEach((tableName, tableDeclaration) {
final insName = tableDeclaration.className.toLowerCase();
final className = tableDeclaration.className;
lines.add('class ${className}Bean implements Bean<$className> {');
lines.add(' $className? $insName;');
lines.add(' ${className}Bean(this.$insName);');
lines.add(' @override');
lines.add(' Map<String, dynamic> asMap() {');
lines.add(' if ($insName == null) {');
lines.add(' throw UnsupportedError(\'Not Initialized\');');
lines.add(' }');
lines.add(' return {');
tableDeclaration.fields.forEach((field) {
lines.add(
' \'${field.fieldName}\': $insName!.${field.propertyName},');
});
lines.add(' };');
lines.add(' }\n');
lines.add(' @override');
lines.add(' $className fromMap(Map<String, dynamic> map) {');
lines.add(' final $insName = $className();');
tableDeclaration.fields.forEach((field) {
lines.add(
' $insName.${field.propertyName} = map[\'${field.fieldName}\'];');
});
lines.add(' return $insName;');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<int> delete(String statement, QueryAble conn) {');
lines.add(
' return Orm<$className>(conn).query(statement).delete(this);');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<int> deleteByPk(QueryAble conn) {');
lines.add(' return Orm<$className>(conn).deleteByPk(this);');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<int> insert(QueryAble conn) {');
lines.add(' return Orm<$className>(conn).insert(this);');
lines.add(' }\n');
lines.add(' @override');
lines.add(
' Future<List<$className>> select(String statement, QueryAble conn) {');
lines.add(
' return Orm<$className>(conn).query(statement).fetch(this, all: $insName != null);');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<$className?> selectByPk(QueryAble conn) {');
lines.add(' return Orm<$className>(conn).byPrimary(this);');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<int> update(String statement, QueryAble conn) {');
lines.add(
' return Orm<$className>(conn).query(statement).update(this);');
lines.add(' }\n');
lines.add(' @override');
lines.add(' Future<int> updateByPK(QueryAble conn) {');
lines.add(' return Orm<$className>(conn).updateByPk(this);');
lines.add(' }');
lines.add(' ');
tableDeclaration.fields.forEach((field) {
lines.add(
' static final Column ${field.propertyName} = Column(\'${field.fieldName}\');');
});
lines.add(' ');
lines.add(' ');
lines.add('}\n');
});
lines.add('');
lines.add('');
lines.add('const String declarationMap = \'\'\'$tableDeclaration\'\'\';');
final seqs = workingDirectory.split(separator);
final basePath = seqs.getRange(0, seqs.length - 1).join(separator);
print('basePath:$basePath');
final filePath = '${basePath}/lib/modelBeans.dart';
print('filePath:$filePath');
File(filePath).writeAsStringSync(lines.join('\n'));
}