generate method
Future<void>
generate({
- required String basePath,
- required FeatureSchema schema,
- String modelStrategy = 'empty',
- bool updateOnly = false,
Generate complete feature from schema
Implementation
Future<void> generate({
required String basePath,
required FeatureSchema schema,
String modelStrategy = 'empty',
bool updateOnly = false,
}) async {
final timer = Stopwatch()..start();
try {
_validatePath(basePath);
schema.functions.forEach(_validateFunction);
logger.info(
'${updateOnly ? 'Updating' : 'Generating'} feature: ${schema.name}',
);
// Generate all layers
await _dataLayer.generate(
basePath: basePath,
schema: schema,
modelStrategy: modelStrategy,
updateOnly: updateOnly,
);
await _domainLayer.generate(
basePath: basePath,
schema: schema,
updateOnly: updateOnly,
);
if (!updateOnly) {
await _presentationLayer.generate(basePath: basePath, schema: schema);
}
// Generate/Update DI file
await _generateDI(basePath, schema, updateOnly);
// Format generated code
await _formatGeneratedCode(basePath);
// Run build_runner
await _runBuildRunner(basePath);
timer.stop();
logger.success(
'✓ Feature ${updateOnly ? 'updated' : 'generated'} successfully (${timer.elapsedMilliseconds}ms)',
);
} catch (e) {
logger.err('Feature ${updateOnly ? 'update' : 'generation'} failed: $e');
rethrow;
}
}