generate method
Implementation
Future<void> generate() async {
final usecaseDir = path.join(featurePath, 'domain', 'use_cases');
await Directory(usecaseDir).create(recursive: true);
final usecaseFile = path.join(usecaseDir, '${naming.actionLower}_use_case.dart');
if (await File(usecaseFile).exists()) {
print('⚠️ UseCase already exists, skipping creation: $usecaseFile');
return;
}
final content = '''
// GENERATED FILE - DO NOT EDIT
import 'package:dartz/dartz.dart';
import 'package:equatable/equatable.dart';
import '../../${naming.featureLower}.dart';
class ${naming.usecaseClass} extends BaseUseCase<${naming.responseClass}, ${naming.requestClass}> {
final Base${naming.featureCap}Repository repository;
${naming.usecaseClass}(this.repository);
@override
Future<Result<${naming.responseClass}>> call(${naming.requestClass} params) async {
return await repository.${naming.actionCamel}(params);
}
}
class ${naming.requestClass} extends Equatable {
final int id;
final String name;
const ${naming.requestClass}({
required this.id,
required this.name,
});
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
};
@override
List<Object?> get props => [id, name];
}
class ${naming.responseClass} extends Equatable {
final int id;
const ${naming.responseClass}({
required this.id,
});
Map<String, dynamic> toJson() => {
'id': id
};
factory ${naming.responseClass}.fromJson(Map<String, dynamic> json) {
return ${naming.responseClass}(
id: json['id'],
);
}
@override
List<Object?> get props => [id];
}
''';
await File(usecaseFile).writeAsString(content);
print('✅ UseCase created : $usecaseFile');
}