platform-cli/lib/src/commands/service_generators/mongo.dart
2021-09-07 08:11:42 +08:00

43 lines
1.2 KiB
Dart

import 'generator.dart';
import 'package:code_builder/code_builder.dart';
import 'package:inflection3/inflection3.dart';
import '../make/maker.dart';
class MongoServiceGenerator extends ServiceGenerator {
const MongoServiceGenerator() : super('MongoDB');
@override
List<MakerDependency> get dependencies =>
const [MakerDependency('angel3_mongo', '^4.0.0')];
@override
bool get createsModel => false;
@override
void applyToConfigureServer(
LibraryBuilder library,
MethodBuilder configureServer,
BlockBuilder block,
String? name,
String lower) {
configureServer.requiredParameters.add(Parameter((b) => b
..name = 'db'
..type = refer('Db')));
}
@override
void applyToLibrary(LibraryBuilder library, String name, String lower) {
library.directives.addAll([
Directive.import('package:angel3_mongo/angel3_mongo.dart'),
Directive.import('package:mongo_dart/mongo_dart.dart'),
]);
}
@override
Expression createInstance(LibraryBuilder library, MethodBuilder methodBuilder,
String name, String lower) {
return refer('MongoService').newInstance([
refer('db').property('collection').call([literal(pluralize(lower))])
]);
}
}